实验一、进程调度实验报告_第1页
实验一、进程调度实验报告_第2页
实验一、进程调度实验报告_第3页
实验一、进程调度实验报告_第4页
实验一、进程调度实验报告_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一、进程调度实验报告广东技术师范学院实验报告学院:计算机科学学专业:技算师范与班级:成绩:姓名:学号:组别:组员:实验地点:实验日期:指导教师签名:预习情况操作情况考勤情况数据处理情况实验名称:实验一、进程调度实验一、实验目的用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的 理解二、实验类别综合性实验。综合高级语言编程、进程调度模型、进程调度算法及数据结构等多方 面的知识三、实验内容和步骤1 编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进 程进行调度。“最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。静态优先数

2、是在创建进程时确定的,并在整个进程运行期间不再改变。动态优先数是指进程的优先数在创建进程时可以给定一个初始值, 并且可以按一定 原则修改优先数。例如:在进程获得一次 CPU后就将其优先数减少1。或者,进程等待 的时间超过某一时限时增加其优先数的值,等等该题根据老师给的代码用 Visual C+运行,结果以及分析如下:rr i. ina. i小 “ Iiii门鼻 i【 4i C:U se rsp cD es ktopDe b u. exe一请输入进程号:3进程号No_0 =输入进程名:血 输入进程优先数立 输入进程运行时间话进程号No.i =输入进程名:丽 输入进程优先数汕 输入进程运行时间再进

3、程号Mo * 2 :输入进程名;x结果分析:根据上述输入的三个进程的信息可以得到:优先级最高的是进程CC最先调度进程CC的状态为运行态,需要执行的时间为 10当前就绪队列状态为:进 程aa先级比较高,处于就绪队列前面,而进程 bb先级是三者中最低的,所以处于 就绪队列的最后。而此时这两个进程的状态都为就绪态。按任一犍继绫The execute numbep:2*当前正在运行的进程是! aa$七at七巳 :Rsupei* :2ndt ine !6!Grim t ine*当前就绪队列状态为:superndt incruntine! CG!2:10!1statesuperndtinerun t im

4、eibb!u!1;510结果分析:当进程CC了一个时间片之后而它已占用 CPU时间已达到所需要的运行时 间,则将它的优先级减1之后,再将三个进程按优先级的大小排列,从中选择优先级 大的进程进入运行状态,则该次进入运行态的是进程aa按照这种方式一直运行下去:Su=-一 S1!5:01灯-键继续-1 The execute number;3I当前正在运行的进程是SCI qniamestatesuperndtimeF-unt luteli cc::R:2110 !11 3*当刖就洁队列状态为(jnane鲁七a tusuperdt in)run t irt:hh!u:5:Qqua mestatesup

5、ernilt ineruntimei aa;u;1i6il按任L扌踰并首输入法半丁_直到:Ihe execute nunbep:i?uin t Ime14*当刖正在运厅的进程是:hb qnane state sitpei* ndLt j_me hb 亦!-3 IS*当前就绪队列状态为:qnanei flrLsupei* -3ndt Ime!6i5runtimeQnanestateccsupei* -3runtimeiI/13输咆&S结果分析:当进程bb的CPU占用时间等于它需要的执行时间时,进程bb度完成。则这时进程调度中还有两个进程:进程aa进程cc按任一键继缄The execute num

6、ber:17当前正在运行的进程是冷曰 qname state wupEt1ndt ime:aa:R:-3:6:5runtiiwi当前就绪队列状态为:qname state superndtine:cc血:-3$10:&runtlm;u进程Caal已完成.结果分析:当调度进程中只剩下进程 aa程cc这时根据进程优先级的大小,进程 aa入运行态。当进程aa调度时,进程调度程序中直剩下进程 cc这时进程cc进入运 行态,而当前就绪队列将为空。C:UserspcDeslctopDebugifiT 度 Exh按任一键继绞Tlie execute nu.mber: 18 当前正在运行的进程是二哄svpci

7、 ndt ineruninciccIB;-3:1016*当前就绪队列状态为=按任一键继续直到:The execute nuLinbei二1*当前正在运行的进程是託匚qnane state supep ndtimeruntinece!H!-G!10!9*当前就绪队列状态为=进程lJ已完咸.按任一键继续结果分析:当进程i的CPU占用时间等于所需要的执行时间时,进程 cc调度完 成,则这时进程调度中已经没有需要调度的进程了,则整个进程调度完成。2、编写并调试一个模拟的进程调度程序,采用“轮转法”调度算法对五个进程进行 调度。轮转法可以是简单轮转法、可变时间片轮转法,或多队列轮转法。简单轮转法的基本思

8、想是:所有就绪进程按 FCFS排成一个队列,总是把处理机分 配给队首的进程,各进程占用CPU的时间片相同。如果运行进程用完它的时间片后还为 完成,就把它送回到就绪队列的末尾, 把处理机重新分配给队首的进程。直至所有的进 程运行完毕。将老师给的源程序修改成简单的时间片轮转法流程图如下:开始J初始化上PCB输 各讲程按FCFS原则所有就绪队列首进时间片到,时间片轮转法#in clude#in clude#in clude#defi ne getpch(type) (type*)malloc(sizeof(type)#defi ne NULL 0#defi ne TIME 2时间片长度/typede

9、f struct pcb /进程管理块char name10;/进程名字char state;/ 进程状态int queue; /进程所在的队列int ntime;/进程需要运行的时间in t rtime;/进程已经运行的时间int etime;/进程在本队列可运行的时间片struct pcb *li nk;PCB;/*就绪队PCB *ready = NULL, *pinsert = NULL, *pfend = NULL,*p =NULL;列,进程插入位置的变量*/int geti() /使用户仅能输入整数char ch;int i = 0;fflush(stdi n);ch = getch

10、ar();while(ch = n)printf(tf输入不能为空请重新输入n);fflush(stdi n);ch = getchar();while(ch != n)if(ch 9 | ch link | (ps- lin k-queue - ps-queue) 1)pin sert = ps;elsewhile (ps-li nk & ps -li nk-queue != (pfe nd -queue +2) ps = ps-li nk;pin sert = ps;插入进程oid in sert()/if(!ready )ready = p; pfend = p;pin sert = p

11、;第一队列存在else if(ready -queue = 1) / p-li nk = pfen d-li nk;pfen d-li nk = p;pfend = p;fin dpos();Elsep-li nk = ready; ready = p;fin dpos();oid input()/*建立进程控制块函数*/int i,num;prin tf(n请输入进程的个数:);num = geti();for(i=0; i n ame);printf(n输入进程运行时间:);p -n time = geti();prin tf(n);p-rtime=O;p-state=w;p-queue

12、=1;p-etime = TIME;p-li nk=NULL;insert();/* 调用 insert 函数 */oid disp(PCB *pr)/*建立进程现实函数,用于显示当前进程 */prin tf(nn amet statet queuet n timet rtimetprin tf(|%st,pr- n ame);prin tf( |%ct,pr-state);prin tf( |%dt,pr-queue);prin tf( |%dt,pr- n time);prin tf( |%dt,pr-rtime);prin tf( |%dt,pr-etime);prin tf(n);oi

13、d check()/*建立进程查看函数*/PCB *pr;prin tf(n *程*/disp(ready); pr= ready -li nk; prin tf(n*在队列可停留时间t n)当前正在运行的进程是:s,ready- name);/*显示当前运行的进当前就绪队列状态为:n);/* 显示就绪队列状态*/while(pr!=NULL)disp(pr);pr=pr-li nk;oid sort()调整进程队列if(!ready-li nk |ready-queue li nk-queue) return; p = ready -li nk;ready -li nk = pinsert

14、-li nk;pinsert -li nk = ready;pin sert = ready;ready = p;if (ready & ready - queue = pinsert -queue)fin dpos();oid add new() 添加新的进程if(ready -queue != 1)(ready - queue)+;ready-etime *= 2;ready - state=w;sort();/* 调用 sort 函数 */ in put();elsein put();oid destroy。/*建立进程撤销函数(进程运行结束,撤销进程)*/printf(n进程%s已完成

15、.n,ready-name);p = ready;ready = ready-li nk;free(p);if (ready & ready - queue = pin sert -queue) fin dpos();oid running()/*建立进程就绪函数(进程运行时间到,置就绪状态)*/(ready - rtime)+;ready -etime -;if(ready-rtime = ready-n time)return;else if(ready -etime = 0)int time = 2;(ready - queue)+;for(i nt i = 2; i != ready-

16、queue; +i)time *= 2;ready-etime = time;ready - state=w;sort();/* 调用 sort 函数 */oid mai n()char ch;in put();while(ready != NULL)printf(nThe execute name:%sn,ready -name);ready -state = R;check();runnin g();printf(n按i键添加新进程.按其他任意键继续运行.);fflush(stdi n);ch = getchar();if (ch = i| ch=T)add new();进程已经完成n);

17、getchar();运行结果如下:根据题意输入五个进程XC:UserspcDesktopDebugj.exe进程号Ku - 3 :输入进程名心输入进程运行时间汚进程号附-4:输入进程名:罰输人进程运行时间汐进程号Ho 5:输入进程名輸入进程运行时间汐按任意键继续C:UserspcDesktopDebugjj-exe按i犍添加新进程-按其他任意键继续运行-The execute name*当 刖正在运行的进程是 9耳在队列可停留时阖namestatequeuentinertime:aa1RIIE12:111“当前就绪队列状态为:najmestatequeuent inert i_me在队列可停留

18、时间ibb;u:1:B;2nainestatequeuent inertine在队列可停留时间icclwilIS1012namestatequeuent imertime在队列可停留时间:dd亦!1:7:012naumestatequeueninert i_me在队列可停留时间!ee!u:1J 9:0:2按i惮逐加新进程.-按其他任意键继续运行 - XHC;UserspcDesktopDebugjj.exe按i键添加新进程援其他任意键继续运行eThe execute name:cc*当前正在运行的进程是:cc ntine:5rt ine :0在队列可停留时间 :2nane :ccstate :

19、Rqueue :1当前就绪队列状态为*nanequeuentinert ine在队列可停留时间:dd!vi!7:0:2nanestatequeuentinei*t ine在队列可停留时间See:VJ:1:9:0:2panestatequeuentinert ime在队列可停留时间!aa!vi:2!12:2:2name1statequeuentinertine在队列可停留时间:hhiVI:2:10:2:2按i键添加新进程.按其他任意键继续运行IW宀 4、丄_按i键添加新进程 . 按其他任意键继续运行eTheexecute nane:dd*当前正在运行的进程是:dd在队列可亭留时间namestatequeuentiner-t ineIdd!R!1!7!0!2XX MX当前就绪队列状态为:namest

温馨提示

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

评论

0/150

提交评论