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

上传人:韩长文 文档编号:8666456 上传时间:2020-12-18 格式:DOCX 页数:11 大小:17.05KB
返回 下载 相关 举报
《计算机操作系统原理》课外实验报告经典.docx_第1页
第1页 / 共11页
《计算机操作系统原理》课外实验报告经典.docx_第2页
第2页 / 共11页
《计算机操作系统原理》课外实验报告经典.docx_第3页
第3页 / 共11页
《计算机操作系统原理》课外实验报告经典.docx_第4页
第4页 / 共11页
《计算机操作系统原理》课外实验报告经典.docx_第5页
第5页 / 共11页
点击查看更多>>
资源描述

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

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

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

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

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

5、进程状态标志*/int in_time; /*进程进入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,*rea

6、dy2,*ready3,*ready4;/多级调度队列策略时建立的四个就绪队列void SP() /*静态优先级抢占式调度策略*/printf(现在开始静态优先级抢占式调度模拟nn);finish=NULL;while(ready!=NULL)FirstIn();PrintAll();run-run_time+=1;if(run-all_time-run-run_time=0)run-next=finish;finish=run;finish-state=F;run=NULL;elseProInsert(run);PrintAll();void DP() /*动态优先级抢占式调度策略*/pri

7、ntf(现在开始动态优先级抢占式调度模拟nn);finish=NULL;while(ready!=NULL)FirstIn();PrintAll();run-run_time+=1;run-priority-=2; /*每运行一次优先数降低2个单位*/if(run-all_time-run-run_time=0) /*如所需时间为0将其插入完成队列*/run-next=finish;finish=run;run-state=F; /*置状态为完成态*/run=NULL; /*运行队列头指针为空*/else /*没有运行完,则将其变为就绪态插入到就绪队列*/ProInsert(run);Prin

8、tAll();void RR() /*时间片轮转调度策略*/printf(现在开始时间片轮转调度策略nn);int R_time=2;/时间片轮转调度法中时间为2finish=NULL;while(ready!=NULL)FirstIn();PrintAll();/就绪队列中进程进入到运行队列中后 队列的显示for(int i=1;i=R_time;i+)run-run_time+=1;run-priority-=1;if(run-all_time-run-run_time=0) /*如所需时间为0将其插入完成队列*/run-next=finish;finish=run;run-state=F

9、; /*置状态为完成态*/run=NULL;break;if(i=R_timerun-all_time-run-run_time0)ProInsert(run);PrintAll();void MLFQ() /*多级反馈队列调度策略*/printf(现在开始多级反馈队列调度策略模拟nn);int time1=1,time2=2,time3=3,time4=4;/设置每个就绪队列所分配到的时间片长度ready1=ready;finish=NULL;while(ready1!=NULL)FirstIn_Demo1();PrintAll_MLFQ();for(int i=1;i=time1;i+)r

10、un-run_time+=1;if(run-all_time-run-run_time=0) /*如所需时间为0将其插入完成队列*/run-next=finish;finish=run;run-state=F; /*置状态为完成态*/run=NULL;break;if(i=time1run-all_time-run-run_time0)LineInsert2(run);while(ready2!=NULL)FirstIn_Demo2();PrintAll_MLFQ();for(int i=1;i=time2;i+)run-run_time+=1;if(run-all_time-run-run_

11、time=0) /*如所需时间为0将其插入完成队列*/run-next=finish;finish=run;run-state=F; /*置状态为完成态*/run=NULL;break;if(i=time2run-all_time-run-run_time0)LineInsert3(run);while(ready3!=NULL)FirstIn_Demo3();PrintAll_MLFQ();for(int i=1;i=time3;i+)run-run_time+=1;if(run-all_time-run-run_time=0) /*如所需时间为0将其插入完成队列*/run-next=fin

12、ish;finish=run;run-state=F; /*置状态为完成态*/run=NULL;break;if(i=time3run-all_time-run-run_time0)LineInsert4(run);while(ready4!=NULL)FirstIn_Demo4();PrintAll_MLFQ();run-run_time+=1;if(run-run_time-run-run_time=0)run-next=finish;finish=run;run-state=F;run=NULL;ready4=ready4-next;PrintAll_MLFQ();计算机操作系统原理课外实验报告

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

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


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