![试验进程调度试验报告讲解_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/0697f8fd-86b1-4d21-b898-bfbd2c2c9d10/0697f8fd-86b1-4d21-b898-bfbd2c2c9d101.gif)
![试验进程调度试验报告讲解_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/0697f8fd-86b1-4d21-b898-bfbd2c2c9d10/0697f8fd-86b1-4d21-b898-bfbd2c2c9d102.gif)
![试验进程调度试验报告讲解_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/0697f8fd-86b1-4d21-b898-bfbd2c2c9d10/0697f8fd-86b1-4d21-b898-bfbd2c2c9d103.gif)
![试验进程调度试验报告讲解_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/0697f8fd-86b1-4d21-b898-bfbd2c2c9d10/0697f8fd-86b1-4d21-b898-bfbd2c2c9d104.gif)
![试验进程调度试验报告讲解_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-6/13/0697f8fd-86b1-4d21-b898-bfbd2c2c9d10/0697f8fd-86b1-4d21-b898-bfbd2c2c9d105.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、广东技术师范学院实验报告学院:姓名:成绩:组员:计算机院科学学专业: 技计术算机(师科范学)与 班级学号: 组别:预习情况操作情况考勤情况数据处理情况实验地点:实验日期:指导教师签名:实验名称:实验一、进程调度实验一、实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的 理解二、实验类别 综合性实验。综合高级语言编程、进程调度模型、进程调度算法及数据结构等多方 面的知识三、实验内容和步骤1编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进 程进行调度。“最高优先数优先”调度算法的基本思想是把 CPU 分配给就绪队列中优先数最高 的进程。静态优
2、先数是在创建进程时确定的,并在整个进程运行期间不再改变。 动态优先数是指进程的优先数在创建进程时可以给定一个初始值, 并且可以按一定 原则修改优先数。例如:在进程获得一次 CPU后就将其优先数减少 1。或者,进程等待 的时间超过某一时限时增加其优先数的值,等等 该题根据老师给的代码用 Visual C+ 运行,结果以及分析如下:结果分析:根据上述输入的三个进程的信息可以得到:优先级最高的是进程 cc 最先调度进程 cc 的状态为运行态,需要执行的时间为 10 当前就绪队列状态为:进程 aa 先级比较高,处于就绪队列前面,而进程 bb 先级是三者中最低的,所以处于就绪 队列的最后。而此时这两个进
3、程的状态都为就绪态。结果分析:当进程 cc 了一个时间片之后而它已占用 CPU 时间已达到所需要的运行时 间,则将它的优先级减 1 之后,再将三个进程按优先级的大小排列,从中选择优先级 大的进程进入运行状态,则该次进入运行态的是进程 aa按照这种方式一直运行下去:直到:结果分析:当进程 bb的CPU占用时间等于它需要的执行时间时, 进程 bb度完成。 则这时进程调度中还有两个进程:进程 aa 进程 cc结果分析:当调度进程中只剩下进程 aa程 cc 这时根据进程优先级的大小,进程 aa入运行态。当进程 aa调度时,进程调度程序中直剩下进程 cc 这时进程 cc进入运行 态,而当前就绪队列将为空
4、。直到:结果分析:当进程 i 的 CPU占用时间等于所需要的执行时间时, 进程 cc 调度完成, 则这时进程调度中已经没有需要调度的进程了,则整个进程调度完成。2、编写并调试一个模拟的进程调度程序,采用“轮转法”调度算法对五个进程进行 调度。轮转法可以是简单轮转法、可变时间片轮转法,或多队列轮转法。简单轮转法的基本思想是:所有就绪进程按 FCFS排成一个队列,总是把处理机分 配给队首的进程, 各进程占用 CPU的时间片相同。 如果运行进程用完它的时间片后还为 完成,就把它送回到就绪队列的末尾, 把处理机重新分配给队首的进程。直至所有的进 程运行完毕。将老师给的源程序修改成简单的时间片轮转法 流
5、程图如下:进程完成,撤消该进程时间片轮转法#include#include#include#define getpch(type) (type*)malloc(sizeof(type)#define NULL 0#define TIME 2/ 时间片长度/typedef struct pcb / 进程管理块char name10;/ 进程名字char state; / 进程状态int queue;/进程所在的队列int ntime;/进程需要运行的时间int rtime;/进程已经运行的时间int etime;/进程在本队列可运行的时间片struct pcb *link;PCB;/* 就 绪队
6、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); fflush(stdin);ch = getchar();while(ch != n)if(ch 9 | ch link | (ps- link-queue - ps-queue) 1) pinsert = ps;elsewhil
7、e (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; pfend-link = p; pfend = p; findpos();Else p-link = ready; ready = p; findpos();void input()/* 建立进程控制块函数 *
8、/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 disp(PCB *pr)/* 建立进程现实函数,用于显示当前进程 */printf(nnamet statet queuet ntimet rtimet在队列可停留时间 t n);printf
9、(|%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);/* 显示当前运行的进 程*/disp(ready);pr= ready -link;printf(n* 当前就绪队列状态为 :n);/* 显示就绪队列状态 */while(p
10、r!=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 -queue) findpos();void addnew()/ 添加新的进程 if(ready -queue != 1)(ready - que
11、ue)+; ready-etime *= 2; ready - state=w;sort();/* 调用 sort 函数 */input();elseinput();void destroy()/* 建立进程撤销函数 ( 进程运行结束,撤销进程 )*/printf(n进程%s 已完成.n,ready-name);p = ready;ready = ready-link;free(p);if (ready & ready - queue = pinsert -queue)findpos();void running()/* 建立进程就绪函数 ( 进程运行时间到,置就绪状态 )*/(ready -
12、 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 != NULL)printf(nThe execute nam
13、e:%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();运行结果如下: 根据题意输入五个进程按任意键继续按i键添加新进程按其他任意键继续运行 ,Theexecute name:cc当刖正在运疔的进程是:ccnamestatequeuent inei*t ine在队列可停留时间icc:R:1:5:0!2当
14、前就绪队列状态为:namestatequeuent inert ine在队列可停留时间:dd1 W!7:0:2namestatequeuent inert ine在队列可停留时间See! w!9:0:2nanestatequeuent inert ine在队列可停留时间iaai VI:2:12:2:2namestatequeuent inert ine在队列可停留时间:bbi w:2:10:2:2按i键添加新进程lb/U 丄二+4厶、丄、1按其他任意键继续运行1 JC:UserspcDesktopDebugjj.exe-x按i键添加新进程.按其他任意键继续运行The 1execute nane
15、:dd*当刖正在运4亍的进程是namestatequeuent inert ine在队列可停留时间:dd:R!1!7:0:27当前就绪队列状态为:namestatequeuent inert ine在队列可停留时间See:w!1!9:0:2nanesta tequeuent inert ime在队列可停留时间!aa!w:2:12:2:2nanestatequeuent inert ine在队列可停留时间:bbiw:2:10:2:2nanestatequeuent inert ine在队列可停留时间!cc!w!2:5:2:2按集g添加新进程.Lil 宀、丄 si:.按其他任意键继续运行. )C:UserspcDesktopDebugjj.exe四、实验问题及原因(1)本次试验, 思路设计不难 在这个多级反馈的实验中, 我采取了用一条实际上的链表队列来模 拟多个逻辑上的队列,通过维护几个链表的状态信息来找到每个进程运行完后应该插入的地方,还 有一个标志位 Fend 用来表明新插入的队列的位置。(2) 在建立优先数就绪队列时主要运用,链表插入模型。但
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 19183.2-2024电气和电子设备机械结构户外机壳第2部分:协调尺寸
- PB-22-N-4-Hydroxypentyl-3-carboxyindole-metabolite-生命科学试剂-MCE-7583
- EMPO-生命科学试剂-MCE-2695
- 二零二五年度自动驾驶车辆测试与示范运营合同
- 二零二五年度健康产品销售折扣与会员管理系统合同
- 2025年度体育设施建设与运营签合同授权委托书
- 2025年度董事薪酬体系设计与聘任合同
- 2025年度荒山开发使用权出让合同
- 2025年度林业保护驾驶员聘用与巡护服务合同
- 二零二五年度船舶船员劳动合同及船舶事故应急处理合同
- GB/T 19228.1-2024不锈钢卡压式管件组件第1部分:卡压式管件
- 2024年计算机二级WPS考试题库380题(含答案)
- (高清版)DZT 0399-2022 矿山资源储量管理规范
- 初一英语英语阅读理解专项训练15篇
- 部编人教版五年级道德与法治下册全册课件(完整版)
- 广西贵港市2023年中考物理试题(原卷版)
- 仁爱英语八年级阅读理解测试题和答案
- DB11∕T 1875-2021 市政工程施工安全操作规程
- 传统节日春节英文介绍课件
- 水资源论证报告
- 实现结构化:初中语文大单元教学设计的核心
评论
0/150
提交评论