版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文档素材文档素材X技术师范学院实验汇报学院:计算机科学学
院专业:计算机科学与学院:计算机科学学
院专业:计算机科学与专业:技术〔师范〕班级:姓名:学号:组别:成绩组员:预习情况操作情况考勤情况数据处理情况实验地点:实验日期:指导教师签名:实验名称:实验一、进程调度实验一、实验目的用高级言语编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解二、实验类别综合性实验。综合高级言语编程、进程调度模型、进程调度算法及数据结构等多方面的知识三、实验内容和步骤1.编写并调试一个模拟的进程调度程序,采纳“最高优先数优先〞调度算法对五个进程进行调度。“最高优先数优先"调度算法的根本思想是把CPU分配给就绪队列中优先数最高的进程。静态优先数是在创立进程时确定的,并在整个进程运行期间不再改变。动态优先数是指进程的优先数在创立进程时可以给定一个初始值,并且可以按肯定原则修改优先数。例如:在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等该题依据老师给的代码用VisualC++运行,结果以及分析如下:….rh“III屐「IIIIII:虽II…I■—=—zII三=▼弓Il丁■■■〒1l琵III±I■"C:\Users\pc\Desktop\Debu度wxh-请输人进程号:3进程号No-0:输入进程名:陶输入进程优先数汐输入进程运行时间汴进程号No.l:输入进程名:血输入进程优先数油输入进程运行时间汚进程号No-2:输入进程名"C:\User5\pc\Desktop\Debu①进程调度exe""C:\User5\pc\Desktop\Debu①进程调度exe"□进程号Ho.2:输入进程名:比输入进程优先数泊输入进程运行时间Theexecutenuinbep:1****当前正在运彳亍的进程是:CCqname!ccstateIRsuper!3ndtine11010runtine比*当刖就绪队列状态为:qname良tEsuperndtimeruntirw!aa!u:2!6!0qnamestatesuperndtineruntine:bb!u!1i5i0.按任一键继续……结果分析:依据上述输入的三个进程的信息可以得到:优先级最高的是进程CC最先调度进程CC的状态为运行态,需要执行的时间为10当前就绪队列状态为:进程aa先级比拟高,处于就绪队列前面,而进程bb先级是三者中最低的,所以处于就绪队列的最后。而此时这两个进程的状态都为就绪态。
[按任-键继续…1Theexecutenumbep:2.MMMM当前正在运行的进程是"吕(jnantestatesuperndtineruntime!2!&!Q1****当刖就绪队列状态为:statesuperndtineruntimeliCGilJ:2!10!1(jnctne:statesuperndtineruntimel;bbiu:1i516-键继续…结果分析:当进程CC了一个时间片之后而它已占用CPU时间已到达所需要的运行时间,则将它的优先级减1之后,再将三个进程按优先级的大小排列,从中选择优先级大的进程进入运行状态,则该次进入运行态的是进程aa按照这种方法一直运行下去:l:bb:u1按任一键继续…x:115:01Theexecutenumber:31****当前正在运行的进程是:sqnamestatesuperndtimeF-u.ntinelice::R!2lie!11****当刖就绪队列状态为=qnanestatesuperndtiner-untine:bb:u:1:5:0qnamestatesuperndtimeruntime!aaiu:1;6;1按任一键继续…扌矚衆法直到:
Theexecutenumber:Itqnanest-a-te!Bsupei'-!-3ndtime!5s*当刖就绪队列状态为:qnavnestatesuper-ndtime!aa!-3i6qnavnestateSLipei*Theexecutenumber:Itqnanest-a-te!Bsupei'-!-3ndtime!5s*当刖就绪队列状态为:qnavnestatesuper-ndtime!aa!-3i6qnavnestateSLipei*ndtime!cc:-3:10i5进程thh]已完成.****当前正在运行的进程是:hhruntimeruntimeruntime詩叟狗拼音输人袪半:按任一键继续Theexecutenumber:!?****当前正在运彳亍的进程是二曰曰qnamestatesuperndtime:aa:R:-3:6:5****当前就绪队列状态为:!cc!u!-3!10!&进程Eaal!cc!u!-3!10!&进程Eaal已完成-runtimepuntine结果分析:当调度进程中只剩下进程aa程CC这时依据进程优先级的大小,进程aa入运行态。当进程aa调度时,进程调度程序中直剩下进程cc这时进程cc进入运行态,而当前就绪队列将为空。直到:Theexecutenumber:21****当前正在运彳亍的进程是兀匚q;nanestatesupei'ndtimeruntime!cc:R!-6:10:9F*当前就绪队列状态为=进程[cc]已完成-按任一键继续结果分析:当进程i的CPU占用时间等于所需要的执行时间时,进程CC调度完成,则这时进程调度中已经没有需要调度的进程了,则整个进程调度完成。2、编写并调试一个模拟的进程调度程序,采纳“轮转法〃调度算法对五个进程进行调度。轮转法可以是简单轮转法、可变时间片轮转法,或多队列轮转法。简单轮转法的根本思想是:全部就绪进程按FCFS排成一个队列,总是把处理机分配给队首的进程,各进程占用CPU的时间片相同。如果运行进程用完它的时间片后还为完成,就把它送回到就绪队列的末尾,把处理机重新分配给队首的进程。直至全部的进程运行完毕。将老师给的源程序修改成简单的时间片轮转法流程图如下:
时间片轮转法#include<stdio.h>#include<stdlib.h>#include<conio.h>#definegetpch(type)(type*)malloc(sizeof(type))#defineNULL0#defineTIME2//时间片长度/////////////typedefstructpcb{//////进程治理块charname[10];///////进程名字charstate;///////进程状态intqueue;//////进程所在的队列intntime;/////进程需要运行的时间intrtime;//////进程已经运行的时间intetime;////进程在本队列可运行的时间片structpcb*link;}PCB;/*就绪队PCB*ready=NULL,*pinsert=NULL,*pfend=NULL,*p=NULL;列,进程插入位置的变量*//*就绪队intgeti()//使用户仅能输入整数{charch;inti=0;fflush(stdin);ch=getchar();while(ch=='\n'){printf("\tf输入不能为空•.请重新输入\n");fflush(stdin);ch=getchar();}while(ch!='\n'){if(ch>'9'||ch<'0'){printf("\t输入有误!!输入只能为正整数,请重新输入・•・fflush(stdin);i=0;ch=getchar();}else{i=i*10+(ch-'0');ch=getchar();}}returni;}voidfindposO///////更新状态量{PCB*ps=pfend;if(!ps||!ps->link||(ps->link->queue-ps->queue)>1)pinsert=ps;else{while(ps->link&&ps->link->queue!=(pfend->queue+2))ps=ps->link;pinsert=ps;}}voidinsert()//////插入进程{if(!ready){ready=p;pfend=p;pinsert=p;}elseif(ready->queue==1)//////第一队列存在{p->link=pfend->link;pfend->link=p;pfend=p;findpos();}Else{p->link=ready;ready=p;findpos();}}voidinput()/*建立进程操纵块函数*/{inti,num;printf("\n请输入进程的个数:");num=geti();for(i=0;i<num;i++){printf("\n进程号No.%d:\n",i+1);p=getpch(PCB);printf("\n输入进程名:");scanf("%s",p->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函数*/}}voiddisp(PCB*pr)/*建立进程现实函数,用于显示当前进程*/{printf("\nname\tstate\tqueue'tntime\trtime\t在队列可停留时间\t\n");printf("|%s\t",pr->name);printf("|%c\t",pr->state);printf("|%d\t",pr->queue);printf("|%d\t",pr->ntime);printf("|%d\t",pr->rtime);printf("|%d\t",pr->etime);printf("\n");}voidcheck()/*建立进程查看函数*/{PCB*pr;printf("\n****当前正在运行的进程是:%s",ready->name);/*显示当前运行的进程*/disp(ready);pr=ready->link;printf("\n****当前就绪队列状态为:\n");/*显示就绪队列状态*/while(pr!=NULL){disp(pr);pr=pr->link;}}voidsort()//调整进程队列{if(!ready->link||ready->queue<ready->link->queue)return;p=ready->link;ready->link=pinsert->link;pinsert->link=ready;pinsert=ready;ready=p;if(ready&&ready->queue==pinsert->queue){findpos();}}voidaddnewO//添加新的进程{if(ready->queue!=1){(ready->queue)++;ready->etime*=2;ready->state='w';sort();/*调用sort函数*/input();}else{input();}}voiddestroy。/*建立进程撤销函数(进程运行结束,撤销进程)*/{printf("\n进程[%s]已完成.\n",ready->name);p=ready;ready=ready->link;free(p);if(ready&&ready->queue==pinsert->queue)findpos();}voidrunning。/*建立进程就绪函数(进程运行时间到,置就绪状态)*/{(ready->rtime)++;ready->etime--;if(ready->rtime==ready->ntime){destroy();return;}elseif(ready->etime==0){inttime=2;(ready->queue)++;for(inti=2;i!=ready->queue;++i)time*=2;ready->etime=time;ready->state='w';sort();/*调用sort函数*/}}voidmain(){charch;input();while(ready!=NULL){printf("\nTheexecutename:%s\n",ready->name);ready->state='R';check();running();printf("\n按i键添加新进程・・・・按其他任意键继续运行・・・");fflush(stdin);ch=getchar();if(ch=='i'||ch=='I')addnew();}printf("\n\n进程已经完成\n");getchar();运行结果如下:依据题意输入五个进程按任意键继续"C:\Users\pc\DesIctop\Debug\jj.exe"”i键添加新进程.•…按其他任意键继续运行…丄ATheexecutename:bb****当刖正在运■!亍的进程是在队列可停留时间namequeuentimertime:bb!RSI:10:0!2:KKKJC当前就绪队列状态为:namestatequeuentimertime在队列可停留时间!cc!i-j:1:5:012namestatequeuentimertime在队列可停留时间:dd!i-j!71012namestatequeuentimertime在队列可停留时间!ee!i-j:1:9:0:2namestatequeuentineLtilDG在队列可停留时间!aa!w:2:12:2:2魁■■■按i键添加新进程-•按其他任意键继续运行Theexecutename::aa****当刖正在运4亍的进程是:aa在队列可停留时间■namestatequeLien
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026高中物理教资面试高频题
- 2026小学数学教资面试试讲高频题试卷含答案
- 2026小学数学教资面试试讲高频题含解析
- 2026初中数学教资面试试讲高频题试卷含答案
- 宾客行李员安全演练竞赛考核试卷含答案
- 自来水笔制造工保密知识考核试卷含答案
- 晶体切割工操作管理模拟考核试卷含答案
- 水供应服务员安全生产意识模拟考核试卷含答案
- 无人机装调检修工成果水平考核试卷含答案
- 巡检无人机驾驶员安全行为模拟考核试卷含答案
- 糯米鸡行业分析报告
- 中学物理全套教材目录及说明
- 2025年交通事故统计
- 2025年人力资源与社会保障系统事业单位人员招聘考试题及答案
- GB/T 28159-2025电子级磷酸
- 2025 SMETA员工公平职业发展管理程序-SEDEX验厂专用文件(可编辑)
- 知道智慧树科学精神与科学研究方法满分测试答案
- 4s店与二手车公司协议合同
- 网易公司考勤管理制度
- 农产品加工新技术课件
- DB31/T 467-2018社区事务受理服务中心建设和服务规范
评论
0/150
提交评论