




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数学与计算机学院 单处理机系统的进程调度 实验报告年级 07 学号 2007429023 姓名 王阳 成绩 专业 信计 实验地点 主楼402 指导教师 王硕 实验项目 单处理机系统的进程调度 实验日期 实验报告要求: 一、 实验目的 1、加深对进程概念的理解,明确进程和程序的区别。2、深入了解系统如何组织进程、创建进程。3、进一步认识如何实现处理机调度。二、实验原理 三、实验要求 1、采用时间片轮转调度算法实现进程调度。2、确定进程控制块的内容,进程控制块的组织方式。3、完成进程创建原语和进程调度原语。4、编写主函数对所做工作进行测试。四、实验结果(程序)及分析#include #define N 10 /系统中所允许的最大进程数量#define SLOT 5 /时间片大小/进程状态枚举typedef enum Running, /运行状态Aready, /就绪状态Blocking /阻塞状态 ProStatus;/进程控制块typedef struct int name; /进程标识符ProStatus status; /进程状态int ax,bx,cx,dx; /通用寄存器int pc; /程序计数器寄存器int psw; /程序状态字寄存器int next; /指向下一个进程的指针 PCB;/就绪队列指针typedef struct int head; /头指针int tail; /尾指针 Ready; /模拟寄存器int PSW,AX,BX,CX,DX,PC,TIME;/PCB的静态链表PCB pcbAreaN; /模拟PCB区域的数组int run; /运行状态程序的指针Ready ready; /就绪队列指针 int pfree; /空闲队列的指针/初始化运行状态进程指针void InitRun()run=-1;/初始化就绪状态队列void InitReady()ready.head=ready.tail=-1;/初始化空闲队列void InitFree()int temp;for(temp=0;tempN-1;temp+)pcbAreatemp.next=temp+1;pcbAreatemp.next=-1;pfree=0;/就绪队列出队int PopReady() /返回结点在PCB区域数组的编号int temp;if(ready.head=-1)printf(就绪队列为空,不能出队。n);return -1;temp=ready.head;ready.head=pcbAreatemp.next;if(ready.head=-1)ready.tail=-1;pcbAreatemp.next=-1;return temp;/空闲队列出队int PopFree() /返回结点在PCB区域数组的编号int temp; if(pfree=-1) printf(空闲队列为空,不能出队。n);return -1;temp=pfree;pfree=pcbAreatemp.next;pcbAreatemp.next=-1;return temp;/就绪队列入队void PushReady(int x) /x为入队结点的编号int temp;if(ready.head=-1)ready.head=x;ready.tail=x;elsetemp=ready.tail;ready.tail=x;pcbAreaready.tail.next=-1;/创建PCBvoid CreatePCB(int x,PCB pcb) /x为要创建PCB在PCB区域数组的编号pcbAreax.ax=pcb.ax;pcbAreax.bx=pcb.bx;pcbAreax.cx=pcb.cx;pcbAreax.dx=pcb.dx;pcbA=;pcbAreax.next=-1;pcbAreax.pc=pcb.pc;pcbAreax.psw=pcb.psw;pcbAreax.status=pcb.status;/创建进程函数void Create(PCB pcb)int temp;if(pfree=-1)printf(空闲队列为空,不能创建进程。n);return;temp=PopFree();pcb.status=Aready;CreatePCB(temp,pcb);PushReady(temp);/进程调度函数void Schedule()int temp;if(ready.head=-1)printf(系统内没有进程可以调度。);return;temp=PopReady();pcbAreatemp.status=Running;TIME=SLOT; /恢复CPU现场AX=pcbAreatemp.ax;BX=pcbAreatemp.bx;CX=pcbAreatemp.cx;DX=pcbAreatemp.dx;PC=pcbAreatemp.pc;PSW=pcbAreatemp.psw;run=temp; /将选中的进程赋给运行指针printf(当前运行的程序:n); /输出调度结果printf(进程号:%dn,pcbA);printf(进程状态:%dn,pcbArearun.status);printf(寄存器内容:nAXtBXtCXtDXtPCtPSWn);printf(%dt%dt%dt%dt%dt%dn,pcbArearun.ax,pcbArearun.bx,pcbArearun.cx,pcbArearun.dx,pcbArearun.pc,pcbArearun.psw);void main()int temp;PCB tmp_pcb;printf(请输入进程号,以负数为结束(进程号应保持唯一)。nn按任意键进入输入模式:);getchar();InitRun();InitReady();InitFree();printf(请开始输入进程号:n);while(1)scanf(%d,&temp);if(temp0)break;tmp_=temp;tmp_pcb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年下沉市场消费金融风险管理策略与工具应用报告
- 2025年体检行业服务质量提升与行业竞争力提升策略报告
- 药品连锁企业管理制度
- 药品首付责任管理制度
- 药店召回追回管理制度
- 药店缺货补充管理制度
- 营业场所噪音管理制度
- 设备使用初期管理制度
- 设备基础资料管理制度
- 设备技术状况管理制度
- 医学影像读片试题及答案
- API RP 1175-2022 管道泄漏检查计划管理
- 2025年突发流行性传染性疾病应急演练方案及总结
- 安能快递加盟合同协议
- 2024年大学生就业力调研报告-智联招聘-202405
- 防静电地胶板施工工艺及技术方案、措施
- 缝纫车间安全培训课件
- 成人ICU患者外周动脉导管管理专家共识解读
- 电力设备预防性试验及维护合同
- 2025年各地低空经济政策汇编
- 搬运重物安全培训
评论
0/150
提交评论