2022年操作系统实验报告.实验一WINDOWS进程初识 .pdf
《2022年操作系统实验报告.实验一WINDOWS进程初识 .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统实验报告.实验一WINDOWS进程初识 .pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 操作系统教程实验指导书精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 19 页2 实验一WINDOWS进程初识1、实验目的(1)学会使用 VC编写基本的Win32 Consol Application(控制台应用程序)。(2)掌握 WINDOWS API 的使用方法。(3)编写测试程序,理解用户态运行和核心态运行。2、实验内容和步骤(1)编写基本的 Win32 Consol Application步骤 1:登录进入Windows,启动 VC+ 6.0 。步骤 2:在“ FILE”菜单中单击“NEW ”子菜单,在“projects”选
2、项卡中选择“Win32 Consol Application” , 然后在“ Project name ”处输入工程名,在“Location ” 处输入工程目录。创建一个新的控制台应用程序工程。步骤 3:在“FILE”菜单中单击“ NEW ”子菜单,在“ Files ”选项卡中选择“C+ Source File ”, 然后在“ File ” 处输入 C/C+源程序的文件名。步骤 4:将清单1-1 所示的程序清单复制到新创建的C/C+源程序中。编译成可执行文件。步骤 5:在“开始”菜单中单击“程序”- “附件” - “命令提示符”命令,进入Windows“命令提示符”窗口,然后进入工程目录中的d
3、ebug 子目录,执行编译好的可执行程序:课程 os 课os 实验程序 os11debughello.exe 运行结果 ( 如果运行不成功,则可能的原因是什么?) :答:运行成功,结果:(2)计算进程在核心态运行和用户态运行的时间步骤1:按照( 1)中的步骤创建一个新的“Win32 Consol Application”工程,然后将清单 1-2 中的程序拷贝过来,编译成可执行文件。步骤2: 在创建一个新的“Win32 Consol Application”工程,程序的参考程序如清单 1-3 所示,编译成可执行文件并执行。步骤 3:在“命令提示符”窗口中运行步骤1 中生成的可执行文件,测试步骤2
4、 中可执行文件在核心态运行和用户态运行的时间。课程 os 课os 实验程序 os12debugtime TEST.exe 步骤 4:运行结果 ( 如果运行不成功,则可能的原因是什么?) 因为此程序是个死循环,所以运行时间为无穷大。_ 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 19 页3 步骤 5:分别屏蔽While 循环中的两个for 循环, 或调整两个for 循环的次数, 写出运行结果。屏蔽 i 循环:_屏蔽 j 循环:_调整循环变量i 的循环次数:_调整循环变量j 的循环次数:_ 3、实验结论通过实验可以得知运行一个程序CPU
5、 的使用情况是不同的, 同时与循环的次数无关,和当前计算的复杂情况有关。实验得出的数据可以可以说明这一点。实验二进程管理1、实验目的1) 通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows 进程的“一生” 。2) 通过阅读和分析实验程序,学习创建进程、观察进程、终止进程以及父子进程同步的基本程序设计方法。2、实验内容和步骤(1). 创建进程本实验显示了创建子进程的基本框架。该程序只是再一次地启动自身,显示它的系统进程 ID 和它在进程列表中的位置。步骤 1:创建一个“ Win32 Consol Application”工程,然后拷贝
6、清单2-1 中的程序,编译成可执行文件。步骤 2:在“命令提示符”窗口运行步骤1 中生成的可执行文件。运行结果:范例:课程 os 课os 实验程序 os11debugos21 ( 假设编译生成的可执行文件是os21.exe) _精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 19 页4 _ 按下 ctrl+alt+del,调用 windows 的任务管理器,记录进程相关的行为属性:PID:3676 ,句柄数: 11 内存使用: 1080K 页面错误: 263 页面缓存: 15K 步骤 3:在“命令提示符”窗口加入参数重新运行生成的可执行
7、文件。运行结果:范例:课程 os 课os 实验程序 os11debugos21 3 ( 假设编译生成的可执行文件是os21.exe) 按下 ctrl+alt+del,调用 windows 的任务管理器,记录进程相关的行为属性:PID:2821 句柄数: 7 内存使用: 832K 页面错误: 263 页面缓存: 15K 步骤 4:修改清单2-1 中的程序,将nClone 的定义和初始化方法按程序注释中的修改方法进行修改,编译成可执行文件(执行前请先保存已经完成的工作)。再按步骤2 中的方式运行,看看结果会有什么不一样。运行结果:第一次修改 :结果不变 。第二次修改 : 是一个死循环,不断的弹出此
8、窗口:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 19 页5 从中你可以得出什么结论:nClone 的作用: _控制程序的执行,当nClone 大于等于 5 时可跳出程序。_ _ 变量的定义和初始化方法(位置) 对程序的执行结果有影响吗?为什么?_ _有,nClone 被修改后会对程序的结束控制产生影响_ (2). 父子进程的简单通信及终止进程步骤 1:创建一个“ Win32 Consol Application”工程,然后拷贝清单2-2 中的程序,编译成可执行文件。步骤 2:在 VC 的工具栏单击 “Execute Program
9、”(执行程序 ) 按钮,或者按 Ctrl + F5 键,或者在“命令提示符”窗口运行步骤1 中生成的可执行文件。运行结果:范例:课程 os 课os 实验程序 os11debugos22 ( 假设编译生成的可执行文件是os22.exe) 步骤 3:按源程序中注释中的提示,修改源程序2-2,编译执行(执行前请先保存已经完成的工作) 。运行结果:不断的弹出:在程序中加入跟踪语句,或调试运行程序, 同时参考 MSDN 中的帮助文件CreateProcess()的使用方法,理解父子进程如何传递参数。给出程序执行过程的大概描述:通过 main(int argc, char* argv)传递参数,每次运行时
10、先检测argc 的值,若小于 1,程序运行结束,否则继续往下执行。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 19 页6 步骤 4:填空CreateProcess() 函数有 _5_个核心参数?本实验程序中设置的各个参数的值是:a. _szFilename_;b. _szCmdLine_;c. _NULL_ ;d. _NULL_ ;e. _FALSE_;f. _CREATE_NEW_CONSOLE_ ;g. _NULL_ ;h. _NULL_ ;i. _si_;j. _pi_ 。步骤 5: 按源程序中注释中的提示,修改源程序2-2
11、,编译执行。运行结果:步骤6: 参考MSDN中的帮助文件CreateMutex() 、 OpenMutex() 、ReleaseMutex() 和WaitForSingleObject() 的使用方法,理解父子进程如何利用互斥体进行同步的。给出父子进程同步过程的一个大概描述: CreateMutex()创建互斥体, OpenMutex() 打开互斥体,ReleaseMutex()释放互斥体,WaitForSingleObject()检测 hHandle事件的信号状态,通过这些方法可实现当前只有一个进程被创建或使用,实现进程的同步。3、实验结论通过对进程的操作,如创建进程,实现对进程的简单控制。
12、创建互斥体,解决了进程的同步问题,两者相互使用,使进程的运行情况得到了很好的管理。实验三进程同步的经典算法1、实验目的1) 回顾系统进程、线程的有关概念,加深对Windows 2000 线程的理解。2) 了解互斥体对象,通过对生产者消费者等进程间同步与互斥经典算法的实现,加深对 P、 V 原语以及利用P、 V 原语进行进程间同步与互斥操作的理解。2、实验内容和步骤(1). 生产者消费者问题步骤 1:创建一个“ Win32 Consol Application”工程,然后拷贝清单3-1 中的程序,编译成可执行文件。步骤 2:在“命令提示符”窗口运行步骤1 中生成的可执行文件。运行结果:范例:课程
13、 os 课os 实验程序 os11debugos31 ( 假设编译生成的可执行文件是os31.exe) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 19 页7 步骤 3:仔细阅读源程序,找出创建线程的WINDOWS API 函数,回答下列问题:线程的第一个执行函数是什么(从哪里开始执行)?它位于创建线程的API 函数的第几个参数中?答:第一个执行函数是Producer ;位于第三个参数中。步骤 4:修改清单3-1 中的程序,调整生产者线程和消费者线程的个数,使得消费者数目大与生产者,看看结果有何不同。运行结果:从中你可以得出什么结论
14、:生产速度快,生产者经常等待消费者;反之,消费者经常等待。步骤 5:修改清单3-1 中的程序,按程序注释中的说明修改信号量EmptySemaphore 的精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 19 页8 初始化方法,看看结果有何不同。运行结果:步骤 6:根据步骤4 的结果,并查看MSDN ,回答下列问题1)CreateMutex 中有几个参数,各代表什么含义。答:有三个参数. 1. LPSECURITY_ATTRIBUTES lpMutexAttributes 代表安全属性的指针2. BOOL bInitialOwner代表布
15、尔 bInitialOwner 3.LPCTSTR lpName代表 LPCTSTR 类型 lpName 2)CreateSemaphore 中有几个参数,各代表什么含义,信号量的初值在第几个参数中。四个参数:1、表示采用不允许继承的默认描述符2、设置信号机的初始计数3、设置信号机的最大计数 4 、指定信号机对象的名称。3)程序中P、V原语所对应的实际Windows API 函数是什么,写出这几条语句。P:Take() V:Append() 4)CreateMutex能用 CreateSemaphore 替代吗?尝试修改程序3-1 ,将信号量Mutex完全用 CreateSemaphore 及
16、相关函数实现。写出要修改的语句:可以Mutex=CreateSemaphore(NULL,false,false,NULL); (2). 读者写者问题根据实验 (1)中所熟悉的P、V原语对应的实际Windows API 函数, 并参考教材中读者、写者问题的算法原理,尝试利用Windows API 函数实现第一类读者写者问题(读者优先)。3、实验结论将信号量看作生产或消费的一个对象,对信号量的生成和销毁操作如同P 操作和 V 操作一样,生成者消费者问题模拟的就是对信号量的生成和销毁,其中牵涉了信号量的同步,这也是该问题为何称为同步的经典问题的原因。实验四存储管理1、实验目的(1)通过对 Wind
17、ows 2000 “任务管理器” 、 “计算机管理” 、 “我的电脑”属性、 “系统信息” 、 “系统监视器”等程序的应用,学习如何察看和调整Windows 的内存性能,加深对操作系统存储管理、虚拟存储管理等理论知识的理解。(2)了解 Windows 2000 的内存结构和虚拟内存的管理,理解进程的虚拟内存空间和物理内存的映射关系。2、实验内容和步骤(1)观察和调整 Windows 2000/XP 的内存性能。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 19 页9 步骤 1:阅读“背景知识” ,请回答:1) 什么是“分页过程”?分页
18、过程就是将信息从主内存移动到磁盘进行临时存储的过程。2) 什么是“内存共享”?允许访问某些内存空间而不危及它和其他应用程序的安全性和完整性3) 什么是“未分页合并内存”和“分页合并内存”?Windows 2000 中,未分页合并内存的最大限制是多少?未分页合并内存:分页合并内存是存储迟早需要的可分页代码或数据的内存部分。分业合并内存 : 未分页合并内存包含必须驻留在内存中的占用代码或数据。在 Windows2000 中为分业合并内存的最大限制是256MB 。4) Windows 2000 分页文件默认设置的最小容量和最大容量是多少?内存数量的1.5 倍作为分页文件的最小容量,这个最小容量的两倍
19、作为最大容量。步骤 2:登录进入Windows 2000 Professional 。步骤 3:查看包含多个实例的应用程序的内存需求。1) 启动想要监视的应用程序,例如Word。2) 右键单击任务栏以启动“任务管理器”。3) 在“ Windows 任务管理器”对话框中选定“进程”选项卡。4) 向下滚动在系统上运行的进程列表,查找想要监视的应用程序。请在表 4-3 中记录:表 4-3 实验记录映像名称PID CPU CPU时间内存使用 WINWORD.EXE 3220 00 0:00:28 14420K “内存使用”列显示了该应用程序的一个实例正在使用的内存数量。5) 启动应用程序的另一个实例并
20、观察它的内存需求。请描述使用第二个实例占用的内存与使用第一个实例时的内存对比情况:第二个实例占用内存22612K,比第一个实例占用的内存大很多。步骤 4:未分页合并内存。估算未分页合并内存大小的最简单方法是使用“任务管理器”。未分页合并内存的估计值显示在“任务管理器”的“性能”选项卡的“核心内存”部分。总数(K) :_96340K_ 分页数: _50328_ 未分页(K) :_46052K_ 还可以使用 “任务管理器” 查看一个独立进程正在使用的未分页合并内存数量和分页合并内存数量。操作步骤如下:1) 单击“ Windows 任务管理器”的“进程”选项卡,然后从“查看”菜单中选择“选择列”命令
21、,显示“进程”选项卡的可查看选项。2) 在“选择列”对话框中,选定“页面缓冲池”选项和“非页面缓冲池”选项旁边的复选框,然后单击“确定”按钮。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 19 页10 返回 Windows 2000“任务管理器”的“进程”选项卡时,将看到其中增加显示了各个进程占用的分页合并内存数量和未分页合并内存数量。仍以刚才打开观察的应用程序(例如 Word) 为例,请在表4-4 中记录:表 4-4 实验记录映像名称PID 内存使用页面缓冲池非页面缓冲池 WINWORD.EXE 3496 53088K 473K 1
22、6K 从性能的角度来看,未分页合并内存越多,可以加载到这个空间的数据就越多。拥有的物理内存越多,未分页合并内存就越多。但未分页合并内存被限制为256MB ,因此添加超出这个限制的内存对未分页合并内存没有影响。步骤 5:提高分页性能。在Windows 2000 的 安 装 过 程 中 , 将 使 用 连 续 的 磁 盘 空 间 自 动 创 建 分 页 文 件(pagefile.sys) 。用户可以事先监视变化的内存需求并正确配置分页文件,使得当系统必须借助于分页时的性能达到最高。虽然分页文件一般都放在系统分区的根目录下面,但这并不总是该文件的最佳位置。要想从分页获得最佳性能,应该首先检查系统的磁
23、盘子系统的配置,以了解它是否有多个物理硬盘驱动器。1) 在“开始”菜单中单击“设置”“控制面板”命令,双击“管理工具”图标,再双击“计算机管理”图标。2) 在“计算机管理”窗口的左格选择“磁盘管理”管理单元来查看系统的磁盘配置。如果系统只有一个硬盘,那么建议应该尽可能为系统配置额外的驱动器。这是因为:Windows 2000 最多可以支持在多个驱动器上分布的16 个独立的分页文件。为系统配置多个分页文件可以实现对不同磁盘I/O 请求的并行处理, 这将大大提高I/O 请求的分页文件性能。请在表 4-5 中记录:表 4-5 实验记录卷布局类型文件系统容量状态 C: 磁盘分区基本FAT32 48.8
24、2GB 状态良好(系统) D:磁盘分区基本 FAT32 24.5GB 状态良好(页面文件) LENOVO_PART 磁盘分区基本 FAT32 305MB 状 态 良 好( EISA 配置)步骤 6:计算分页文件的大小。要想更改分页文件的位置或大小配置参数,可按以下步骤进行:1) 右键单击桌面上的“我的电脑”图标并选定“属性”。2) 在“高级”选项卡上单击“性能选项”按钮。3) 单击对话框中的“虚拟内存”区域中的“更改”按钮。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 19 页11 请记录:所选驱动器(C: ) 的页面文件大小:驱动
25、器: _C:_ 可用空间: _31637_ MB 初始大小(MB) :_ 最大值(MB) :_ 所选驱动器(D: ) 的页面文件大小:(如果有的话 ) 驱动器: _D:_ 可用空间: _20682_ MB 初始大小(MB) :_756MB_ 最大值(MB) :_1512MB_ 所有驱动器页面文件大小的总数:允许的最小值:_2_ MB 推荐: _1522_ MB 当前已分配: _756_ MB 4) 要想将另一个分页文件添加到现有配置,在“虚拟内存”对话框中选定一个还没有分页文件的驱动器,然后指定分页文件的初始值和最大值(以兆字节表示) ,单击“设置” ,然后单击“确定” 。5) 要想更改现有分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年操作系统实验报告.实验一WINDOWS进程初识 2022 操作系统 实验 报告 WINDOWS 进程 初识
限制150内