资源描述:
《4操作系统实验指导书(精品)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《操作系统原理》实验指导书吴微编・、才.刖1.实验总体目标通过学生自己动手设计实验验证理论知识,使学生掌握操作系统特征和功能,掌握不同调度算法下进程的调度、进程控制、进程调度与死锁,并必须掌握作业管理、存储器管理、设备管理和文件管理的主要原理。加深対操作系统基本原理理解。2.适用专业计算机科学与技术3.先修课程C语言程序设计、计算机组成原理、数据结构4.实验课时分配实验项口学吋实验一单处理器系统的进程调度2实验二设计一个有N个进程共行的进程调度程序。4实验三批处理系统屮作业调度2实验四银行家算法4实验五LRU页面置换调度算法4实验六独占设备的分配和1叫收模拟45.实验环境有40台
2、中等配置的计算机组成的小型局域网的实验室坏境。计算机的具体耍求:1.Pentium133Hz以上的CPU;2.建议至少256MB的内存;3.建议硬盘至少2GB,并有1GB空闲空间。4.安装Windows操作系统及C语言编译程序。6.实验总体要求培养计算机专业的学牛的系统程序设计能力,是操作系统课程的一个非常重要的环节。通过操作系统上机实验,可以培养学生程序设计的方法和技巧,提高学纶编制清晰、合理、可读性好的系统程序的能力,加深对操作系统课程的理解。使学住更好地掌握操作系统的基本概念、基木原理、及基木功能,具有分析实际操作系统、设计、构造和开发现代操作系统的基本能力。7・本实验的重
3、点、难点及教学方法建议重点:理解进程调度中PCB的设计,以实现对进程的调度。难点:进程调度程序的设计,设备管理程序的设计。教学方法建议:力争在本指导书的帮助卞,独立设计程序以加深理解。实验一、单处理器系统的进程调度5实验二设计一个有N个进程共行的进程调度程序。10实验三批处理系统屮作业调度15实验四银行家算法18实验五LRU页而置换调度算法25实验六独占设备的分配和回收模拟29实验一单处理器系统的进程调度一、实验目的模拟单处理器系统的进程调度,采用动态优先权的进程调度算法作为进程设计算法,以加深对进程的概念及进程调度算法的理解.二、实验类型(含验证型、设计型或综合型)设计型三、实
4、验仪器一台女装Windows操作系统及C语言编译程序的pc机。四、实验原理五、实验方法与步骤(―•)内容:(1)用C语言实现对N个进程使用动态优先权算法的进程调度。(2)描述用来标识进程的进程控制块PCB结构。■进程标识数ID■进程优先数PRIORITY,并规定优先数越人的进程,其优先权越高(人为指定或随机数)。■进程已占用的CPU时间CPUTIMEo■进程还需占•用的CPU时间ALLTIME,当进程运行完毕ALLTIME是为0。■进程的阻塞吋间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进入阻塞状态。■进程被阻塞的时间BLOCKTIME,表示已阻
5、塞的进程再等待BLOCKTIME个时间片后将转换成就绪状态。■进程状态STATEo■队列指针NEXT,用来将PCB排成队列。(3)手工输入建立儿个进程,建立一个就绪队列,按优先数由高到低排列。(4)进行进程调度(5)每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检杳。重复以上过程,直到所要进程都完成为止。(二)参考程序:ttinclude"stdio.h"#definerunning1/*用running表示进程处丁•运行态*/#definearoady2/*用arcady表示进程处于就绪态*/#defineblocking3/*用blocking
6、表示进程处于等待态*/#definesometime5/*用sometime表示时间片大小*/ttdefinen10/*假定系统允许进程个数为10*/struct{intname;/*进程标识符*/intstatus;/*进程状态*/intax,bx,ex,dx;/*进程现场信息,通用寄存器内容*/intpc;/*进程现场信息,程序计数器内容*/intpsw;/*进程现场信息,程序状态字寄存器内容*/intnext;/*下一个进程控制块的位置*/}pcbarea[n];/*定义模拟进程控制块区域的数纟fl*/intPSW,AX,BX,CX,DX,PC,TIME;/*模拟寄存器*/
7、intrun;/*定义指向正在运行进程的进程控制块的指针*/struct{inthead;inttail;}ready;/*定义指向就绪队列的头指针head和尾指针tail*/intblock;/*定义指向等待队列的指针*/intpfree;/*定义指向空闲进程控制块队列的指针*/sheduling()/*进程调度函数*/{inti;if(ready.head==-l)/*空闲进程控制块队列为空,退出*/{printfC无就绪进程『);return;}i=ready.head;