



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一 进程调度算法模拟一 .实验题目:设计一个简单的进程调度算法,模拟OS中的进程调度过程二要求: 进程数不少于5个; 进程调度算法任选; 可以用动态优先数加时间片轮转法实现进程调度,每运行一个时间片优先数减3; 用C语言编程; 程序运行时显示进程调度过程。三程序中所用数据结构及说明:进程控制块结构体:typedef struct node1int ID;/进程标识数int PRIORITY;/进程优先数int CPUTIME;/进程已占用时间片int ALLTIME;/进程还需占用时间片Block,pcb;就绪进程链表节点:typedef struct node2pcb data; struct node2 *next;process;四清单程序及描述:Procelink.h:typedef struct node1int ID;/进程标识数int PRIORITY;/进程优先数int CPUTIME;/进程已占用时间片int ALLTIME;/进程还需占用时间片/char STATE;/进程状态/struct node *next;/进程队列指针Block,pcb;typedef struct node2pcb data; struct node2 *next;process;void Initlink(process *PQ) /*如果有内存空间,申请头结点空间并使头指针head指向头结点*/if(*PQ = (process *)malloc(sizeof(process) = NULL) exit(1);(*PQ)-next = NULL;/*置链尾标记NULL */ int IsEmpty(process *PQ) if(PQ-next = NULL)return 1;else return 0;void EnInitlink(process *PQ,pcb p) while(PQ-next!=NULL) PQ=PQ-next; process *temp=(process *)malloc(sizeof(Block); temp-data.PRIORITY=p.PRIORITY;temp-data.ID=p.ID; temp-data.CPUTIME=p.CPUTIME; temp-data.ALLTIME=p.ALLTIME; temp-next=PQ-next;PQ-next=temp; /插入 pcb DeInitlink(process *PQ) /选择优先数最小的出列 if(IsEmpty(PQ) printf(所有进程已运行完!n);exit(0);/退出 process *temp=(process *)malloc(sizeof(Block); temp = PQ-next; process *te=(process *)malloc(sizeof(Block); process *t=(process *)malloc(sizeof(Block); te= PQ-next;/优先数最小的进程 while(temp-next != NULL) if(te-data.PRIORITYnext-data.PRIORITY) te=temp-next; t=temp-next-next; PQ=temp; temp=temp-next; PQ-next=PQ-next-next; pcb pp=te-data; / free(temp); / free(t); /free(te); return pp;/出队列void outid(process *PQ)/输出就绪队列函数 printf(当前就绪队列为: );while(!IsEmpty(PQ)printf(%d ,PQ-next-data.ID);PQ=PQ-next; printf(n);void dispatch(pcb p,process *PQ)/进程运行函数 if(p.ALLTIME)!=0) p.PRIORITY-=3;p.CPUTIME+=1;p.ALLTIME-=1;printf(进程 %d运行n,p.ID);/printf(进程优先数:%d 进程已占用时间片:%d 进程还需占用时间片:%dn,p.PRIORITY,p.CPUTIME,p.ALLTIME);outid(PQ);/输出就绪队列if(p.ALLTIME)=0) printf(进程 %d 运行完成!n,p.ID);return;/完成则不加入链表EnInitlink(PQ,p); return;/运行之后再加入链表os_1.cpp:#include#include#includeprocelink.hvoid main() process * PQ;int n;/n为进程数pcb pro1;Initlink(& PQ);printf(请输入进程个数: ); scanf(%d,&n);printf(请输入各个进程的 进程标识数ID,进程优先数,进程已占用时间片,进程还需占用时间片n);for(int i=1;i=n;i+)printf(第%d进程: ,i);scanf(%d %d %d %d,&pro1.ID,&pro1.PRIORITY,&pro1.CPUTIME,&pro1.ALLTIME);EnInitlink(PQ,pro1);while(!IsEmpty(PQ)dispatch(DeInitlink(PQ),PQ);/进程运行函数调用if(IsEmpty(PQ)printf(所有进程已运行完!n); free(PQ);/释放内存空间五执行结果:六实验总结:通过这次操作系统中进程调度算法的模拟
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年一级建造师考前冲刺练习附答案详解【预热题】
- 2025年山东省国有资产投资控股有限公司社会招聘笔试参考题库附带答案详解
- 人力资源部门的角色与职责
- 化学工业安全生产管理规定
- 家电维修维护质量评估规定
- 如何制定房地产项目营销规划方案
- 人类基因组与遗传疾病研究报告
- 物业管理公司退出及业主委员会接管协议
- 离婚协议中房产租赁权与财产分割协议范本
- 离婚协议样本及子女抚养费及赡养费保证协议
- 2025山东济南市莱芜高新投资控股有限公司社会招聘10人笔试参考题库附带答案详解
- 第一二单元月考综合测试(试题)人教版数学六年级上册
- 2025年中小学心理健康教育试卷及答案
- 2025年年少先队知识竞赛考试真题题库及答案
- 高中语文-“病句辨析”模块“语序不当”知识点
- 《水利工程生产安全重大事故隐患清单指南》解读与培训
- 2024中国华电集团有限公司湖南分公司本部面向系统内公开招聘5人笔试参考题库附带答案详解
- 国家开放大学《电气传动与调速系统》章节测试参考答案
- 三年级上册道德与法治课堂实录.doc
- JJG596-2012《电子式交流电能表检定规程》
- 铁板神数详细取法
评论
0/150
提交评论