哈工大操作系统实验二
- 格式:pdf
- 大小:118.34 KB
- 文档页数:15
操作系统lab2实验报告实验目的:本实验的目的是通过设计和实现一个简单的操作系统内核,加深对操作系统基本概念和原理的理解。
具体实验内容包括进程管理、内存管理和文件系统的设计与实现。
实验环境:1.操作系统:Linux2.编程语言:C语言一、实验背景1.1 操作系统简介操作系统是计算机系统中的一个重要组成部分,负责管理和控制计算机的各种资源,提供用户和应用程序的接口,以及协调和调度各种任务的执行。
1.2 实验目标本实验的主要目标是设计和实现一个简单的操作系统内核,包括进程管理、内存管理和文件系统等功能。
二、实验内容2.1 进程管理①进程创建描述进程创建的过程和相关数据结构,包括创建新进程的系统调用、进程控制块等。
②进程调度描述进程调度的算法和实现方式,包括进程调度队列、调度算法等。
③进程同步与通信描述进程同步和通信的机制和方法,包括信号量、互斥锁、条件变量等。
2.2 内存管理①内存分配描述内存分配的算法和实现方式,包括连续内存分配、非连续内存分配等。
②页面置换描述页面置换的算法和实现方式,包括最优页面置换算法、先进先出页面置换算法等。
2.3 文件系统①文件操作描述文件操作的系统调用和相关数据结构,包括文件打开、读写、关闭等。
②文件系统结构描述文件系统的组织结构和实现方式,包括超级块、索引节点、块位图等。
三、实验步骤3.1 环境搭建搭建实验环境,包括安装Linux操作系统、编译器等。
3.2 进程管理实现根据设计要求,实现进程创建、调度、同步与通信等功能。
3.3 内存管理实现根据设计要求,实现内存分配、页面置换等功能。
3.4 文件系统实现根据设计要求,实现文件操作和文件系统结构。
3.5 测试与调试编写测试用例,对实现的操作系统内核进行测试和调试,并记录实验结果。
四、实验结果分析分析测试结果,评估实验过程中遇到的问题和解决方法,总结操作系统内核的性能和功能特点。
五、实验总结对实验过程中的收获和经验进行总结,提出改进和优化的建议。
问题回答:Linux 0.11的系统调用最多能传递几个参数?你能想出办法来扩大这个限制吗?
Linux 0.11内核中用户程序能够向内核最多直接传递三个参数,当然也可以不带参数。
为了方便执行,内核源代码在include/unistd文件中定义了宏函数_syscalln(),其中n代表携带的参数个数,可以分别。
因此最多可以直接传递3个参数。
如果需要传递多个参数,大块数据给内核,则可以传递这块数据的指针值。
例如系统调用int read(int fd,char buf,int n)在其宏形式_syscall3(int, read, int, fd, char, buf, int, n),对于include/unistd中给出的每个系统调用宏,都有2+2*n个参数。
其中第一个参数对应系统调用返回值的类型;第2个参数是系统调用的名称;随后是系统调用所携带参数的类型和名称。
计算机操作系统原理
实验报告
专业:1104202
学号:110420212
姓名:李敖
哈尔滨工业大学(威海)
实验二进程及其资源管理
一、实验目的
1.理解资源共享与互斥特性以及操作系统管理资源的基本方法。
2.学会使用高级语言进行多线程编程的方法。
3.掌握利用VC++或Java线程库实现一个管理器,用来实现操作系统对进程及其资源的管理功能。
4.通过该实验,学生可在源代码级完成进程及其资源管理方案的分析、功能设计、编程实现,控制进程间的同步、互斥关系。
二、实验要求
1.知识基础:学生应在完成对进程和线程、调度、死锁等章节的学习后进行。
2.开发环境与工具:
硬件平台——个人计算机。
软件平台——Windows操作系统,根据需要,任选安装VC++语言、java 语言或C语言开发环境。
三、实验内容
1.开发一个函数,建立进程控制块和资源控制块结构,并实现相关数据结构的初始化。
2.开发一系列操作,由进程调用这些操作,达到控制进程申请或释放各种资源的目的。
四、程序流程图
1.进程初始化
2.优先级策略调度
五、实验结果
创建进程1
创建进程2
查看正在运行的进程
替换进程
删除进程
进程调度进程1
进程2
进程3
FCFS
HPF
六、结果分析
有上述程序运行结果可知,此次试验已经基本达到了实验要求,能够实现进程的创建、查看、替换、删除操作以及进程的调度。
不过,在进程的创建中,要求每个资源要用到3个资源,对于再多的资源就无法保证了。
哈工程操作系统第二个作者: 日期:操作系统实验报告课程名称操作系统实验课程编号实验项目名称操作系统的启动学号年级三计算机科学姓名专业与技术计算机科学与技学生所在学院指导教师初妍术实验实验室名称地点哈尔滨工程大学计算机科学与技术学院第二讲操作系统的启动一、实验概述1. 实验名称操作系统的启动2. 实验目的(1)跟踪调试E0在P(机上从加电复位到成功启动的全过程,了解操作系统的启动过程。
(2)查看E0启动后的状态和行为,理解操作系统启动后的工作方式。
3. 实验类型(验证、设计)验证4. 实验内容(1)准备实验(2)调试EOS操作系统的启动过程二、实验环境EOS操作系统、Bochs模拟器、Virtual PC虚拟机软件、NASM汇编、BIO (Basic In put/Output System)三、实验过程1•准备实验(1)启动OS Lab(2)新建一个EOS Kernel项目(3)在项目管理器”窗口中打开boot文件夹中的boot.asm和loader.asm两个汇编文件。
(4)生成项目(5)生成完成后,使用Windows资源管理器打开项目文件夹中的Debug文件夹。
找到boot.asm生成的软盘引导扇区程序boot.bin文件,该文件的大小是512 字节。
找到由loader.asm生成的loader.bin文件,记录下此文件的大小1566字节,在下面的实验中会用到。
找到由其它源文件生成的操作系统内核文件kernel.dll 2调试EOS操作系统的启动过程(1)使用Bochs做为远程目标机(2)调试BIOS程序在Con sole窗口中输入调试命令sreg后按回车,CS寄存器的值为OxfOOO。
输入调试命令r后按回车,显示当前CPU中各个通用寄存器的值J. + “・W 叭k ■ lit Cn -ft Bit■斛叶dM'hC! 4 <> Pit A-lr^ I. "pflidmr A T CS 4 # VF4I ^)<WW-EiLv-a: M 2- ■ II l^aF:*B.H -1貫電I■才F LW E.占帖那出汀刊■+ • ■ I 帕独值E! i1!1-对二■M.J9M童牛F IjT.h&M^ 益:力■ (H i 拆千HtRJt毎UOT K I Ulp ' f V I ' hlTNi.liW-JS 一二输入调试命令xp/1024b 0x0000,查看开始的1024个字节的物理内存输入xp/512b0x7c00,查看软盘引导扇区应该被加载到的内村位置,输出的内存之都是0(3)调试软盘引导扇区程序软盘引导扇区程序的主要任务就是将软盘中的loader.bin文件加载到物理内存的>'La«jMhHd ii4 «【fid "・iK拗朮・4|1*占悅![・・*虧tttlffDX 11 >1 .uniEir*JUtlk・Afifedr ■權■ mf顾.<kii r»«cH«Li■输仙■内也旨礼・ti宿内勺■■N A胡号鼻i止屯n・・・u鸞I l i| [ • JV3CF li *1 O <B 一Jr 比■HN£:1IE?>_=■IT0x1000处,然后跳转到loader程序的第一条指令(物理地址0x1000处的指令)继续执行loader 程序。
哈工程操作系统第二个————————————————————————————————作者:————————————————————————————————日期:操作系统实验报告课程名称操作系统实验课程编号实验项目名称操作系统的启动学号年级三计算机科学姓名专业与技术计算机科学与技学生所在学院指导教师初妍术实验实验室名称地点哈尔滨工程大学计算机科学与技术学院第二讲操作系统的启动一、实验概述1. 实验名称操作系统的启动2. 实验目的(1)跟踪调试EOS在PC机上从加电复位到成功启动的全过程,了解操作系统的启动过程。
(2)查看EOS启动后的状态和行为,理解操作系统启动后的工作方式。
3. 实验类型(验证、设计)验证4. 实验内容(1)准备实验(2) 调试EOS操作系统的启动过程二、实验环境EOS操作系统、Bochs模拟器、Virtual PC虚拟机软件、NASM汇编、BIOS(Basic Input/Output System)三、实验过程1.准备实验(1)启动OS Lab(2)新建一个EOS Kernel项目(3)在“项目管理器”窗口中打开boot文件夹中的boot.asm和loader.asm两个汇编文件。
(4)生成项目(5)生成完成后,使用Windows资源管理器打开项目文件夹中的Debug文件夹。
找到boot.asm生成的软盘引导扇区程序boot.bin文件,该文件的大小是512字节。
找到由loader.asm生成的loader.bin文件,记录下此文件的大小1566字节,在下面的实验中会用到。
找到由其它源文件生成的操作系统内核文件kernel.dll 2.调试EOS操作系统的启动过程(1)使用Bochs做为远程目标机(2)调试BIOS程序在Console窗口中输入调试命令sreg后按回车,CS寄存器的值为0xf000。
输入调试命令r后按回车,显示当前CPU中各个通用寄存器的值输入调试命令xp/1024b 0x0000,查看开始的1024个字节的物理内存。
操作系统实验2操作系统实验报告哈尔滨工程大学软件学院一、实验概述1. 实验名称实验环境的使用2. 实验目的熟悉操作系统集成实验环境OS Lab的基本使用方法。
练习编译、调试EOS操作系统内核以及EOS应用程序。
3. 实验类型验证二、实验环境OS Lab三、实验过程新建:调试:使用Bochs作为远程目标机:调试:调试软盘引导扇区程序:查看boot.lst文件:查看最后指令字节码调试加载程序:调试内核:EOS启动后的状态和行为:ID是31的是应用程序的进程,ID31的是系统进程。
应用程序的优先级是8,而系统进程的优先级是24,应用程序的进程数是1,而系统进程的进程数是10,并且应用程序是有名字的,而系统程序没有名字。
Id是33的是应用程序的主线程,它与系统线程主要的区别就是优先级不同。
四、思考题1、为什么EOS操作系统从软盘启动时要使用boot.bin和loader.bin两个程序?使用一个可以吗?它们各自的主要功能是什么?如果将loader.bin的功能移动到boot.bin文件中,则boot.bin文件的大小是否仍然能保持小于512字节?答:在IDE环境启动执行EOS操作系统的时候,会把boot.bin、loader.bin和kernel.dll三个二进制文件写到软盘镜像文件中,然后让虚拟机来执行软盘里的EOS操作系统。
仅使用其中的一个是不能运行的。
Boot.bin程序的功能是:在Boot.bin程序执行的过程中,CPU始终处于实模式状态。
Boot.bin程序利用BIOS提供的int 0x13中断服务程序读取软盘FAT12文件系统的根目录,在根目录中搜寻loader.bin文件。
Loader.bin程序的功能是:Loader.bin程序的任务和Boot.bin程序很相似,同样是将其它的程序加载到物理内存中,但这次加载的是EOS内核。
除此之外,Loader.bin程序还负责检测内存大小,为内核准备保护模式执行环境等工作。
哈尔滨工业大学(威海)操作系统实验报告说明:本实验报告实验答案,是本人在上实验时的测试数据,由于操作系统实验中后面实验与当时所做实验的计算机的配置有关,因此本实验报的数据仅供参考。
实验1进程的描述与控制Windows 2000编程(实验估计时间:100分钟)1.1 背景知识Windows 2000 可以识别的应用程序包括控制台应用程序、GUI应用程序和服务应用程序。
控制台应用程序可以创建GUI,GUI应用程序可以作为服务来运行,服务也可以向标准的输出流写入数据。
不同类型应用程序间的惟一重要区别是其启动方法。
Windows 2000是以NT技术构建的,它提供了创建控制台应用程序的能力,使用户可以利用标准的C++工具,如iostream库中的cout和cin对象,来创建小型应用程序。
当系统运行时,Windows 2000的服务通常要向系统用户提供所需功能。
服务应用程序类型需要ServiceMail()函数,由服务控制管理器(SCM)加以调用。
SCM是操作系统的集成部分,负责响应系统启动以开始服务、指导用户控制或从另一个服务中来的请求。
其本身负责使应用程序的行为像一个服务,通常,服务登录到特殊的LocalSystem账号下,此账号具有与开发人员创建的服务不同的权限。
当C++编译器创建可执行程序时,编译器将源代码编译成OBJ文件,然后将其与标准库相链接。
产生的EXE文件是装载器指令、机器指令和应用程序的数据的集合。
装载器指令告诉系统从哪里装载机器代码。
另一个装载器指令告诉系统从哪里开始执行进程的主线程。
在进行某些设置后,进入开发者提供的main()、Servicemain()或WinMain()函数的低级入口点。
机器代码中包括控制逻辑,它所做的事包括跳转到Windows API函数,进行计算或向磁盘写入数据等。
Windows允许开发人员将大型应用程序分为较小的、互相有关系的服务模块,即动态链接库(DLL)代码块,在其中包含应用程序所使用的机器代码和应用程序的数据。
Lab2实验报告一、练习0:填写已有实验利用Understand中的Compare完成此练习。
二、练习1:实现firstfit连续物理内存分配算法大体思路:物理内存页管理器顺着双向链表进行搜索空闲内存区域,直到找到一个足够大的空闲区域,这是一种速度很快的算法,因为它尽可能少地搜索链表。
如果空闲区域的大小和申请分配的大小正好一样,则把这个空闲区域分配出去,成功返回;否则将该空闲区分为两部分,一部分区域与申请分配的大小相等,把它分配出去,剩下的一部分区域形成新的空闲区。
其释放内存的设计思路很简单,只需把这块区域重新放回双向链表中即可。
实现目标:重写default_init_memmap(),default_alloc_pages(),default_free_pages()函数。
具体细节:a)default_init_memmap()函数这个函数是用来初始化空闲页链表的。
主要有两个步骤:初始化每一个空闲页,计算空闲页的总数。
注意:1.使用头插法是因为地址是从低地址向高地址增长。
2.p->flags = 0语句已经将PG_reserved标志位置零。
b)default_alloc_pages()函数这个函数是用来分配空闲页的。
主要步骤如下:1.寻找足够大的空闲块1.1.如果找到了,重新设置标志位1.2.从空闲链表中删除此页1.3.判断空闲块大小是否合适1.3.1.如果不合适,分割页块1.3.2.如果合适则不进行操作1.4.计算剩余空闲页个数1.5.返回分配的页块地址备注:在参考答案中,我认为有些语句是冗余的,如图:验证:在第二次重置标志位前后,分别输出标志位的值,发现,flags 并没有发生变化。
然后将这两句话注释,编译后运行,依旧可以得到正确答案。
所以我认为这两句话是没有必要的。
c)default_free_pages()函数这个函数的作用是释放已经使用完的页,把他们合并到freelist中。
实验二:GPIO输入/输出实验1.实验目的z了解Mini2440 ARM实验板的功能和使用。
z掌握J-link仿真器的用法,并能连接实验板调试程序。
z掌握GPIO外设的操作原理和编程。
2.实验设备z硬件:PC机一台Mini2440 ARM实验板一套J-link仿真器一套z软件:WindowsXP系统,Keil uVision 4.0集成开发环境3.实验内容(1)使用GPIO控制Mini2440实验板上的LED指示灯的亮/灭,使用Keil uVision的调试功能单步、全速运行程序,设置断点,打开寄存器窗口监视寄存器,观察实验板上的LED指示灯的状态。
(2)使用GPIO读取Mini2440实验板上的按键状态,观察按键输入的抖动现象。
4.实验预习要求(1)学习GPIO外设的操作原理和编程方法;(2)查阅JTAG的介绍,了解使用仿真器联机调试的原理。
5.实验步骤(1)认识Mini2440 ARM实验板。
见图2-1。
图2-1 实验板及主要功能模块图2-2 电源接口与电源开关LED 是开发中最常用的状态指示设备,本开发板具有4个用户可编程LED,它们直接与CPU 的GPIO 相连接,低电平有效(点亮),详细电路连接关系见图2-3、图2-4。
图2-3 LED指示灯开发板总共有6个用户测试用按键,它们均从CPU 中断引脚直接引出,低电平触发,这些引脚也可以复用为GPIO和特殊功能口。
图2-4 按键输入JTAG接口是开发中最重要的接口,用途是调试,市面上常见的JLINK、ULINK,以及其他的仿真调试器,最终都是通过JTAG 接口连接的。
标准的JTAG 接口是4 线:TMS、 TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线,加上电源和地,一般总共6 条线就够了;为了方便调试,大部分仿真器还提供了一个复位信号。
见图2-5。
图2-5 JTAG接口(2)启动Keil uVision,新建一个工程ex02-1。
操作系统lab2实验报告操作系统 Lab2 实验报告一、实验目的本次实验着重学习操作系统内存管理的相关概念和技术,包括页表的建立和管理,以及虚拟内存系统的实现和优化。
通过完成本实验,我们能够加深对操作系统内存管理机制的理解,并掌握相关的实现方法。
二、实验环境本次实验使用的实验环境为 Linux 操作系统(具体版本号)、GCC 编译器(具体版本号)以及所提供的模拟器。
三、实验内容本次实验主要包括以下几个任务:1. 理解虚拟内存和物理内存的概念,掌握页表的结构和管理方法。
2. 编写代码实现一个简单的页表建立和管理的模拟器,包括页表的初始化、地址映射和页表的更新。
3. 实现一个简单的虚拟内存系统,包括页的加载、替换等操作。
4. 对实现的虚拟内存系统进行性能优化,包括缓存算法的改进、预加载等策略的应用。
四、实验步骤及结果1. 理解虚拟内存和物理内存的概念在本次实验中,我们将使用虚拟内存系统来管理进程的地址空间。
虚拟内存是操作系统提供给进程的一种抽象概念,它为每个进程提供了一个独立的、连续的地址空间。
物理内存是实际存在的计算机内存,由物理地址组成。
2. 编写页表管理模拟器代码根据实验要求,我们需要编写代码模拟页表的建立和管理过程。
首先,我们需要实现页表的初始化函数,用于初始化页表的数据结构。
接着,我们需要实现地址映射函数,用于将虚拟地址映射到物理地址。
最后,我们需要实现页表的更新函数,用于更新页表中的相关信息。
3. 实现虚拟内存系统在本次实验中,我们需要实现一个简单的虚拟内存系统。
虚拟内存系统可以将虚拟地址映射到物理地址,并且可以实现页的加载和替换操作。
我们需要实现页面加载函数,用于将页面加载到内存中。
同时,我们还需要实现页面替换函数,当内存空间不足时,根据特定的算法选择待替换的页,并将其移出内存。
4. 性能优化为了提高虚拟内存系统的性能,我们可以采用一些优化策略。
例如,我们可以改进缓存算法,通过提前缓存一些可能会被访问的页面,减少缺页次数。
操作系统实验指导书计算机科学与软件学院实验一进程控制与描述一、实验目的通过对Windows 2000编程,进一步熟悉操作系统的基本概念,较好地理解Windows 2000的结构。
通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows 2000进程的“一生”。
二、实验环境硬件环境:计算机一台,局域网环境;软件环境:Windows 2000 Professional、Linux Redhat 9.0操作系统平台,Visual C++ 6.0专业版或企业版。
三、实验内容和步骤第一部分:Windows 2000 Professional下的GUI应用程序,使用Visual C++编译器创建一个GUI应用程序,代码中包括了WinMain()方法,该方法GUI类型的应用程序的标准入口点。
在“开始”菜单中单击“程序”-“附件”-“记事本”命令,将程序键入记事本中,并把代码保存为1-1.cpp。
程序1-1 Windows 2000的GUI应用程序// msgbox项目# include <windows.h> // 标准的include// 告诉连接器与包括MessageBox API函数的user32库进行连接# pragma comment(lib, “user32.lib” )// 这是一个可以弹出信息框然后退出的筒单的应用程序int APIENTRY WinMain(HINSTANCE /* hInstance */ ,HINSTANCE /* hPrevInstance */ ,LPSTR /* lpCmdLine */ ,int /* nCmdShow */ ){:: MessageBox(NULL, // 没有父窗口“Hello, Windows 2000” , // 消息框中的文本“Greetings”, // 消息框标题MB_OK) ; // 其中只有一个OK按钮// 返回0以便通知系统不进入消息循环return(0) ;}也可以利用任何其他文本编辑器键入程序代码,如果这样,例如使用WORD来键入和编辑程序,则应该注意什么问题?_________________注意保存成cs文件_______________________________________________________________________________________________________________________ 在“命令提示符”窗口运行CL.EXE,产生1-1.EXE文件:C:\> CL 1-1.cpp在程序1-1的GUI应用程序中,首先需要Windows.h头文件,以便获得传送给WinMain() 和MessageBox() API函数的数据类型定义。
计算机操作系统课程实验报告专业信息管理与信息系统班级 1203601学号 120360117姓名乐云指导教师周学权计算机操作系统课程实验报告专业信息管理与信息系统班级 1203601学号 120360114姓名郭鑫指导教师周学权操作系统实验实验1 使用虚拟机安装系统 4学时【实验目的】1.了解虚拟机软件的使用。
2.了解使用虚拟机安装Windows及Ubuntu操作系统。
【实验内容】1. 安装虚拟机软件VirtualBox。
2. 配置VirtualBox环境安装WindowsXP,并在虚拟机中启动windowsXP。
3. 配置VirtualBox环境安装Ubuntu 10.10,并在虚拟机中启动Ubuntu。
【实验环境】VirtualBox4.0Windows XPUbuntu 8.04【实验过程】一、创建虚拟机首先运行VirtualBox,单击左上角的“新建”。
单击下一步。
出现如下图的界面,在名称后输入自己起的名字,如test选择自己想要安装的系统类型和版本,本次试验是安装windows xp系统设置完成后,单击下一步。
接下来是设置虚拟机的内存大小,本次实验操作的计算机内存为4GB,所以我选择分配给我的虚拟机的内存为512MB,然后单击下一步。
接着创建虚拟硬盘,选择创建新的虚拟硬盘,单击下一步。
选择虚拟硬盘的类型,默认选择了VDI类型,单击下一步。
接下来选择为动态扩展类型,因为计算机的存储空间不大。
单击下一步。
动态扩展:如果你为你的虚拟磁盘分配的是10G空间,虚拟磁盘占用真实磁盘空间的范围就为0~10G。
固定大小:如果你为你的虚拟磁盘分配的是10G空间,虚拟磁盘占用真实磁盘空间永远不是10G,不管虚拟磁盘空间是否被全部使用。
选择虚拟机在本地磁盘中的位置和大小,单击下一步。
确认虚拟机的详细情况,点击下一步。
这时我们已经成功的创建了一个虚拟机了,接下来我们要开始配置这个虚拟机安装操作系统选择刚才创建的虚拟机,然后单击上方的“开始”弹出了首次运行向导,单击下一步。
操作系统实验--实验环境的使⽤heu 操作系统实验报告哈尔滨⼯程⼤学计算机科学与技术学院第⼀讲实验环境的使⽤⼀、实验概述1. 实验名称实验环境的使⽤2. 实验⽬的熟悉操作系统集成实验环境 OS Lab 的基本使⽤⽅法。
练习编译、调试 EOS 操作系统内核以及 EOS 应⽤程序。
3. 实验类型验证性实验4. 实验内容启动OSLab学习OSLab基本使⽤⽅法EOS内核项⽬的⽣成和调试EOS应⽤程序项⽬的⽣成和调试退出OSLab保存EOS内核项⽬⼆、实验环境使⽤WIINDOWS XP操作系统和OS Lab集成实验环境,涉及C语⾔等编程语⾔。
三、实验过程1. 设计思路和流程图对于WINDOWS控制台应⽤程序:对于EOS内核项⽬:对于EOS应⽤程序项⽬:2. 算法实现验证性实验,⽆需算法3. 需要解决的问题及解答(1)练习使⽤单步调试功能(逐过程、逐语句),体会在哪些情况下应该使⽤“逐过程”调试,在哪些情况下应该使⽤“逐语句”调试。
练习使⽤各种调试⼯具(包括“监视”窗⼝、“调⽤堆栈”窗⼝等)。
解答:逐语句,就是每次执⾏⼀⾏语句,如果碰到函数调⽤,它就会进⼊到函数⾥⾯。
⽽逐过程,碰到函数时,不进⼊函数,把函数调⽤当成⼀条语句执⾏。
因此,在需要进⼊函数体时⽤逐语句调试,⽽不需要进⼊函数体时⽤逐过程调试。
(2)思考⽣成 EOS SDK ⽂件夹的⽬的和作⽤。
查看 EOS SDK ⽂件夹中的内容,明⽩⽂件夹的组织结构和各个⽂件的来源和作⽤。
查看 EOS 应⽤程序包含了 SDK ⽂件夹中的哪些头⽂件,是如何包含的?解答:EOS SDK是为应⽤程序调⽤系统API提供服务,可作为⽤户编程中可使⽤的⼯具包集合。
EOS SDK⽂件夹主要包括INC头⽂件、LIB⽂件夹导⼊库⽂件和BIN⽂件夹动态链接库,可执⾏程序,⼆进制⽂件。
EOS SDK包含的头⽂件有:eos.h 负责导出API函数声明;eosdef.h负责导出函数类型的定义;error.h 负责导出错误码。
哈尔滨工业大学远程教育课程操作系统
实验二
主讲人:张英涛
实验2进程控制与描述
n通过在Windows任务管理器中对程序进程进行响应的管理操作,熟悉操作系统进程管理的概念,观察操作系统运行的动态性能,获得包含多进程的应用程序编程经验
•实验2.1 Windows 任务管理器的进程管理
•实验2.2 Windows 2000 编程
§2.1 Windows 任务管理器的进程管理n实验时间:2学时,难度系数:3
背景知识
n Windows 2000的任务管理器提供了用户计算机上正在运行的程序和进程的相关信息,也显示了最常用的度量进程性能的单位
n使用任务管理器
•可以打开监视计算机性能的关键指示器,快速查看正在
运行的程序的状态,或者终止已停止响应的程序
•也可以使用多个参数评估正在运行的进程的活动,以及
查看CPU 和内存使用情况的图形和数据
背景知识
n任务管理器中
•“应用程序”选项卡:显示正在运行程序的状态,用
户能够结束、切换或者启动程序
•“进程”选项卡:显示正在运行的进程信息。
例如,可以显示关于CPU 和内存使用情况、页面错误、
句柄计数以及许多其他参数的信息
•“性能”选项卡:显示计算机动态性能,包括CPU
和内存使用情况的图表,正在运行的句柄、线程和
进程的总数,物理、核心和认可的内存总数(KB)
等
实验目的
n通过在Windows 任务管理器中对程序进程进行响应的管理操作
n熟悉操作系统进程管理的概念
n学习观察操作系统运行的动态性能
实验内容与步骤
n使用任务管理器终止进程
n显示其他进程记数器
n更改正在运行的程序的优先级
实验提示
n注意实验中所使用的是操作系统的哪个版本n了解在当前机器中正在运行的应用程序
n终止进程时要小心,有可能导致不希望发生的结果,包括数据丢失和系统不稳定等;终止进程将结束它直接或间接创建的所有子进程
§2.2 Windows 2000 编程n实验时间:2学时,难度系数:4
背景知识
n Windows 2000可以识别的应用程序包括控制台应用程序、GUI应用程序和服务应用程序
n控制台应用程序可以创建GUI;GUI应用程序可以作为服务来运行;服务也可以向标准的输出流写入数据——不同类型应用程序间的惟一重要区别是其启动方法
背景知识
n Windows 2000是以NT的技术构建的,它提供了创建控制台应用程序的能力,使用户可以利用标准的C++工具,如iostream库中的cout和cin对象,来创建小型应用程序。
当系统运行时,Windows 2000的服务通常要向系统用户提供所需功能
n服务应用程序类型需要ServiceMail() 函数,由服务控制管理器(SCM) 加以调用。
SCM是操作系统的集成部分,负责响应系统启动以开始服务、指导用户控制或从另一个服务中来的请求。
其本身负责使应用程序的行为像一个服务。
通常,服务登录到特殊的LocalSystem账号下,此账号具有与开发人员创建的服务不同的权限
背景知识
n当令C++ 编译器创建可执行程序时,编译器将源代码编译成OBJ文件,然后将其与标准库相链接。
产生的EXE文件是装载器指令、机器指令和应用程序的数据的集合。
装载器指令告诉系统从哪里装载机器代码。
另一个装载器指令告诉系统从哪里开始执行进程的主线程。
在进行某些设置后,进入开发者提供的main() 、ServiceMain() 或WinMain() 函数的低级入口点。
机器代码中包括有控制逻辑,它所做的事包括跳转到Windows API函数,进行计算或向磁盘写入数据等
n Windows允许开发人员将大型应用程序分为较小的、互相有关系的服务模块,即动态链接库(DLL) 代码块,在其中包含应用程序所使用的机器代码和应用程序的数据
实验目的
n通过对Windows 2000编程
•进一步熟悉操作系统的基本概念
•较好地理解Windows 2000的结构
实验内容与步骤
n简单的控制台应用程序
n GUI应用程序
n进程对象
实验提示
n程序文件夹中包含了实验中用到的所有程序的源代码,这些源程序均通过调试运行,实验时可直接将文件输入。