操作系统实验报告(进程的调度)完结.doc_第1页
操作系统实验报告(进程的调度)完结.doc_第2页
操作系统实验报告(进程的调度)完结.doc_第3页
操作系统实验报告(进程的调度)完结.doc_第4页
操作系统实验报告(进程的调度)完结.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2014-2015学年第一学期电信学院计算机系实验报告课程名称 操作系统 实验名称单处理器系统的进程调度 班 级 计122 学 号 2107181212401 姓 名 马天源 一、 实验目的1. 加深对进程概念的理解,明确进程和程序的区别。2. 深入了解系统如何组织进程、创建进程。3. 进一步认识如何实现处理器调度。二、 实验内容编写程序完成单处理机系统中的进程调度,要求采用时间片轮转调度算法。实验具体包括:首先确定进程控制块的内容,进程控制块的组成方式;然后完成进程创建原语和进程调度原语;最后编写主函数对所做工作进行测试。这个实验主要要考虑三个问题:如何组织进程、如何创建进程和如何实现处理器调度。 考虑如何组织进程,首先就要设定进程控制块的内容。进程控制块PCB记录各个进程执行时的情况。不同的操作系统,进程控制块记录的信息内容不一样。操作系统功能越强,软件也越庞大,进程控制块记录的内容也就越多。这里的实验只使用了必不可少的信息。一般操作系统中,无论进程控制块中信息量多少,信息都可以大致分为以下四类:(1)标识信息 每个进程都要有一个唯一的标识符,用来标识进程的存在和区别于其他的进程。这个标识符是必不可少的,可以用符号或编号实现,它必须是操作系统分配的。在后面给出的参考程序中,采用编号方式,也就是为每一个进程依次分配一个不相同的正整数。(2)说明信息 用于记录进程的基本情况,例如进程的状态,等待的原因,进程程序的存放位置,进程数据存放位置等等。实验中,因为进程没有数据和程序,仅使用进程控制块模拟进程,所以这部分内容仅包括进程状态。(3)现场信息 现场信息记录各个寄存器的内容。当进程由于某种原因让出处理器时,需要将现场信息记录在进程控制块中,当进行进程调度时,从选中进程的进程控制块中读取现场信息进行现场恢复。现场信息就是处理器的相关寄存器内容,包括通用寄存器、程序计数器和程序状态字寄存器等。在实验中,可选取几个寄存器作为代表。用大写的全局变量AX、BX、CX、DX模拟通用寄存器、大写的全局变量PC模拟程序计数器、大写的全局变量PSW模拟程序状态字寄存器。三、 数据结构struct pcb int name; /进程标识符 int status; /进程状态 int ax,bx, cx,dx; /进程现场信息,通用寄存器内容 int pc; /进程现场信息,程序计数器内容 int psw; /进程现场信息,程序状态字寄存器内容 int next; /T一个进程控制块的位置进程创建流程图如图2所示。采用时间片轮转调度算法的进程调度流程图如图3所示。 四、 算法流程#include #define running 1 #define aready 2 #define blocking 3 #define sometime 5 #define n 10 structint name; int status; int ax, bx, cx,dx; int pc; int psw;int next; pcbarean; int PSW,AX,BX,CX,DX,PC,TIME;int run; struct int head; int tail;ready; int block; int pfree; sheduling( ) int i; if (ready.head=-1) printf(无就绪进程n); return 0; i=ready.head; / ready.head=pcbareaready.head.next; / if(ready.head=-1)ready.tail=-1; ready.tail*/ pcbareai.status=running; TIME=sometime; AX=pcbarearun.ax; BX=pcbarearun.bx; CX=pcbarearun.cx; DX=pcbarearun.dx; PC=pcbarearun.pc; PSW=pcbarearun.psw; run=i; return 0;create( int x) int i; if(pfree=-1) printf(无空闲进程控制块,进程创建失败n); return 0; i=pfree; pfree=pcbareapfree.next; =x; pcbareai.status=aready; pcbareai.ax=x; pcbareai.bx=x; pcbareai.cx=x; pcbareai.dx=x; pcbareai.pc=x; pcbareai.psw=x; if(ready.head!=-1) pcbareaready.tail.next=i; ready.tail=i; pcbareaready.tail.next=-1; else ready.head=i; ready.tail=i; pcbareaready.tail.next=-1; main( ) int num,j; run=ready.head=ready.tail=block=-1; pfree=0; for(j=0;j0) create(num); scanf(%d,&num); sheduling( ); if(run!=-1) printf(进程名 进程状态 寄存器内容:ax bx cx dx pc psw:n); printf(%4d%10d %14d%3d%3d%3d%3d%3dn,, pcbarearun.status,pcbarearun.ax, pcbarearun.bx, pcbarearun.cx, pcbarearun.dx, pcbarearun.pc, pcbarearun.psw); return 0;五、 运行结果六、 总结通过这次实验使我对操作系统的进程调度有了更深层次的认识,也对它的调度关系有了清晰的认识,刚开始做实验时遇到了很多难题,从无处下手,到后来的轻车熟路,逐步解决

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论