欢迎来到天天文库
浏览记录
ID:35331023
大小:65.32 KB
页数:7页
时间:2019-03-23
《操作系统2实验1报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验(一)操作系统的进程调度一、目的与要求1、目的进程是操作系统最重要的概念之一,进程调度又是操作系统核心的主要内容。本实习要求学生独立地用高级语言编写和调试一个简单的进程调度程序。调度算法可任意选择或自行设计。例如,简单轮转法和优先数法等。本实习可加深对于进程调度和各种调度算法的理解。2、要求(1)设计一个有n个进程工行的进程调度程序。每个进程由一个进程控制块(PCB)表示。进程控制块通常应包含下述信息:进程名、进程优先数、进程需要运行的时间、占用CPU的时间以及进程的状态等,且可按调度算法的不同而增删。(2)调度程序应包含2〜3种不
2、同的调度算法,运行时可任意选一种,以利于各种算法的分析比较。(3)系统应能显示或打印各进程状态和参数的变化情况,便于观察诸进程的调度过程二、实验题目本程序可选用优先数法或简单轮转法对五个进程进行调度。每个进程处于运行R(run)、就绪W(wait)和完成F(finish)三种状态之一,并假设起始状态都是就绪状态W。为了便于处理,程序进程的运行吋I'可以吋I'可片为单位计算。各进程的优先数或轮转吋间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。三、实验源代码#include#include
3、structPCB{intID;structPCB*Next;intRef;//优先级/轮转时间片数intCPU;//占用CPU时间片数intTimeNeed;//进程所需时间丿V数charStatus;};structPCBProcess[5];inttype;intlnsert(structPCB*,structPCB*);voidlnit();voidPriority();voidRR();voidDisplay(structPCB*);intmain(){printf("Typethealgorithm(0->Priority,
4、l->RR):");scanf("%d",&type);lnit();讦(type){printf("OUTPUTOFRR=========================================");RR();}else{printf("OUTPUTOFPriority=========================================");PriorityO;}printf("执行结束“);system("pause");return0;}voidlnit(){for(inti=0;i<
5、5;i++){Process[i].ID=i+l;讦(type)Process[i].Ref=rand()%5+l;elseProcess[i].Ref=rand()%30+l;Process[i].CPU=0;Process[i].TimeNeed=rand()%10+l;Process[i].Next=NULL;Process[i].Status='W';//等待}}voidPriority(){structPCB*head;structPCB*temp;structPCB*run;inti=0,t=0,count=5;for(i=
6、l;i<5;i++){讦(Process[i].Ref>Process[t].Ref)t=i;}head=&Process[t];Processft].Status='R';for(i=0;i<5;i++){temp=head;while(temp->Next!=NULL&&Process[i].RefNext->Ref)temp=temp->Next;if(temp->Next==NULL)temp->Next=&Process[i];elseif(Process[i].Ref>=temp->Next->Ref&&Pro
7、cess"]」D!=temp->ID){Process[i].Next=temp->Next;temp->Next=&Process[i];}run二head;head=head->Next;Display(run);while(count){run->TimeNeed-;run->Ref-=3;if(run->TimeNeed==O)count-;run->Status=,F,;run->Next=NULL;if(head!=NULL){run=head;run->Status=,R,;head=head->Next;}if(head
8、!=NULL)if(run->RefRef){run->Status=,W,;head->Status=,R,;temp=run;run=head;head=head->Next;temp->
此文档下载收益归作者所有