动态优先权进程调度算法的模拟.doc

动态优先权进程调度算法的模拟.doc

ID:57413695

大小:117.00 KB

页数:9页

时间:2020-08-16

动态优先权进程调度算法的模拟.doc_第1页
动态优先权进程调度算法的模拟.doc_第2页
动态优先权进程调度算法的模拟.doc_第3页
动态优先权进程调度算法的模拟.doc_第4页
动态优先权进程调度算法的模拟.doc_第5页
资源描述:

《动态优先权进程调度算法的模拟.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计算机学院设计性实验报告专业:朱文焌年级/班级:20xx级网络工程2015—2016学年第一学期课程名称操作系统指导教师张倩倩本组成员学号姓名朱文焌实验地点计算机与信息工程学院216实验时间2015.11.20项目名称使用动态优先权的进程调度算法的模拟实验类型设计性一、实验目的通过动态优先权调度算法和时间片轮转调度算法的模拟加深进程概念和进程调度过程的理解。二、实验仪器或设备一台笔记本电脑或者是一台台式机三、总体设计(设计原理、设计方案及流程等)本实验的目的就是用在Linux下用C语言编程模拟N个进程采用高优先权优先(要求采用动态优先权)进程调度算法。已

2、知时间片轮转算法,可以根据时间片轮转的思路加以修改就行了。时间轮转调度算法与动态优先权的区别就是时间片轮转是在FIFO进程调度的基础上,队列中的进程按照进入的顺序,每个进程每次都执行一个时间片;如果运行完就把该进程释放掉,如果在一个时间片内未结束就插到队列尾部。而动态优先权进程调度算法就是按照优先权的大小运行进程,如果一个时间片内未运行完,则将优先权数减3后再插入到队列中(不是队尾而是队列中的适当位置,该位置前面的节点的优先级数大于该节点的优先级数,后面的节点的count值小于该节点的count值)。四、实验要求:(1)在Linux下用C语言编程模拟N个

3、进程采用高优先权优先(要求采用动态优先权)进程调度算法。为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程情况显示出来;(2)进程控制块是进程存在的唯一标志,因此,在模拟算法中每一个进程用一个进程控制块PCB来代表,PCB用一结构体表示。包括以下字段:l进程标识数id,或者进程的名称name;l进程优先数priority,并规定优先数越大的进程,其优先权越高;l进程需要运行的CPU时间ntime;l进程的运行时间rtime;l进程状态state;l队列指针next,用来将PCB排成队列。(1)进程在运行过程中其状态将在就绪、执行、阻塞(可选)、

4、完成几种状态之间转换,同时进程可能处于不同的队列中,如就绪队列、阻塞队列(可选)。在两种调度算法中,考虑分别可以选择什么样的队列及如何实现进程的入队、出队操作;(2)为了便于处理,优先权调度每次也仅让进程执行一个时间片,若在一个时间片内未运行结束,调整进程优先级将其插入就绪队列,进行新一轮调度;(3)优先数改变原则:l进程每运行若一个时间单位,优先数减3;l进程在就绪队列中呆一个时间片,优先数增加1。(仅供参考,合理即可)(4)优先权调度中,对于遇到优先权一致的情况,可采用FCFS策略解决;(5)由于是模拟进程调度,所以,对被选中的进程并不实际启动运行,

5、而是修改进程控制块的相关信息来模拟进程的一次运行;(6)为了清楚地观察诸进程的调度过程,程序应将每个时间片内的进程的情况显示出来,参照格式如下:idcputimeneedtimepriority(count)state00248ready(7)sort函数执行流程一、实验步骤(包括主要步骤、代码分析等)#include"stdio.h"#include#definegetpch(type)(type*)malloc(sizeof(type))structpcb{//定义进程控制块charname[10];//进程的名字charstat

6、e;//进程的状态intcount;//进程优先级intntime;//进程运行需要的CPU时间intrtime;//进程已运行的时间structpcb*link;//连接pcb的指针}*ready=NULL,*tail=NULL,*p;//就绪队列指针,队尾指针typedefstructpcbPCB;intslice=1;PCB*readyMaxProcess;intreadyQueNum=0;//就绪队列的进程数量sort()//将进程插入到就绪指针{PCB*q;if(ready==NULL)//队列为空,将p插入到队列中{ready=p;tail=

7、p;}else//若就绪队列不为空,将p插入到队列{if(p->count>ready->count)//p指针所指节点的count值头的大于队列节点的count值,将p指针所指节点插入到对头{p->link=ready;ready=p;}else{boolm=false;q=ready;//q2=q1->link;while(m==false){if(tail->count>=p->count)//若p的count值小于队尾指针所指节点的的count值的话,将p插到队尾{tail->link=p;tail=p;p->link=NULL;m=true;}

8、else{if(q->count>=p->count&&p->count>q->

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

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

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