操作系统模拟实验:单处理机系统的进程调度实验报告.doc

操作系统模拟实验:单处理机系统的进程调度实验报告.doc

ID:56773247

大小:22.50 KB

页数:6页

时间:2020-07-08

操作系统模拟实验:单处理机系统的进程调度实验报告.doc_第1页
操作系统模拟实验:单处理机系统的进程调度实验报告.doc_第2页
操作系统模拟实验:单处理机系统的进程调度实验报告.doc_第3页
操作系统模拟实验:单处理机系统的进程调度实验报告.doc_第4页
操作系统模拟实验:单处理机系统的进程调度实验报告.doc_第5页
资源描述:

《操作系统模拟实验:单处理机系统的进程调度实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、数学与计算机学院单处理机系统的进程调度实验报告年级07学号2007429023姓名王阳成绩专业信计实验地点主楼402指导教师王硕实验项目单处理机系统的进程调度实验日期实验报告要求:一、实验目的1、加深对进程概念的理解,明确进程和程序的区别。2、深入了解系统如何组织进程、创建进程。3、进一步认识如何实现处理机调度。二、实验原理三、实验要求1、采用时间片轮转调度算法实现进程调度。2、确定进程控制块的内容,进程控制块的组织方式。3、完成进程创建原语和进程调度原语。4、编写主函数对所做工作进行测试。四、实验结果(程序)及分析#include#defineN10//系统中所允许的最

2、大进程数量#defineSLOT5//时间片大小//进程状态枚举typedefenum{Running,//运行状态Aready,//就绪状态Blocking//阻塞状态}ProStatus;//进程控制块typedefstruct{intname;//进程标识符ProStatusstatus;//进程状态intax,bx,cx,dx;//通用寄存器intpc;//程序计数器寄存器intpsw;//程序状态字寄存器intnext;//指向下一个进程的指针}PCB;//就绪队列指针typedefstruct{inthead;//头指针inttail;//尾指针}Ready;//模拟寄存器in

3、tPSW,AX,BX,CX,DX,PC,TIME;//PCB的静态链表PCBpcbArea[N];//模拟PCB区域的数组intrun;//运行状态程序的指针Readyready;//就绪队列指针intpfree;//空闲队列的指针//初始化运行状态进程指针voidInitRun(){run=-1;}//初始化就绪状态队列voidInitReady(){ready.head=ready.tail=-1;}//初始化空闲队列voidInitFree(){inttemp;for(temp=0;temp

4、[temp].next=-1;pfree=0;}//就绪队列出队intPopReady()//返回结点在PCB区域数组的编号{inttemp;if(ready.head==-1){printf("就绪队列为空,不能出队。");return-1;}temp=ready.head;ready.head=pcbArea[temp].next;if(ready.head==-1)ready.tail=-1;pcbArea[temp].next=-1;returntemp;}//空闲队列出队intPopFree()//返回结点在PCB区域数组的编号{inttemp;if(pfree==-1){p

5、rintf("空闲队列为空,不能出队。");return-1;}temp=pfree;pfree=pcbArea[temp].next;pcbArea[temp].next=-1;returntemp;}//就绪队列入队voidPushReady(intx)//x为入队结点的编号{inttemp;if(ready.head==-1){ready.head=x;ready.tail=x;}else{temp=ready.tail;ready.tail=x;}pcbArea[ready.tail].next=-1;}//创建PCBvoidCreatePCB(intx,PCBpcb)//x为

6、要创建PCB在PCB区域数组的编号{pcbArea[x].ax=pcb.ax;pcbArea[x].bx=pcb.bx;pcbArea[x].cx=pcb.cx;pcbArea[x].dx=pcb.dx;pcbArea[x].name=pcb.name;pcbArea[x].next=-1;pcbArea[x].pc=pcb.pc;pcbArea[x].psw=pcb.psw;pcbArea[x].status=pcb.status;}//创建进程函数voidCreate(PCBpcb){inttemp;if(pfree==-1){printf("空闲队列为空,不能创建进程。");re

7、turn;}temp=PopFree();pcb.status=Aready;CreatePCB(temp,pcb);PushReady(temp);}//进程调度函数voidSchedule(){inttemp;if(ready.head==-1){printf("系统内没有进程可以调度。");return;}temp=PopReady();pcbArea[temp].status=Running;TIME=SLOT;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。