操作系统实验报告--实验一--进程管理_第1页
操作系统实验报告--实验一--进程管理_第2页
操作系统实验报告--实验一--进程管理_第3页
操作系统实验报告--实验一--进程管理_第4页
操作系统实验报告--实验一--进程管理_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

.实验1流程管理一、目的流程调度是处理器管理的核心。此实验要求编写和调试简单的流程调度程序。通过本实验,可以理解流程控制块、流程队列的概念,了解和理解流程调度算法的具体实现方法。二、实验内容和要求1、设计进程控制块PCB的结构(PCB结构通常包含进程名称(进程ID)、进程优先级、旋转时间片、进程占用的CPU时间、进程状态以及当前队列指针等信息)。PCB结构的内容可以根据实验适当地追加删除。)。为了便于处理,程序中的进程运行时间按时间切片计算。每个进程的轮转时间和该进程必须运行的时间片数的初始值由用户指定。2、系统资源(R1.rw),w类的总数,每个类的数量为R1.是rw。n进程Pi(id,s(j,k),t),0=i=n,0=j=m,0=k=dt在运行时随机请求新资源。3、每个进程可以有三种状态(就绪状态w、运行状态r、待机或阻塞状态b),并且假定初始状态为就绪状态。设置流程准备队列。4、准备流程调度算法:时间切片旋转调度算法此程序使用此算法计划n个流程。每次运行进程时,将CPU时间片加1,从进程所需的时间片数中减去1。调度算法使用固定时间片。也就是说,每次运行进程时,执行时间片都运行了一个单位。此时,将CPU时间片加1,将进程所需的时间片数从1中减去,然后放在准备队列的末尾。三、实验环境操作系统环境:Windows系统。编程语言:C#。四、实验思想和设计1、流程图初始化流程,创建准备队列,然后阻止队列。Input()触发时钟以调用时间切片旋转调度算法。RunFcfs()执行准备好的队列中的第一个进程,以验证运行的时间片是否达到了所需的次数。到达时释放资源如果尚未到达,则运行时间切片。Running()输出有关就绪队列和阻塞队列的信息。Outputall()准备队列是空的吗?检查阻塞队列,以便当前资源数满足阻塞队列的进程从阻塞切换到就绪队列。Testblock()验证是否创建了新流程,如果可用,请验证系统资源是否足够可用,如果可用,请将其指派给该流程,以插入准备队列。如果不够,请插入阻止队列。Testnew()显示三种类型的资源状况:Rescore()结束开始是否2、主要程序代码/PCB结构Struct PCBPublic int id/进程IDPublic int ra/所需资源a的数量Public int Rb/所需资源b的数量Public int RC/所需资源c的数量Public int ntime/所需的时间片段数Public int rtime/已运行的时间片数Public char state/进程状态,w(等待),r(运行),b(阻止)/public int next;ArrayList hready=new ArrayList();ArrayList h block=new ArrayList();Random Random=new Random();/ArrayList p=new ArrayList();Int m、n、r、a、a1、b、B1、c、C1、h=0、I=1、time1 inteval/m是要模拟的进程数,n是初始化进程数/r是可以随机生成的进程数(r=m-n)/a、b、c分别是a、b和c三种类型的总资源/i城市计数,I=1.n/h是正在运行的时间片的数量,time1Inteval是时间片的大小(以毫秒为单位)/初始化进程,设置就绪数组、阻塞数组。初始化Public void input()/进程以设置就绪队列、阻止队列M=int。Parse(textBox4 .text);N=int。Parse(textBox5 .text);A=int。Parse(textBox6 .text);B=int。Parse(textBox7 .text);C=int。Parse(textBox8 .text);a1=a;B1=b;C1=c;r=m-n;time 1 inteval=int . parse(textbox 9 . text);Timer1 .Interval=time1Intevalfor(I=1);I=n;I)PCB Jincheng=new PCB();Jincheng . id=I;金城。ra=(随机。next(a)1);金城。Rb=(随机。next(b)1);jinchen . RC=(random . next(c)1);Jinchen.ntime=(random.next (1,5);阵地。rtime=0;ListBox1。Items.Add(“生成进程id:”jinchen . id);ListBox1。Items.Add(资源要求a: Jincheng . ra);ListBox1。Items.Add(所需的b资源数: Jincheng . Rb);ListBox1。Items.Add(所需c资源数: Jincheng . RC);ListBox1。Items.Add(所需的时间片数: Jincheng . ntime);if(a-jinchen . ra)=0(B- jinchen . Rb)=0(c-jinchen . RC)=0)a=a-Jincheng . ra;b=B- Jincheng . Rb;c=c-Jincheng . RC;阵地。状态=w;Hready .add(jinchen);/订阅准备队列Else阵地。状态=b;H block .add(jinchen);/订阅阻止队列ListBox1。Items.Add(“当前进程状态:”Jincheng . state);/从阵列开始位址开始输出阵列的内容Public void disp(ArrayList listArrayList list 1=new ArrayList();List1=listIf (list1 .计数0)for(int j=0);J list1 .计数;j)Pcb p=(pcb)清单1j;list box 1 . items . add( p . id . tostring() p . state . tostring() p . ra . tostring() p . Rb . tostringElseListBox1。Items.Add(rnt此队列中没有进程! r n );/输出有关准备好的数组和阻塞数组的信息Public void outputall()Listbox1.items.add ( r n=运行CPU: h . ToString()子=rListBox1。items . Add( * * * * * * * * * * * * * * * * * *有关当前准备队列的信息!* * * * * * * * *();ListBox1。Items.Add(“进程ID进程状态a资源数b资源数c资源数所需的时间片执行时间片”);disp(hready);ListBox1。items . Add( * * * * * * * * * * * * * * * * * * *当前阻止列的信息!* * * * * * * * *();ListBox1。Items.Add(“进程ID进程状态a资源数b资源数c资源要求时间片执行时间片”);disp(h block);/运行准备好的阵列的头进程,运行时间切片、旋转时间切片和时间切片旋转调度算法Public void running()ArrayList hready 1=new ArrayList();Hready1=hreadyPcb P1=新PCB();P1=(PCB)hready 10;P1 . state=R;P1 . rtime=P1 . rt me1;h=h 1;Listbox1.items.add ( r n 当前运行的进程ID为: P1 . ID r n );ListBox1。Items.Add(rn进程ID进程状态a资源数b资源数c资源数所需的时间片执行时间片 r n );listbox 1 . items . add(P1 . id P1 . state P1 . ra P1 . Rb P1 . RC P1 . ntime P1 . rtime);If (p1.ntime=p1.rtime)listbox 1 . items . add(P1 . id . tostring()”的进程已完成! r n );A=p1.raB=b p1.rbC=c p1.rchready remove at(0);ElseP1 . state=W;Hready1。add(P1);hready remove at(0);/检测当前资源数是否满足阻塞数组的进程要求Public void testblock()ArrayList h block 1=new ArrayList();Hblock1=hblockfor(int m=0);M hblock1。计数;m)Pcb P1=新PCB();P1=(PCB)h block 1m;if(a-P1 . ra=0)(B- P1 . Rb=0)(c-P1 . RC=0)P1 . state=W;Hready .add(P1);a=a-P1 . ra;b=B- P1 . Rb;c=c-P1 . RC;Listbox1.ite

温馨提示

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

评论

0/150

提交评论