免费预览已结束,剩余5页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统实验报告(一)班级:计1001 姓名:车琛 学号:201007010113 实验一 进程调度算法模拟1内容:设计一个简单的进程调度算法,模拟OS中的进程调度过程;2要求: 进程数不少于5个; 进程调度算法任选; 可以用动态优先数加时间片轮转法实现进程调度,每运行一个时间片优先数减3; 用C语言编程; 程序运行时显示进程调度过程。3步骤: 设计PCB及其数据结构: 进程标识数:ID 进程优先数:PRIORITY(优先数越大,优先级越高) 进程已占用时间片:CPUTIME,每得到一次调度,值加1; 进程还需占用时间片:ALLTIME,每得到一次调度,该值减1,一旦运行完毕,ALLTIME为0) 进程队列指针:NEXT,用来将PCB排成队列 进程状态:STATE(一般为就绪,可以不用) 设计进程就绪队列及数据结构; 设计进程调度算法,并画出程序流程图; 设计输入数据和输出格式; 结构格式:当前正运行的进程:0 当前就绪队列:2,1,3,4 编程上机,验证结果。4提示:假设调度前,系统中有5个进程,其初始状态如下:ID01234PRIORITY93830290可否考虑用数组或链表去实现CPUTIME00000ALLTIME32634STATEreadyreadyreadyreadyready 以时间片为单位调度运行; 每次调度ALLTIME不为0,且PRIORITY最大的进程运行一个时间片; 上述进程运行后其优先数减3,再修改其CPUTIME和ALLTIME,重复, 直到所有进程的ALLTIME均变为0。5书写实验报告 实验题目; 程序中所用数据结构及说明; 清单程序及描述; 执行结果。代码清单#include#include#include#include#include#define MINSIZE 5typedef enum STATEready,running,stop,STATE;typedef struct PCBint pid;int priority;/ 进程优先级int cputime;int alltime;STATE state; struct PCB *prev;struct PCB *next;PCB;typedef PCB Node;void init_process(Node *&head) head= (PCB *)malloc(sizeof(PCB);head-next = head;head-prev = head;void push(Node *head,Node *pnode)if(head = NULL|pnode = NULL)return;Node * p = head-next;while(p!=head & pnode-priority priority) p= p-next;pnode-next=p-prev-next; pnode-prev=p-prev;p-prev-next=pnode;p-prev = pnode;void show_process(Node *head)if(head=NULL)return;Node *p = head-next;cout当前的就绪队列有:endl;cout*进程调度表*endl;while(p != head)coutendl;cout进程号为 pid ;cout优先级为 priority ;cout剩余ALLTIME为 alltime ;cout运行时间cputime为 cputime ;coutendl;coutnext;cout*next = head)return NULL;Node * p = head-next;p-prev-next = p-next;p-next-prev = p-prev;return p;PCB * create_process(int id,int priority,int cputime,int alltime,STATE state) PCB *p = (PCB *)malloc(sizeof(PCB);p-pid = id;p-cputime = cputime;p-alltime = alltime;p-priority = priority;p-state = state;p-next = NULL;p-prev = NULL;return p;void destroy_head(Node *head)if(head=NULL)return;free(head);void destroy(Node *pnode)if(pnode = NULL)return; Node *p = pnode;p-prev-next=p-next;p-next-prev=p-prev;cout进程pid已经销毁!next = head)return;Node *p = NULL;while(head-next!=head)p = head-next;p = pop_front(head);p-cputime += 1;p-alltime -= 1;p-priority -= 3;p-state = running;coutendl;cout当前正在执行的进程为:pidprioritypriority =0;coutendl; cout进程号为 pid ;cout优先级为 priority ;cout剩余ALLTIME为 alltime ;cout运行时间cputime为 cputime ;coutendl;coutendl;coutendl;coutalltimestate = stop;destroy(p);p = NULL;if(p!=NULL)p-state = ready;push(head,p);show_process(head);char c = getchar();destroy_head(head);int main()PCB * head=NULL; init_process(head);PCB *p =NULL; int PRIORITY = 1;int CPUTIME = 0;int ALLTIME = 0;STATE state = ready;int count = 0; int num = 0;cout请输入当前运行的进程数,至少5个num;for(int i = 0;inum;+i)count+=1;cout请输入第 count个进程的优先级和总运行时间ALLTIMEPRIORITYALLTIME;p=create_process(count,PRIORITY,CPUTIME,ALLTIME,state);push(head,p);show_process(head);process_running(head);return 0;屏幕截图优先级最高的进程2运行完实验心得这次实验开始觉得无从下手,于是在网上搜了些类似代码借鉴,懂得了基
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026汽车后市场完整性评估与售后服务链重构策略
- 2026轻工业投资扩张方向与市场潜力评估报告
- 2026中国智能家居设备渗透率提升路径与商业模式探讨报告
- 2026中国新能源汽车传动轴行业市场现状供需分析及投资评估规划分析研究报告
- 2026中国叶黄素酯行业隐形冠军企业成长路径研究报告
- 2026Fast芯片组多场景压力测试与性能极限报告
- 2026中国数字营销行业深度分析与发展趋势与投资策略研究报告
- 2026马来西亚伊斯兰金融产品创新伊斯兰债券投资市场与全球竞争力比较分析
- 2026圣文森特和格林纳丁斯金融服务行业创新运营模式研究及投资产品设计变化分析
- 2026中国智能厨电行业市场现状分析及投资评估规划前景研究报告
- GB/T 13320-2025钢质模锻件金相组织评级图及评定方法
- 2026中国资源循环集团电池有限公司招聘4人备考题库及一套参考答案详解
- JJG(交通) 111-2012 前插式激光测距自动弯沉仪
- 《化工企业可燃液体常压储罐区安全管理规范》解读课件
- 高中高三数学解析几何专项课件
- GB/T 46623-2025金属增材制造成形件机械性能与其取样方向、位置的相关性
- 2025至2030中国生物质燃气设备行业市场发展分析及发展前景与投资报告
- 小儿败血症课件
- 危楼拆除安全培训课件
- 客运安全专题培训课件
- 心率失常教学课件
评论
0/150
提交评论