《计算机操作系统原理》课外实验报告 .docx

上传人:啊飒飒 文档编号:11502809 上传时间:2021-08-10 格式:DOCX 页数:10 大小:19.98KB
返回 下载 相关 举报
《计算机操作系统原理》课外实验报告 .docx_第1页
第1页 / 共10页
《计算机操作系统原理》课外实验报告 .docx_第2页
第2页 / 共10页
《计算机操作系统原理》课外实验报告 .docx_第3页
第3页 / 共10页
《计算机操作系统原理》课外实验报告 .docx_第4页
第4页 / 共10页
《计算机操作系统原理》课外实验报告 .docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《《计算机操作系统原理》课外实验报告 .docx》由会员分享,可在线阅读,更多相关《《计算机操作系统原理》课外实验报告 .docx(10页珍藏版)》请在三一文库上搜索。

1、?计算机操作系统原理?课外实验报告?计算机操作系统原理?课外实验报告设计思路和内容先用随机函数初始化PCB构造体,从而模拟3个进程的特性,然后void ProInsertPCB * p /*优先数插入算法,将进程p按其优先级插入到就绪队列中相应位置*/、void PrintPCBPCB *q/ 输出进程控制字信息、void PrintLinePCB *head /*输出以p为队首的队列中所有PCB信息*/、void PrintAll/输出某一时刻进程队列信息、void FirstIn/*将就绪队列中进程调入运行队列*/等函数体,实现进程调度过程中最根本的功能。在主函数中先调用void Crea

2、tePCB /*随机产生n个进程,并对各个进程随机赋予初值*/,从而创立了就绪队列,为进程调度做好准备。而后void SP /*静态优先级抢占式调度策略*/、void DP /*动态优先级抢占式调度策略*/、void RR /*时间片轮转调度策略*/等来分别实现静态优先级抢占式调度策略、动态优先级抢占式调度策略和时间片轮转调度策略三种功能。而最后的多级反响调度策略实现因为与前三者有很大的不同,所以在同一cpp中我几乎是重新重构了所有的根本算法来帮助快速实现多级调度策略的。首先,对于时间的复杂性,我在进程调度实验中忽略了运行队列CPU处理器的模拟处理程序是根据进程进入就绪队列的时间来调度的,所以

3、1、静态优先级抢占式调度策略最根本的思想是循环将就绪队列中程序调入到运行队列中,再在运行队列中执行对进程的操作。2、动态优先级抢占式调度策略的根本思想是循环的调度就绪队列中进程程序,然后再运行队列中对进程的优先级进展动态的操作,如每执行一次进程,它的优先级就相应的减2.,假如没有运行完,就将其重新按照优先级重新插入到就绪队列中,从而模拟出调度返回这一操作。3、时间片轮转调度策略,我预先确定时间片的长度为2,在循环从就绪队列中调度进程时,在运行队列中将其执行2个时间点,假设没有执行完,那么重新插入。4、而对于多级队列调度策略,那么首先建立PCB *ready1,*ready2,*ready3,*

4、ready4;/多级调度队列策略时建立的四个就绪队列,再将这些就绪队列逐渐分别从高优先级到低优先级就绪队列“时间片轮转法。最后输出运行、就绪队列1、就绪队列2、就绪队列3、就绪队列4、完毕队列5个队列中进程。我将进程随进入运行队列时间的影响与进程调度分开编写程序,进程阻塞实验来模拟进程进入CPU时,遇到阻塞情况下进入到阻塞队列中,从而简化了程序的书写。核心数据构造设计和操作函数设计typedef struct nodechar name10; /*进程名*/char ID; /*进程标识名*/int priority; /*优先级*/char state; /*进程状态标志*/int in_t

5、ime; /*进程进入CPU的时间*/int all_time; /*进程需要的总时间*/int run_time; /*进程已运行的时间*/int block_time; /*进程被阻塞的时间点*/int weak_time; /*进程被唤醒的时间点*/int round; /*进程时间轮转时间片*/struct node * next; /*下个PCB指针*/PCB; /*进程控制块构造字*/PCB *run,*ready,*finish,*tail_r,*tail_f; /*队列指针,依次定义运行队列、就绪队列、完毕队列*/PCB *ready1,*ready2,*ready3,*rea

6、dy4;/多级调度队列策略时建立的四个就绪队列void SP /*静态优先级抢占式调度策略*/printf如今开场静态优先级抢占式调度模拟nn;finish=NULL;whileready!=NULLFirstIn;PrintAll;run->run_time+=1;ifrun->all_time-run->run_time<=0run->next=finish;finish=run;finish->state=F;run=NULL;elseProInsertrun;PrintAll;void DP /*动态优先级抢占式调度策略*/printf如今开场动态优

7、先级抢占式调度模拟nn;finish=NULL;whileready!=NULLFirstIn;PrintAll;run->run_time+=1;run->priority-=2; /*每运行一次优先数降低2个单位*/ifrun->all_time-run->run_time<=0 /*如所需时间为0将其插入完成队列*/run->next=finish;finish=run;run->state=F; /*置状态为完成态*/run=NULL; /*运行队列头指针为空*/else /*没有运行完,那么将其变为就绪态插入到就绪队列*/ProInsertr

8、un;PrintAll;void RR /*时间片轮转调度策略*/printf如今开场时间片轮转调度策略nn;int R_time=2;/时间片轮转调度法中时间为2finish=NULL;whileready!=NULLFirstIn;PrintAll;/就绪队列中进程进入到运行队列中后 队列的显示forint i=1;i<=R_time;i+run->run_time+=1;run->priority-=1;ifrun->all_time-run->run_time<=0 /*如所需时间为0将其插入完成队列*/run->next=finish;fin

9、ish=run;run->state=F; /*置状态为完成态*/run=NULL;break;ifi=R_time&&run->all_time-run->run_time>0ProInsertrun;PrintAll;void MLFQ /*多级反响队列调度策略*/printf如今开场多级反响队列调度策略模拟nn;int time1=1,time2=2,time3=3,time4=4;/设置每个就绪队列所分配到的时间片长度ready1=ready;finish=NULL;whileready1!=NULLFirstIn_Demo1;PrintAll_

10、MLFQ;forint i=1;i<=time1;i+run->run_time+=1;ifrun->all_time-run->run_time<=0 /*如所需时间为0将其插入完成队列*/run->next=finish;finish=run;run->state=F; /*置状态为完成态*/run=NULL;break;ifi=time1&&run->all_time-run->run_time>0LineInsert2run;whileready2!=NULLFirstIn_Demo2;PrintAll_MLF

11、Q;forint i=1;i<=time2;i+run->run_time+=1;ifrun->all_time-run->run_time<=0 /*如所需时间为0将其插入完成队列*/run->next=finish;finish=run;run->state=F; /*置状态为完成态*/run=NULL;break;ifi=time2&&run->all_time-run->run_time>0LineInsert3run;whileready3!=NULLFirstIn_Demo3;PrintAll_MLFQ;f

12、orint i=1;i<=time3;i+run->run_time+=1;ifrun->all_time-run->run_time<=0 /*如所需时间为0将其插入完成队列*/run->next=finish;finish=run;run->state=F; /*置状态为完成态*/run=NULL;break;ifi=time3&&run->all_time-run->run_time>0LineInsert4run;whileready4!=NULLFirstIn_Demo4;PrintAll_MLFQ;run->run_time+=1;ifrun->run_time-run->run_time<=0run->next=finish;finish=run;run->state=F;run=NULL;ready4=ready4->next;PrintAll_MLFQ;声明:本文来源于网络,著作权属归原创者所有。我们本着想要分享的目的与群众交流,如有侵权,请在后台留言联络,我们将第一时间进展删除,谢谢!10 / 10

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1