操作系统2实验1报告

操作系统2实验1报告

ID:35331023

大小:65.32 KB

页数:7页

时间:2019-03-23

操作系统2实验1报告_第1页
操作系统2实验1报告_第2页
操作系统2实验1报告_第3页
操作系统2实验1报告_第4页
操作系统2实验1报告_第5页
资源描述:

《操作系统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->

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。