《操作系统课程设计报告.pdf》由会员分享,可在线阅读,更多相关《操作系统课程设计报告.pdf(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、.科技大学计算机科学与工程学院科技大学计算机科学与工程学院操作系统课程设计报告操作系统课程设计报告学号:学号: *XXXX:* * *班级:班级:*指导教师:指导教师:*完成时间:完成时间: *.*.*.*.*目录目录实验一 Windows 进程管理实验二 Linux 进程管理实验三互斥与同步实验四银行家算法的模拟与实现实验五存管理实验六磁盘调度实验七进程间通信实验一实验一WindowsWindows 进程管理进程管理一、实验目的一、实验目的1)学会使用 VC 编写根本的 Win32 Consol Application控制台应用程序)。2 2通过创立进程、观察正在运行的进程和终止进程的程序设
2、计和调试操作, 进一步熟悉操作-优选.系统的进程概念,理解 Windows 进程的一生。3 3通过阅读和分析实验程序,学习创立进程、观察进程、终止进程以及父子进程同步的根本程序设计方法。二、实验容和步骤二、实验容和步骤1 1编写根本的编写根本的 Win32 Consol ApplicationWin32 Consol Application步骤步骤 1 1:登录进入 Windows 系统,启动 VC+ 6.0。步骤步骤 2 2:在FILE菜单中单击NEW子菜单,在projects选项卡中选择Win32 ConsolApplication,然后在Project name处输入工程名,在Locat
3、ion处输入工程目录。创立一个新的控制台应用程序工程。步骤步骤 3 3:在FILE菜单中单击NEW子菜单,在Files选项卡中选择C+ Source File,然后在File处输入 C/C+源程序的文件名。 步骤步骤 4 4: 将清单 1-1 所示的程序清单复制到新创立的 C/C+源程序中。编译成可执行文件。步骤步骤 5 5:在开场菜单中单击程序-附件-命令提示符命令,进入 Windows命令提示符窗口,然后进入工程目录中的 debug 子目录,执行编译好的可执行程序,列出运行结果(如果运行不成功,那么可能的原因是什么?)如果运行不成功可能是路径有问题或者没有通过编译。2 2创立进程创立进程本
4、实验显示了创立子进程的根本框架。该程序只是再一次地启动自身,显示它的系统进程 ID 和它在进程列表中的位置。步骤步骤 1 1:创立一个Win32 Consol Application工程,然后拷贝清单 1-2 中的程序编译成可执行文件。步骤步骤 2 2:在命令提示符窗口运行步骤 1 中生成的可执行文件,列出运行结果。按下 ctrl+alt+del,调用 windows 的任务管理器,记录进程相关的行为属-优选.性。运行结果:步骤步骤 3 3:在命令提示符窗口参加参数重新运行生成的可执行文件,列出运行结果。按下 ctrl+alt+del,调用 windows 的任务管理器,记录进程相关的行为属性
5、。运行结果:步骤步骤 4 4:nclone 为线程开场运行的编号,当 nclone 的值大于或者等于c_nCloneMax 时程序运行一次即跳出;变量的定义和初始化方法位置对程序的执行结果有影响;(3)(3)父子进程的简单通信及终止进程父子进程的简单通信及终止进程步骤步骤 1 1: 创立一个Win32 Consol Application工程, 然后拷贝清单 1-3 中的程序,编译成可执行文件。步骤步骤 2 2:在 VC 的工具栏单击 Execute Program (执行程序) 按钮,或者按 Ctrl + F5键,或者在命令提示符窗口运行步骤 1 中生成的可执行文件,列出运行结果。-优选.步
6、骤步骤 3 3:按源程序中注释中的提示,修改源程序 1-3,编译执行执行前请先保存已经完成的工作,列出运行结果。在程序中参加跟踪语句,或调试运行程序,同时参考MSDN 中的帮助文件 CreateProcess()的使用方法,理解父子进程如何传递参数。给出程序执行过程的大概描述。通过 main(int argc,char* argv )传递参数, 每次运行时先检测 argc的值, 假设小于1 程序运行完毕,否那么继续往下执行步骤步骤 4 4:按源程序中注释中的提示,修改源程序 1-3,编译执行,列出运行结果。步步骤骤 5 5:参考MSDN 中的帮助文件CreateMutex() 、OpenMut
7、ex() 、ReleaseMutex() 和 WaitForSingleObject()的使用方法,理解父子进程如何利用互斥体进展同步的。给出父子进程同步过程的一个大概描述。-优选.CreateMutex()创立互斥体, OpenMutex()翻开互斥体, ReleaseMutex()释放互斥体,WaitForSingleObject()检测 hHandle 事件的信号状态,通过这些方法可实现当前只有一个进程被创立或使用,实现进程的同步。首先,进程创立一个互斥体,翻开互斥体,如遇到互斥,那么进展处理,处理完后,释放互斥体,下面便是进程等待一个要处理的工程三、实验心得与体会三、实验心得与体会每个
8、进程都从调用 CreateProcess() API 函数开场,该函数的任务是在对象管理器子系统初始化进程对象。 每一进程都以调用 ExitProcess()或 TerminateProcess()API函数终止。 通常应用程序的框架负责调用 ExitProcess()函数。 进程都是有始有终,其中有中断,还有处理进程间互斥的函数,已到达进程的完成后自然终止。实验二实验二 LinuxLinux 进程管理进程管理一、实验目的一、实验目的通过进程的创立、 撤销和运行加深对进程概念和进程并发执行的理解, 明确进程和程序之间的区别。二、背景知识二、背景知识在 Linux 中创立子进程要使用 fork(
9、)函数, 执行新的命令要使用 exec 系列函数,等待子进程完毕使用 wait函数,完毕终止进程使用 exit函数。fork()原型如下:pid_t fork(void);fork 建立一个子进程,父进程继续运行,子进程在同样的位置执行同样的程序。对于父进程, fork()返回子进程的 pid, 对于子进程, fork()返回 0。 出错时返回-1。exec系列有 6 个函数,原型如下:extern char *environ;int execlp( const char *file, const char *arg, .);int execle( const char *path, cons
10、t char *arg , ., char * const envp);-优选.int execv( const char *path, char *const argv);int execve (const char *filename, char *const argv , char *const envp);int execvp( const char *file, char *const argv);exec 系列函数用新的进程映象置换当前的进程映象.这些函数的第一个参数是待执行程序的路径名(文件名)。这些函数调用成功后不会返回,其进程的正文(text),数据(data)和栈(stac
11、k)段被待执行程序程序覆盖。 但是进程的 PID 和所有翻开的文件描述符没有改变,同时悬挂信号被去除,信号重置为缺省行为。在函数 execl,execlp,和 execle 中, constchar *arg 以及省略号代表的参数可被视为arg0,arg1, .,argn。它们合起来描述了指向NULL 结尾的字符串的指针列表,即执行程序的参数列表。作为约定,第一个 arg 参数应该指向执行程序名自身,参数列表必须用 NULL 指针完毕。 execv 和 execvp 函数提供指向 NULL 结尾的字符串的指针数组作为新程序的参数列表。作为约定,指针数组中第一个元素应该指向执行程序名自身。指针数
12、组必须用 NULL 指针完毕。execle函数同时说明了执行进程的环境 (environment),它在 NULL 指针后面要求一个附加参数,NULL 指针用于完毕参数列表,或者说,argv 数组。这个附加参数是指向 NULL 结尾的字符串的指针数组,它必须用 NULL 指针完毕。其它函数从当前进程的 environ 外部变量中获取新进程的环境。execlp 和 execvp 可根据 path 搜索适宜的程序运行, 其它那么需要给出程序全路径。execve 类似 execv , 但是加上了环境的处理。wait , waitpid可用来等待子进程完毕。函数原型:#include pid_t wa
13、it(int *stat_loc);pid_t waitpid(pid_t pid, int *stat_loc,int options);当进程调用 wait,它将进入睡眠状态直到有一个子进程完毕。 wait 函数返回子进程的进程 id,stat_loc 中返回子进程的退出状态。waitpid 的第一个参数 pid 的意-优选.义:pid 0: 等待进程 id 为 pid 的子进程。pid = 0: 等待与自己同组的任意子进程。pid = -1: 等待任意一个子进程 pid -1: 等待进程组号为-pid 的任意子进程。因此,wait(&stat)等价于 waitpid(-1, &stat,
14、 0), waitpid 第三个参数option 可以是 0,WNOHANG,WUNTRACED 或这几者的组合。三、实验容与步骤三、实验容与步骤1 1进程的创立进程的创立任务要求:任务要求:编写一段程序,使用系统调用 fork创立两个子进程。当此程序行在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符 a;两子进程分别显示字符 b和字符 c。步骤步骤 1 1:使用 vi 或 gedit 新建一个 fork_demo.c 程序,然后拷贝清单 2-1 中的程序,使用 cc 或者 gcc 编译成可执行文件 fork_demo。例如,可以使用 gcc o fork
15、_demo fork_demo.c 完成编译。步骤步骤 2 2:在命令行输入./fork_demo 运行该程序。(2 2)子进程执行新任务)子进程执行新任务任务要求:任务要求:编写一段程序,使用系统调用 fork创立一个子进程。子进程通过系统调-优选.用 exec 更换自己原有的执行代码,转去执行 Linux 命令/bin/ls (显示当前目录的列表),然后调用 exit函数完毕。父进程那么调用 waitpid()等待子进程完毕,并在子进程完毕后显示子进程的标识符,然后正常完毕。程序执行过程如图 2-1 所示。步骤步骤 1 1:使用vi 或 gedit 新建一个 exec_demo.c 程序,
16、然后拷贝清单 2-2 中的程序该程序的执行如图 2-1 所示 , 使用 cc 或者 gcc 编译成可执行文件 exec_demo。 例如, 可以使用 gcco exec_demo exec_demo.c 完成编译。步骤步骤 2 2:在命令行输入./exec_demo 运行该程序。步骤步骤 3 3:观察该程序在屏幕上的显示结果,并分析。图图 2-1 exec_demo.c2-1 exec_demo.c 程序的执行过程程序的执行过程四、实验心得及体会四、实验心得及体会这个课题的实验让我学会了 Windows 系统下虚拟机中的根本程序的编写, 第一次在虚拟级的环境中编写了这一个程序。并通过进程的创立
17、。 撤销和运行加深对进程概念和进程并发执行的理解,明确了进程和程序之间的区别。实验三互斥与同步实验三互斥与同步一、实验目的一、实验目的1) 1)回忆操作系统进程、线程的有关概念,加深对 Windows 线程的理解。2) 2)了解互斥体对象,利用互斥与同步操作编写生产者-消费者问题的并发程序, 加深对 P (即 semWait)、 V(即 semSignal)原语以及利用 P、 V 原语进展进程间同步与互斥-优选.操作的理解。二、实验容和步骤二、实验容和步骤1 1生产者消费者问题生产者消费者问题步骤步骤 1 1:创立一个Win32 Consol Application工程,然后拷贝清单 3-1
18、中的程序,编译成可执行文件。步骤步骤 2 2:在命令提示符窗口运行步骤 1 中生成的可执行文件,列出运行结果。步骤步骤 3 3:仔细阅读源程序,找出创立线程的 WINDOWS API 函数,答复以下问题:线程的第一个执行函数是什么从哪里开场执行?它位于创立线程的 API 函数的第几个参数中?答:第一个执行函数是 Producer;位于创立线程 API 函数的第三个参数中步骤步骤 4 4:修改清单 3-1 中的程序,调整生产者线程和消费者线程的个数, 使得消费者数目大与生产者,看看结果有何不同。观察运行结果,从中你可以得出什么结论?当生产者数目大于消费者时,生产者需要等待消费者;当消费者数目大于
19、生产者时,消费者要经常等待.步骤步骤 5 5: 修改清单 3-1 中的程序, 按程序注释中的说明修改信号量 EmptySemaphore 的初始化方法,看看结果有何不同。-优选.步骤步骤 6 6:根据步骤 4 的结果,并查看 MSDN,答复以下问题:1 1CreateMutex 中有几个参数,各代表什么含义。有三个参数;1LPSECURITY_ATTRIBUTES IpMutexAttributes代表平安属性的指针 2BOOL bInitialOwner 代表布尔bInitialOwner 3 LPCTSTR IpName代 表LPCTSTR类 型IpName2 2CreateSemapho
20、re 中有几个参数,各代表什么含义,信号量的初值在第几个参数中。有四个参数;1)表示采用不允许继承的默认描述符;2)设置信号机的初始计数;3)设置信号机的最大计数;指定信号机对象的名称.3 3程序中 P、V 原语所对应的实际 Windows API 函数是什么,写出这几条语句。P:WaitForSingleObject(EmptySemaphore, INFINITE);WaitForSingleObject(Mutex, INFINITE);WaitForSingleObject(FullSemaphore, INFINITE);V:ReleaseMutex(Mutex);ReleaseSe
21、maphore(FullSemaphore, 1, NULL);ReleaseSemaphore(EmptySemaphore, 1, NULL);4)CreateMutex 能用 CreateSemaphore 替代吗?尝试修改程序 3-1,将信号量 Mutex完全用 CreateSemaphore 及相关函数实现。写出要修改的语句。可以;Mutex = CreateSemaphore(NULL, 1, 1, NULL);-优选.P:WaitForSingleObject(Mutex, INFINITE);V:ReleaseSemaphore(Mutex, 1, NULL);三、实验总结三、
22、实验总结这次实验加深了对 Windows 线程的理解,了解互斥体对象,通过对生产者消费者等进程间同步与互斥经典算法的实现,加深对 P、V 原语以及利用 P、V原语进展进程间同步与互斥操作的理解,将信号量看做生产或消费的一个对象,将信号量的生成和销毁操作如同 P 操作和 V 操作一样,生成者消费者问题模拟的就是对信号量的生成和销毁, 其中牵涉了信号量的同步, 这也是该问题为何成为同步的经典问题的原因。实验四银行家算法的模拟与实现实验四银行家算法的模拟与实现一、实验目的一、实验目的(1)(1)进一步了解进程的并发执行。 (2)(2)加强对进程死锁的理解, 理解平安状态与不平安状态的概念。(3)(3
23、) 掌握使用银行家算法防止死锁问题。二、实验根本知识与原理二、实验根本知识与原理1 1根本概念根本概念死锁:死锁:多个进程在执行过程中,因为竞争资源会造成相互等待的局面。如果没有外力作用,这些进程将永远无法向前推进。此时称系统处于死锁状态或者系统产生了死锁。平安序列:系统按某种顺序并发进程,并使它们都能到达获得最大资源而顺序完成的序列为平安序列。 平安状态:平安状态: 能找到平安序列的状态称为平安状态, 平安状态不会导致死锁。不平安状态:在当前状态下不存在平安序列,那么系统处于不平安状态。2 2)银行家算法)银行家算法银行家算法顾名思义是来源于银行的借贷业务, 一定数量的本金要满足多个客户的借
24、贷-优选.周转,为了防止银行家资金无法周转而倒闭,对每一笔贷款,必须考察其是否能限期归还。在操作系统中研究资源分配策略时也有类似问题,系统中有限的资源要供多个进程使用,必须保证得到的资源的进程能在有限的时间归还资源,以供其它进程使用资源。如果资源分配不当,就会发生进程循环等待资源,那么进程都无法继续执行下去的死锁现象。当一进程提出资源申请时,银行家算法执行以下步骤以决定是否向其分配资源:1 1检查该进程所需要的资源是否已超过它所宣布的最大值。2 2检查系统当前是否有足够资源满足该进程的请求。 3 3系统试探着将资源分配给该进程,得到一个新状态。三、详细设计三、详细设计1 1数据构造数据构造资源
25、总量向量Resource,m维,表示 m 种资源的总量。可用资源向量Available,m维,表示未分配的各种可用资源数量。需求矩阵Claim,n*m矩阵,表示n个进程对m类资源的最大需求。分配矩阵Allocation,n*m矩阵,表示n个进程已分配的各种资源数.2 2编程实现编程实现/*/*平安性检查函数平安性检查函数*/*/int chkerr()/在假定分配资源的情况下检查系统的平安性int WORKN,FINISHM,tempM;/temp用来记录进程平安执行的顺序int i,j,m,k=0,count;for(i=0; iM; i+)FINISHi=FALSE;for(j=0; jN
26、; j+)-优选.WORKj=AVAILABLEj;/把可利用资源数赋给 WORKfor(i=0; iM; i+)count=0;for(j=0; jN; j+)if(FINISHi=FALSE&NEEDij=WORKj)count+;if(count=N)/当进程各类资源都满足 NEED=WORK 时for(m=0; mN; m+)WORKm=WORKm+ALLOCATIONim;FINISHi=TRUE;tempk=i;/记录下满足条件的进程k+;i=-1;for(i=0; iM; i+)if(FINISHi=FALSE)printf(系统不平安!本次资源申请不成功!n);return 1
27、;-优选.printf(n);printf(经平安性检查,系统平安,本次分配成功。n);printf(n);printf(本次平安序列:);for(i=0; iM; i+) /打印平安系统的进程调用顺序printf(进程);printf(%d,tempi);if(i);printf(n);return 0;/*/*资源向量改变资源向量改变*/*/void rstordata(int k)int j;for(j=0; jN; j+)AVAILABLEj=AVAILABLEj+Requestj;-优选.ALLOCATIONkj=ALLOCATIONkj-Requestj;NEEDkj=NEEDkj
28、+Requestj;/*/*系统对进程请求响应,资源向量改变系统对进程请求响应,资源向量改变*/*/void changdata(int k)int j;for(j=0; jN; j+)AVAILABLEj=AVAILABLEj-Requestj;ALLOCATIONkj=ALLOCATIONkj+Requestj;NEEDkj=NEEDkj-Requestj;四、结果与分析四、结果与分析五、实验心得与体会五、实验心得与体会设计主要由两局部组成。第一局部:银行家算法(扫描)1.如果 Request=Need,那么转 2;否那么,出错2.如果 Request=Available,那么转向 3,否
29、那么等待3.系统试探分配请求的资源给进程4.系统执行平安性算法-优选.第二局部主要是进展资源的修改。在这里可以修改资源的可用资源和资源还需求资源。多个进程同时运行时, 系统根据各类系统资源的最大需求和各类系统的剩余资源为进程安排平安序列,使得系统能快速且平安地运行进程,不至发生死锁。银行家算法是防止死锁的主要方法,其思路在很多方面都非常值得我们来学习借鉴。实验五存管理实验五存管理一、实验目的一、实验目的1 1通过对 Windows xp任务管理器、计算机管理、我的电脑属性、系统信息、系统监视器等程序的应用,学习如何观察和调整 Windows 的存性能,加深对操作系统存管理、虚拟存储管理等理论知
30、识的理解。2 2了解 Windows xp 的存构造和虚拟存的管理,理解进程的虚拟存空间和物理存的映射关系。二、实验容和步骤二、实验容和步骤1 1观察和调整观察和调整 Windows XPWindows XP 的存性能。的存性能。步骤步骤 1 1:阅读背景知识,请答复:1) 1) 什么是什么是 分页过程?分页过程?当 Windows 求助于硬盘以获得虚拟存时,这个过程被称为分页 (paging) 。分页就是将信息从主存移动到磁盘进展临时存储的过程。2) 2)什么是什么是 存共享?存共享?应用程序经常需要彼此通信和共享信息。从性能的角度来看,共享存的能力大大减少了应用程序使用的存数量。运行一个应
31、用程序的多个副本时,每一个实例都可以使用一样的代码和数据, 这意味着不必维护所加载应用程序代码的单独副本并使用一样的存资源。无论正在运行多少个应用程序实例,充分支持应用程序代码所需求的存数量都相对保持不变。3) 3) 什么是什么是 未分页合并存和未分页合并存和 分页合并存?分页合并存?未分页合并存:包含必须驻留在存中的占用代码或数据,这些程序在系统重新启动或关闭之前一直驻留在存的特定局部中。存中包含的进程保存在主存中,并且不能-优选.交换到磁盘上物理存的这个局部用于核模式操作例如,驱动程序和必须保存在主存中才能有效工作的其他进程。没有主存的这个局部,核组件就将是可分页的,系统本身就有变得不稳定
32、的危险。分页合并存:存储迟早需要的可分页代码或数据的存局部,虽然可以将分页合并存中的任何系统进程交换到磁盘上,但是它临时存储在主存的这一局部,以防系统立刻需要它。 在将系统进程交换到磁盘上之前,Windows 会交换其他进程。 Windows xpWindows xp中,未分页合并存的最大限制是多少?中,未分页合并存的最大限制是多少?最大限制为 256MB4) 4) Windows xpWindows xp 分页文件默认设置的最小容量和最大容量是多少?分页文件默认设置的最小容量和最大容量是多少?步骤步骤 2 2:登录进入 Windows xp。步骤步骤 3 3:查看包含多个实例的应用程序的存需
33、求。1) 启动想要监视的应用程序,例如 Word。2) 右键单击任务栏以启动任务管理器。3) 在 Windows 任务管理器对话框中选定进程选项卡。4) 向下滚动在系统上运行的进程列表,查找想要监视的应用程序。请在表 5-3 中记录:表 5-3 实验记录映像名称dwn.exeQQ.exe *32Wps.exe *32PID164035485836CPU000002CPU 时间存使用0:00:080:00:080:00:3816996K2048K59264K存使用列显示了该应用程序的一个实例正在使用的存数量。5) 启动应用程序的另一个实例并观察它的存需求。请描述使用第二个实例占用的存与使用第一个
34、实例时的存比照情况。步骤步骤 4 4:未分页合并存:未分页合并存估算未分页合并存大小的最简单方法是使用任务管理器。未分页合并存的估计值显示在任务管理器的性能选项卡的核心存局部。总数 (K) :8122*_1024-优选.分页数:328*1024未分页 (K) : 116*1024还可以使用任务管理器查看一个独立进程正在使用的未分页合并存数量和分页合并存数量。操作步骤如下:1) 单击 Windows 任务管理器的进程选项卡,然后从查看菜单中选择选择列命令,显示进程选项卡的可查看选项。2) 在选择列对话框中,选定页面缓冲池选项和非页面缓冲池选项旁边的复选框, 然后单击确定按钮。返回 Windows
35、 Xp任务管理器的进程选项卡时,将看到其中增加显示了各个进程占用的分页合并存数量和未分页合并存数量。 仍以刚刚翻开观察的应用程序 (例如 Word) 为例,请在表 5-4 中记录:表 5-4 实验记录映像名称映像名称dwn.exeQQ.exe *32Wps.exe *32PIDPID1640CPUCPU0000000002CPUCPU 时间时间0:00:120:00:120:00:100:00:100;01;140;01;14存使用存使用17248K17248K73888K73888K67088K67088K35485836从性能的角度来看,未分页合并存越多,可以加载到这个空间的数据就越多。拥
36、有的物理存越多,未分页合并存就越多。但未分页合并存被限制为 256MB,因此添加超出这个限制的存对未分页合并存没有影响。步骤步骤 5 5:提高分页性能。:提高分页性能。在 Windows xp 的安装过程中,将使用连续的磁盘空间自动创立分页文件(pagefile.sys) 。用户可以事先监视变化的存需求并正确配置分页文件,使得当系统必须借助于分页时的性能到达最高。虽然分页文件一般都放在系统分区的根目录下面,但这并不总是该文件的最正确位置。要想从分页获得最正确性能,应该首先检查系统的磁盘子系统的配置,以了解它是否有多个物理硬盘驱动器。1) 1)在开场菜单中单击设置 控制面板命令,双击管理工具图标
37、,再双击计算机管理图标。2) 2)在计算机管理窗口的左格选择磁盘-优选.管理管理单元来查看系统的磁盘配置。请在表 5-5 中记录:表 5-5 实验记录卷C:D:E:F:布局简单简单简单简单简单类型根本根本根本根本根本文件系统NTFSNTFSNTFSNTFS4.88GB100.00GB30.00GB30.00GB100.00GB状态良好OEM 分区状态良好系统,启动,页面文件状态良好逻辑驱动器状态良好逻辑驱动器状态良好逻辑驱动器容量状态如果系统只有一个硬盘,那么建议应该尽可能为系统配置额外的驱动器。这是因为: Windows xp 最多可以支持在多个驱动器上分布的 16 个独立的分页文件。为系统
38、配置多个分页文件可以实现对不同磁盘 I/O 请求的并行处理,这将大大提高 I/O 请求的分页文件性能。步骤步骤 6 6:计算分页文件的大小。要想更改分页文件的位置或大小配置参数, 可按以下步骤进展: 1) 右键单击桌面上的我的电脑 Win7 为计算机图标并选定属性 Win7 为高级系统设置。2) 在高级选项卡上单击性能选项按钮。3) 单击对话框中的虚拟存区域中的更改按钮。请记录:所选驱动器 (C: ) 的页面文件大小:驱动器:C:;可用空间: 56362 MB初始大小 (MB) :最大值 (MB) :所选驱动器 (D: )的页面文件大小: (如果有的话)驱动器:D:可用空间:30622MB所有
39、驱动器页面文件大小的总数: 30622 MB 允许的最小值:16MB推荐:12183 MB当前已分配:8122MB4) 要想将另一个分页文件添加到现有配置,在虚拟存对话框中选定一个还没有分页文件的驱动器,然后指定分页文件的初始值和最大值 (以兆字节表-优选.示) ,单击设置,然后单击确定。5) 要想更改现有分页文件的最大值和最小值, 可选定分页文件所在的驱动器。 然后指定分页文件的初始值和最大值,单击设置按钮,然后单击确定按钮。6) 在性能选项对话框中单击确定按钮。7) 单击确定按钮以关闭系统特性对话框。2了解和检测进程的虚拟存空间。步骤 1 1:创立一个Win32 Consol Applic
40、ation工程,然后拷贝清单 5-1 中的程序,编译成可执行文件。步骤2 2:在 VC 的工具栏单击 Execute Program (执行程序) 按钮,或者按 Ctrl + F5 键,或者在命令提示符窗口运行步骤 1 中生成的可执行文件。步骤 3 3:根据运行结果,答复以下问题虚拟存每页容量为:4.00KB最小应用地址:0 x00010000最大应用地址: 0 x7ffeffff当前可供给用程序使用的存空间为:1.99GB提示:可供给用程序使用的存空间实际上已经减去了开头与结尾两个 64KB的保护区。 虚拟存空间中的 64KB 保护区是防止编程错误的一种 Windows 方式。任何对存中这一
41、区域的访问 (读、写、执行) 都将引发一个错误陷阱,从而导致错误并终止程序的执行。按 mitted、 reserved、 free 等三种虚拟地址空间分别记录实验数据。其中描述是指对该组数据的简单描述,例如,对以下一组数据:00010000 00012000 mitted, READWRITE, Private可描述为:具有 READWRITE 权限的已调配私有存区。将系统当前的自由区(free) 虚拟地址空间按表 5-6 格式记录。表 5-6 实验记录地址大小虚拟地址空间类访问权限描述-优选.型000310000410(60.0 KB)(60.0 KB)FreeFreeFreeFreeFre
42、eFreeFreeNOACCESSNOACCESSNOACCESSNOACCESSNOACCESS003210003560003610004950005a00法?(60.0 KB)(40.0 KB)NOACCESSNOACCESS(636 KB)Free(0.98 MB)Free(704 KB)FreeNOACCESSNOACCESSNOACCESS00294000-002a0000(48.0 KB)002a1000-002b0000(60.0 KB)003170(36.0 KB)提示:详细记录实验数据在实验活动中是必要的,但想想是否可以简化记录的方将系统当前的已调配区 (mitted) 虚拟
43、地址空间按表 5-7 格式记录。表 5-7 实验记录地址00020000030000040000089000-0008c0000008c000089000-0008c0000008c00028d0002900002a0000-002a1000大小(64.0 KB)(4.00 KB)(4.00 KB)(12.0 KB)(16.0 KB)(12.0 KB)(16.0 KB)(12.0KB)(16.0KB)(4.00KB)虚拟地址空间类型mittedmittedmittedmittedmittedmittedmittedmittedmittedmittedREADWRITEREADWRITEREAD
44、ONLYREADWRITEREADWRITEREADWRITEREADWRITEREADWRITEREADONLYREADWRITEMappedPrivateImagePrivatePrivatePrivatePrivatePrivateMappedPrivate访问权限描述将系统当前的保存区 (reserved) 虚拟地址空间按表 5-8 格式记录。表 5-8 实验记录地址00050000090000-0028c00000331000593000-005a000000656000-006d0000大小(228KB)(1.98MB)(124KB)(52.0KB)(488KB)虚拟地址空间类型r
45、eservedReservedReservedReservedReserved访问权限READONLYREADONLYREADONLYREADONLYREADONLPrivatePrivatePrivatePrivat描述Private-优选.Y006df0008530008ae000bf4000-01f10000754410(1.44MB)(20.0KB)(840KB)(19.1MB)(60.0KB)ReservedReservedReservedReservedReservedREADONLYREADONLYREADONLYREADONLYREADONLYImageMappedPrivat
46、eMappedMapped三、实验总结三、实验总结通过对 Windows xp任务管理器、计算机管理、我的电脑属性、系统信息、系统监视器等程序的应用,学习如何观察和调整 Windows 的存性能,加深对操作系统存管理、虚拟存储管理等理论知识的理解。了解 Windows xp 的存构造和虚拟存的管理,理解进程的虚拟存空间和物理存的映射关系。实验六磁盘调度实验六磁盘调度一、实验目的实验目的(1)(1)了解磁盘构造以及磁盘上数据的组织方式。(2)(2)掌握磁盘访问时间的计算方式。(3)(3)掌握常用磁盘调度算法及其相关特性。二、实验根本知识及原理二、实验根本知识及原理1 1磁盘数据的组织磁盘数据的组
47、织磁盘上每一条物理记录都有唯一的地址,该地址包括三个局部:磁头号盘面好、柱面号磁道号和扇区号。给定这三个量就可以唯一地确定一个地址。2) 2)磁盘访问时间的计算方式磁盘访问时间的计算方式磁盘在工作室以恒定的速率旋转。为保证读或写,磁头必须移动到所要求的磁道上,当-优选.所要求的扇区的开场位置旋转到磁头下时,开场读或写数据。对磁盘的访问时间包括:寻道时间、旋转延迟时间和传输时间。3 3磁盘调度算法磁盘调度算法磁盘调度的目的是要尽可能降低磁盘的寻道时间,以提高磁盘I/O 系统的性能。先进先出算法:先进先出算法:按访问请求到达的先后次序进展调度。最短效劳时间优先算法:最短效劳时间优先算法: 优先选择
48、使磁头臂从当前位置开场移动最少的磁盘I/O 请求进展调度。SCANSCAN电梯算法:电梯算法:要求磁头臂先沿一个方向移动,并在途中满足所有未完成的请求,直到它到达这个方向上的最后一个磁道。或者在这个方向上没有别的请求为止,后一种改良有时候称作 LOOK 策略。然后倒转效劳方向,沿相反方向扫描,同样按顺序完成所有请求。C-SCANC-SCAN循环扫描算法:在磁盘调度时,把扫描限定在一个方向,当沿某个方向访问到最后一个磁道时,磁头臂返回到磁盘的另一端,并再次开场扫描。三、详细设计三、详细设计/SCAN电梯算法void SCAN(int array,int m)int now;int temp;in
49、t i,j;int sum=0;float avg;for(i=0; im; i+)-优选.for(j=i+1; jarrayj)/两磁道号之间比拟temp=arrayi;arrayi=arrayj;arrayj=temp;for( i=0; im; i+) /输出排序后的磁道号数组printf(%d ,arrayi);printf(n 请输入当前的磁道号: );scanf(%d,&now);printf( 磁道方向:沿磁道增大的方向);printf(n SCAN 调度结果: );for(i=0; im; i+)if(now=0; i-)printf(%d ,arrayi);sum=now-a
50、rrayi+sum;now=arrayi;avg=(float)sum/m;printf(n 移动的总道数: %d n,sum);printf( 平均寻道长度: %f n,avg);/C-SCAN循环扫描算法void CSCAN(int array,int m)int now;-优选.int temp;int i,j;int sum=0;float avg;for(i=0; im; i+)for(j=i+1; jarrayj)/两磁道号之间比拟temp=arrayi;arrayi=arrayj;arrayj=temp;for( i=0; im; i+) /输出排序后的磁道号数组printf(%