版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
试验一进程管理进程调度是处理机管理的关键内容。本试验规定编写和调试一种简朴的进程调度程序。通过1、设计进程控制块PCB的构造(PCB构造一般包括如下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、目前队列指针等。可根据试验的不一样,PCB构造的内容的增删)。为了便于处理,程序中的某进程运行时间以时间3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定期间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。开始对进程进行初始化,建立就绪队列、阻塞队列。Input(触发时钟,调用时间片轮转调度算法。runFcfs()是就绪队列为空?结束否输出就绪队列和阻塞队列的信息。取就绪队列的第一种进程,判断其运行的时间片与否到达所需次数。假如到达,则释放资源假如没到达,则运行一种时间片。running(检查阻塞队列,对于目前资源数目满足阻塞队列的进程,由阻塞转入就绪队列。testblock(检查与否有新进程产生,假如有,则判断系统资源与否够用,假如够用,则分派给该进程,插入就绪队列。假如不够用,则插入阻塞队列。testnew()显示三类资源状况。rescore()2、重要程序代码/PCB构造体publicintrb;//所需资源B的数量}ArrayListhready=newArrayListhblock=newArrayList();//ArrayListp=newArrayList();intm,n,r,a,al,b,b1,c,c1,h=0,i=1,timelInteval;//m为要模拟的进程个数,n为初始化进程个数/r为可随机产生的进程数(r=m-n)//a,b,c分别为A,B,C三类资源的总量/h为运行的时间片次数,timelInteval为时间片大小(毫秒){m=int.Parse(textBox4.Tn=int.Parse(textBox5.Tb=int.Parse(textBox7.TextimelInteval=int.Parse(textBtimer1.Interval=timelIn{pcbjincheng=newpcb0;jincheng.id=i;jincheng.ra=(random.Next(a)+1);jincheng.rb=(random.Next(b)+1);jincheng.rc=(random.Next(c)+1);jincheng.ntime=(random.Next(1,5));jincheng.rtime=0;listBox1.Items.Add("产生进程ID:"+jincheng.id);listBox1.Items.Add("所需A资源数目:"+jincheng.ra);listBox1.Items.Add("所需B资源数目:"+jincheng.rb);if((a-jincheng.ra)>=0&&(b-jincheng.rb)>=0&&(c-jinch{jincheng.state='W;}{jincheng.state='B';hblock.Add(jincheng);/加入阻塞队列}listBox1.Items.Add("目前进程状态:"+jincheng.state);}}//从数组起始地址开始输出该数组的内容publicvoiddisp(ArrayListlis{if(list1.Count>0){{listBox1.Items.Add(""+p.id.ToStringO+""+p.state.ToStringO+"}istBox1.Items.Add("\r\n\t该队列中没有进程!r\n");}//输出就绪数组和阻塞数组的信息publicvoidoutputall(){listBox1.Items.Add("Ir\n=======CPU运行了:"+h.ToStringO+"次=======r\n");listBox1.Items.Add("进程ID进程状态A资源数B资源数C资源数所需时间片已运行时间片");listBox1.Items.Add("*********目前就阻塞列的信息!*********");listBox1.Items.Add("进程ID进程状态A资源数B资源数C资源所需时间片已运行时间片");}{ArrayListhreadyl=newArrapcbpl=newpcb();listBox1.Items.Add("\r\n~listBox1.Items.Add("lrln进程ID进程状态A资源数B资源数C资源数所需时间片已运行时间片r\n");listBox1.Items.Add(pl.id+""+p1.statepl.rc+""+p1.ntime+"if(pl.ntime==pl.rtime){listBox1.Items.Add(pl.id.ToString()+"的进程已经完毕!Irln");publicvoidtestbloc{ArrayListhblockl=newArrafor(intm=0;m<hblock1.Count;m++){pcbpl=newpcb(;if((a-pl.ra>=0)&&(b-pl.rb>=0)&&(c-listBox1.Items.Add("ID号为:"+pl.id+"的进程由阻塞队列转入就绪队列~~rn");}if(r>0)/r为随机产生的进程数目{{listBox1.Items.Add("pcbjincheng=newpcb();jincheng.id=i++;jincheng.ra=(random.Next(a)+1);jincheng.rb=(random.Next(b)+1);jincheng.rc=(random.Next(c)+1);jincheng.ntime=(random.Next(1,5);jincheng.rtime=0;listBox1.Items.Add("产生进程ID:"+jincheng.id);listBox1.Items.Add("所需A资源数目:"+jincheng.ra);listBox1.Items.Add("所需B资源数目:"+jincheng.rb);if((a-jincheng.ra)>=0&&(b-jincheng.rb)>=0&&(c-jinch{jincheng.state='W';listBox1.Items.Add("进程状态为:"+jincheng.state);}{jincheng.state='B';hblock.Addjincheng);/加入阻塞队列listBox1.Items.Add("进程状态为:"+jincheng.state);listBox1.Items.Add("资源不满足新进程祈求,该进程进入阻塞队列~~\rin");//系统三类资源变化状况的显示{if(a>al){textBox1.Text=al.Tif(a>=0&&a<al){textBox1.Text=a.if(b>bl){textBox2.Text=bl.ToStringO;}if(b<0){textBox2.Text="0";}if(b>=0&&b<=b1){textBox2.Text=b.ToString0;}if(c>cl){textBox3.Text=cl.Tif(c>=0&&c<=c1){textBox3.Text=c.}//时间片轮转调度算法(先来先服务FCFS算法){if(hready.Coun>0){textBox1.Text=al.ToStrtextBox2.Text=b1.ToStrtextBox3.Text=c1.ToStrlistBox1.Items.Add("Irin<<<<<<<<所有进程都已经运行结束!>>>>>>>~\rin");//计时器触发时间片轮转调度算法privatevoidtimerl_Tick(o{}//开始模拟按钮单击执行函数privatevoidbutton1_Click(obje{button1.Enabled=falprivatevoidbutton2_Click(objects{}{}所需A安源数目:3所雷B资源数目:2所宣C安源数目:3所需时间片数:1所需A资源数目:4所需B资源数目:8所宽C源数目:1所需时问片数:4所需A资源数目:3所需B资理数目:1所蕾C资源数目:5所需时间片数:4当前进程状态:B进程ID进程状态A资源数B资源数C资源数所需时间片已运行时间片开始模拟********当前就阻塞列的信息!********进程ID进程状态A资源数B资源数C资源所需时间片已运行时间片进程ID进程状态A资源数B喷源数C资源数所需时间片已运行时间片模拟的进程总数初始化的进程总数资源B的总数资源C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年吉林省榆树市高考物理真题汇编模拟卷附答案详解【完整版】
- 2025年江苏省泰兴市高考物理真题汇编测试卷(综合题)附答案详解
- 2025年山东省莱西市高考物理学业考试考试卷(完整版)附答案详解
- 2026年河北省高碑店市高考物理强基计划考试卷含答案详解(综合题)
- 2026年云南省弥勒市高考物理三轮冲刺试卷及参考答案详解(突破训练)
- 2026年吉林省大安市高考物理一模试卷附完整答案详解【各地真题】
- 2026年山东省曲阜市高考物理真题汇编模拟卷含答案详解AB卷
- 2026年云南省香格里拉市高考物理5月学情自测模拟卷(网校专用)附答案详解
- 2025年黑龙江省肇东市高考物理二轮专题测试卷及参考答案详解(轻巧夺冠)
- 2026年江西省井冈山市高考物理一轮复习考试卷(能力提升)附答案详解
- 2026山东大学金谛文化交流中心招聘人员11人笔试备考题库及答案详解
- 2026学年甘肃省陇南市三年级数学期末深度自测实战演练题(附答案)详细答案和解析
- 2026年南充市中考文科综合试卷(含答案)
- 2026年第二季度意识形态研判报告
- 2026年陕西煎茶岭镍业有限公司社会招聘(30人)笔试参考题库及答案详解
- 《昆虫记》全阅读测试题及答案
- 2026年4月自考00538中国古代文学史(一)试题及答案含评分参考
- 【《历史地图在高中历史教学中的应用研究》17000字(论文)】
- 2026年《医用X射线诊断与介入放射学》考试复习题库(共350题)
- 2026年湖北省黄冈市八年级地理生物会考真题试卷(+答案)
- 循环流化床锅炉(CFB炉)设计计算大纲
评论
0/150
提交评论