实验2-进程调度设计分析

上传人:泽*** 文档编号:75642277 上传时间:2022-04-16 格式:DOC 页数:15 大小:353KB
收藏 版权申诉 举报 下载
实验2-进程调度设计分析_第1页
第1页 / 共15页
实验2-进程调度设计分析_第2页
第2页 / 共15页
实验2-进程调度设计分析_第3页
第3页 / 共15页
资源描述:

《实验2-进程调度设计分析》由会员分享,可在线阅读,更多相关《实验2-进程调度设计分析(15页珍藏版)》请在装配图网上搜索。

1、实验报告院 (系):专业班级:学号:姓名:实验地点 :实验日期 :课程名称实验项目名称实验学时实验类型计算机操作系统进程调度设计2验证型一、实验目的及要求进程调度是处理机管理的核心内容。本实验要求用 C 语言编写和调试一个简单的进程调度程序。 通过本实验可以加深理解有关进程控制块、 进程队列的概念,并体会和了解 FIFO 调度算法的具体实现方法。二、实验环境PC /Windows 系统 /Visual C+6.0三、实验内容编写并调试一个模拟的进程调度程序, 采用“简单时间片轮转法” 调度算法对五个进程进行调度。每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、到达时

2、间、需要运行时间、已运行时间、进程状态等等。进程的到达时间及需要的运行时间可以事先人为地指定 (也可以由随机数产生)。进程的到达时间为进程输入的时间。 进程的运行时间以时间片为单位进行计算。每个进程的状态可以是就绪 W(Wait )、运行 R(Run)两种状态之一。 就绪进程获得 CPU后都只能运行一个时间片。用运行时间加 1 来表示。如果运行一个时间片后, 进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用 CPU时间还未达所需要的运行时间,也就是进程还需要继续运行, 此时应分配时间片给就绪队列中排在该进程之后的进程,并将它插入就绪队列队尾。 每进

3、行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。四、实验步骤1、进程调度算法:采用多级反馈队列调度算法。 其基本思想是: 当一个新进程进入内在后, 首先将它放入第一个队列的末尾,按 FCFS 原则排队等待高度。当轮到该进程执行时,如能在该时间片内完成, 便可准备撤离系统; 如果它在一个时间片结束时尚为完成,调度程序便将该进程转入第二队列的末尾,再同样地按 FCFS 原则等待调度执行,以此类推。2、实验步骤 :( 1)按先来先服务算法将进程排成就绪队列。( 2)检查所有队列是否为空,若空则退出,否则将队首进程调入执行。( 3

4、)检查该运行进程是否运行完毕,若运行完毕,则撤消进程,否则,将该进程插入到下一个逻辑队列的队尾。( 4)是否再插入新的进程 ,若是则把它放到第一逻辑队列的列尾。( 5)重复步骤( 2)、( 3)、( 4),直到就绪队列为空。3、流程图:YY五、实验结果及分析按 Y 键程序继续执行,直至所有进程结束。程序源代码:#include#include#include#define getpch(type)(type*)malloc(sizeof(type)#define NULL 0#define TIME 2/时间片长度typedef struct pcb/进程管理块char name10;/进程名

5、字char state;/进程状态int queue;/进程所在的队列int ntime;/进程需要运行的时间int rtime;/进程已运行的时间int etime;/进程在本队列所运行的时间struct pcb *link; PCB;PCB *ready = NULL, *pinsert = NULL, *pfend = NULL,*p =NULL;/就绪队列,进程插入位置的变量int geti() / 是用户仅能输入整数 char ch;int i = 0;fflush(stdin);ch = getchar();while(ch = n)printf(tf输入不能为空,请重新输入n);

6、fflush(stdin);ch = getchar();while(ch != n)if(ch 9 | ch link | (ps- link-queue - ps-queue) 1)pinsert = ps;elsewhile (ps-link & ps -link-queue != (pfend -queue+2)ps = ps-link;pinsert = ps;void insert()/插入进程if(!ready )ready = p;pfend = p;pinsert = p;else if(ready -queue = 1)/ 第一队列存在p-link = pfend-link

7、;pfend-link = p;pfend = p;findpos();elsep-link = ready;ready = p;findpos();void input()/*建立进程控制块函数 */int i,num;printf(n请输入进程的个数 ?);num = geti();for(i=0; i name);printf(n请输入进程运行时间 :);p -ntime = geti();printf(n);p-rtime=0;p-state=w;p-queue =1;p-etime = TIME;p-link=NULL;insert();/* 调用 insert 函数 */void

8、disp(PCB *pr)/*建立进程,实现函数用于显示当前函数*/printf(nnamet statet queuet ntimet在队列可停留时间t n);printf(|%st,pr-name);printf( |%ct,pr-state);printf( |%dt,pr-queue);printf( |%dt,pr-ntime);printf( |%dt,pr-rtime);printf( |%dt,pr-etime);printf(n);void check()/*建立进程,查看函数*/PCB *pr;printf(n *当前正在运行的函数是:%s,ready-name);/*显示

9、当前函数*/disp(ready);pr= ready -link;printf(n*?D? D?a:n);/*? ? ?D? D?*/while(pr!=NULL)disp(pr);pr=pr-link;void sort()/调整进程队列if(!ready-link |ready-queue link-queue) return;p = ready -link;ready -link = pinsert -link;pinsert -link = ready;pinsert = ready;ready = p;if (ready & ready - queue= pinsert -queu

10、e)findpos();void addnew()/添加新进程if(ready -queue != 1)(ready - queue)+;ready-etime *= 2;ready - state=w;sort();/* 调用 sort 函数 */input();elseinput();void destroy()/*程序运行结束,结束进程*/printf(n进程已完成 .n,ready-name);p = ready;ready = ready-link;free(p);if (ready &ready - queue= pinsert -queue)findpos();void runn

11、ing()/*进程运行时间到,之就绪状态*/(ready - rtime)+;ready -etime -;if(ready-rtime = ready-ntime)destroy();return;else if(ready -etime = 0)int time = 2;(ready - queue)+;for(int i = 2; i != ready-queue; +i)time *= 2;ready-etime = time;ready - state=w;sort();/* 调用 sort 函数 */void main()char ch;input();while(ready !=

12、 NULL)printf(nThe execute name:%sn,ready -name);ready -state = R;check();running();printf(n按 i 键添加新程序 .按任意键程序继续运行.);fflush(stdin);ch = getchar();if (ch = i| ch=I)addnew();printf(nn进程已经完成 n);getchar();六、总结先来先服务调度算法就是根据进程达到的时间为依据,哪一个进程先来那么该进程就会先执行这就是本次试验的依据。通过本次实验了解到算法很重要,又更加明白算法本身可以节约时间,而且不同的函数之间在调用的时候要注意很多的问题。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!