操作系统课程设计编程内容

操作系统课程设计编程内容

ID:12175687

大小:104.00 KB

页数:16页

时间:2018-07-16

操作系统课程设计编程内容_第1页
操作系统课程设计编程内容_第2页
操作系统课程设计编程内容_第3页
操作系统课程设计编程内容_第4页
操作系统课程设计编程内容_第5页
资源描述:

《操作系统课程设计编程内容》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验一进程调度一、实验目的通过一个简单的进程调度模拟程序的实现,加深对进程调度算法,进程切换的理解。二、实验内容采用动态优先数的方法,编写一进程调度程序模拟程序。模拟程序只进行相应的调度模拟操作,不需要实际程序。[提示]:(1)假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为:进程名指针要求运行时间优先数状态其中,进程名——作为进程的标识,假设五个进程的进程名分别为P1,P2,P3,P4,P5。指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。要求运行时间——假设进程需要运行的单位时间数。优先

2、数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。状态——可假设有两种状态,“就绪”状态和“结束”状态。五个进程的初始状态都为“就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E”表示。(2)在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。(3)为了调度方便,把五个进程按给定的优先数从大到小连成队列。用一单元指出队首进程,用指针指出队列的连接情况。(4)处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优先数就减“1”。由于本实习是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执

3、行:优先数-1要求运行时间-1来模拟进程的一次运行。提醒注意的是:在实际的系统中,当一个进程被选中运行时,必须恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行结束。在这里省去了这些工作。(5)进程运行一次后,若要求运行时间?0,则再将它加入队列(按优先数大小插入,且置队首标志);若要求运行时间=0,则把它的状态修改成“结束”(E),且退出队列。(6)若“就绪”状态的进程队列不为空,则重复上面(4)和(5)的步骤,直到所有进程都成为“结束”状态。(7)在所设计的程序中应有显示或打印语句,能显示或打印每次被选中进程的进程名以及运行一次后进程队列的变化。(8)为五个进程任意确定一组

4、“优先数”和“要求运行时间”,启动所设计的处理器调度程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。三:实验流程图输入进程名及属性按优先级排列进程放入就绪队列调用首进程运行优先数减一,要求运行时间要求运行时间>0要求运行时间=0修改进程状态为空,输出各进程状态就绪队列为空就绪队列不为空退出四、实验代码#include#include#include#include/*进程控制块数据结构*/typedefstructnode{charname[10];/*进程名*/intprio;/*进程优先

5、级*/intcount;/*进程运行时间*/charstate;/*进程的状态:'R':运行,'W':等待,'F':结束*/structnode*next;/*指向下一个进程的指针*/}PCB;PCB*finish,*ready,*tail,*run;/*指向三个队列的队首的指针,tail为就绪队列的队尾指针*/intN;/*定义进程的数目*//*函数功能:将进程就绪队列中第一个放进就绪队列函数原型:voidfirstin(void)函数参数:void函数返回值:void*/voidfirstin(void){if(ready!=NULL){run=ready;ready=ready-

6、>next;run->state='R';run->next=NULL;}else{run=NULL;}}/*函数功能:输出所有进程信息的函数函数原型:voidprt(charalgo)函数参数:chara:a=='p'为优先级,=='r'为时间片轮转函数返回值:void*/voidprt(charalgo){PCB*p;printf("namecountprioritystate");p=ready;while(p!=NULL){printf("%-10s,%-10d,%-10d,%-5c",p->name,p->prio,p->state);p=p->next;}p=fin

7、ish;while(p!=NULL){printf("%-10s,%-10d,%-10d,%-5c",p->name,p->prio,p->state);p=p->next;}getchar();}/*函数功能:优先级法调度将进程插入到就绪队列算法函数原型:voidinsert1(PCB*q)函数参数:PCB*q待插入的队列进程控制块优先级越高,插入越靠前函数返回值:void*/voidinsert1(PCB*q){PCB*p,*s,*r;

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

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

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