操作系统实验指导书Word文件下载.docx
《操作系统实验指导书Word文件下载.docx》由会员分享,可在线阅读,更多相关《操作系统实验指导书Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
实验二进程管理
1、实验目的
2、实验内容和步骤
(1).创建进程
按下ctrl+alt+del,调用windows的任务管理器,记录进程相关的行为属性:
PID:
3676
,
句柄数:
11
内存使用:
1080K
页面错误:
263
页面缓存:
15K
在“命令提示符”窗口加入参数重新运行生成的可执行文件。
运行结果:
PID:
2821
7
832K
修改清单2-1中的程序,将nClone的定义和初始化方法按程序注释中的修改方法进行修改,编译成可执行文件(执行前请先保存已经完成的工作)。
再按步骤2中的方式运行,看看结果会有什么不一样。
第一次修改:
结果不变。
第二次修改:
是一个死循环,不断弹窗。
从中你可以得出什么结论:
nClone的作用:
控制程序的执行,当nClone大于等于5时可跳出程序。
变量的定义和初始化方法(位置)对程序的执行结果有影响吗?
为什么?
_有,nClone被修改后会对程序的结束控制产生影响
(2).父子进程的简单通信及终止进程
在VC的工具栏单击“ExecuteProgram”(执行程序)按钮,或者按Ctrl+F5键,或者在“命令提示符”窗口运行步骤1中生成的可执行文件。
按源程序中注释中的提示,修改源程序2-2,编译执行(执行前请先保存已经完成的工作)。
在程序中加入跟踪语句,或调试运行程序,同时参考MSDN中的帮助文件CreateProcess()的使用方法,理解父子进程如何传递参数。
给出程序执行过程的大概描述:
通过main(int
argc,
char*
argv[])传递参数,每次运行时先检测argc的值,若小于1,程序运行结束,否则继续往下执行
CreateProcess()函数有5个核心参数?
本实验程序中设置的各个参数的值是:
a.szFilename;
b.szCmdLine;
c.NULL;
d.NULL;
e.FALSE;
f.CREATE_NEW_CONSOLE;
g.NULL;
h.NULL。
按源程序中注释中的提示,修改源程序2-2,编译执行。
参考MSDN中的帮助文件CreateMutex()、OpenMutex()、ReleaseMutex()和WaitForSingleObject()的使用方法,理解父子进程如何利用互斥体进行同步的。
给出父子进程同步过程的一个大概描述:
CreateMutex()创建互斥体,OpenMutex()打开互斥体,ReleaseMutex()释放互斥体,WaitForSingleObject()检测hHandle事件的信号状态,通过这些方法可实现当前只有一个进程被创建或使用,实现进程的同步。
实验结论
通过对进程的操作,如创建进程,实现对进程的简单控制。
创建互斥体,解决了进程的同步问题,两者相互使用,使进程的运行情况得到了很好的管理。
实验三进程同步的经典算法
(1).生产者消费者问题
在“命令提示符”窗口运行步骤1中生成的可执行文件。
_______________________________________________________________________________
仔细阅读源程序,找出创建线程的WINDOWSAPI函数,回答下列问题:
线程的第一个执行函数是什么(从哪里开始执行)?
它位于创建线程的API函数的第几个参数中?
答:
第一个执行函数是Producer;
位于第三个参数中。
修改清单3-1中的程序,调整生产者线程和消费者线程的个数,使得消费者数目大与生产者,看看结果有何不同。
_
生产速度快,生产者经常等待消费者;
反之,消费者经常等待。
修改清单3-1中的程序,按程序注释中的说明修改信号量EmptySemaphore的初始化方法,看看结果有何不同。
Null
根据步骤4的结果,并查看MSDN,回答下列问题
1)CreateMutex中有几个参数,各代表什么含义。
有三个参数.
1.
LPSECURITY_ATTRIBUTES
lpMutexAttributes
代表安全属性的指针
2.
BOOL
bInitialOwne代表布尔bInitialOwner
3.
LPCTSTR
lpName代表LPCTSTR类型lpName
2)CreateSemaphore中有几个参数,各代表什么含义,信号量的初值在第几个参数中。
四个参数:
1、表示采用不允许继承的默认描述符
2、设置信号机的初始计数
3、设置信号机的最大计数
4、指定信号机对象的名称。
3)程序中P、V原语所对应的实际WindowsAPI函数是什么,写出这几条语句。
P:
Take()
V:
Append()
4)CreateMutex能用CreateSemaphore替代吗?
尝试修改程序3-1,将信号量Mutex完全用CreateSemaphore及相关函数实现。
写出要修改的语句:
可以
Mutex=CreateSemaphore(NULL,false,false,NULL);
(2).读者写者问题
根据实验
(1)中所熟悉的P、V原语对应的实际WindowsAPI函数,并参考教材中读者、写者问题的算法原理,尝试利用WindowsAPI函数实现第一类读者写者问题(读者优先)。
将信号量看作生产或消费的一个对象,对信号量的生成和销毁操作如同P操作和V操作一样,生成者消费者问题模拟的就是对信号量的生成和销毁,其中牵涉了信号量的同步,这也是该问题为何称为同步的经典问题的原因。
实验四存储管理
(1)观察和调整Windows2000/XP的内存性能。
1)什么是“分页过程”?
分页过程就是将信息从主内存移动到磁盘进行临时存储的过程。
2)什么是“内存共享”?
允许访问某些内存空间而不危及它和其他应用程序的安全性和完整性
3)什么是“未分页合并内存”和“分页合并内存”?
Windows2000中,未分页合并内存的最大限制是多少?
未分页合并内存:
分页合并内存是存储迟早需要的可分页代码或数据的内存部分。
分业合并内存:
未分页合并内存包含必须驻留在内存中的占用代码或数据。
在Windows200中为分业合并内存的最大限制是256MB。
4)Windows2000分页文件默认设置的最小容量和最大容量是多少?
内存数量的1.5倍作为分页文件的最小容量,这个最小容量的两倍作为最大容量。
请在表4-3中记录:
表4-3实验记录
映像名称
PID
CPU
CPU时间
内存使用
WINWORD.EXE
2710
00
0:
00:
15
14020K
请描述使用第二个实例占用的内存与使用第一个实例时的内存对比情况:
第二个实例占用内存22612K,比第一个实例占用的内存大很多。
总数(K):
98640K
分页数:
52840
未分页(K):
45800K_
仍以刚才打开观察的应用程序(例如Word)为例,请在表4-4中记录:
表4-4实验记录
页面缓冲池
非页面缓冲池
2596
53088K
473K
16K
请在表4-5中记录:
表4-5实验记录
卷
布局
类型
文件系统
容量
状态
C:
磁盘分区
基本
FAT32
96.75GB
状态良好(系统)
D:
95.58GB
状态良好(页面文件)
LENOVO_PART
28.52GB
状态良好
(EISA
配置)
请记录:
所选驱动器(C:
)的页面文件大小:
驱动器:
_C:
_
可用空间:
________31637_
MB
所选驱动器
(D:
)
的页面文件大小:
(如果有的话)
驱动器D:
20682
初始大小
(MB)
:
_756MB_
最大值
1512MB
所有驱动器页面文件大小的总数:
允许的最小值:
2
推荐:
_1522
当前已分配:
756MB
物理内存
(K)
总数:
___1039660K______
可用数:
_502544K________
系统缓存:
504332K________
认可用量
____400156K___
限制:
____1714520K_________
峰值:
____427648K_______
(2)了解和检测进程的虚拟内存空间。
根据运行结果,回答下列问题
虚拟内存每页容量为:
________4.00KB__
最小应用地址:
______________0x00010000_____________
最大应用地址:
_____________0x7ffeffff________________
当前可供应用程序使用的内存空间为:
_____1.99GB___________________
当前计算机的实际内存大小为:
_____0.99GB_______________
理论上每个Windows应用程序可以独占的最大存储空间是:
_____________
将系统当前的自由区(free)虚拟地址空间填入表4-6中。
简单描述windows进程的虚拟内存管理方案:
通过对文件的操作权限,有只读,读写,不允许访问等等和不同的调度方式实现对虚拟内存的管理。