《操作系统实验报告--实验一--进程管理.doc》由会员分享,可在线阅读,更多相关《操作系统实验报告--实验一--进程管理.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验一 进程管理一、目得进程调度就是处理机管理得核心内容。本实验要求编写与调试一个简单得进程调度程序。通过本实验加深理解有关进程控制块、进程队列得概念,并体会与了解进程调度算法得具体实施办法。二、实验内容及要求1、设计进程控制块PCB得结构(CB结构通常包括以下信息:进程名(进程I)、进程优先数、轮转时间片、进程所占用得CU时间、进程得状态、当前队列指针等.可根据实验得不同,PC结构得内容可以作适当得增删)。为了便于处理,程序中得某进程运行时间以时间片为单位计算。各进程得轮转时间数以及进程需运行得时间片数得初始值均由用户给定。、系统资源(r),共有类,每类数目为r1rw。随机产生进程Pi(id
2、,(j,),),0=in,0=j=,0=k 0 (b jncng、r) 0(c- jincheng、c) 0) a = a- jiheng、ra; =b jinhng、rb; c= incheng、rc; incn、state W; hready、Ad(jincen);/加入就绪队列 lse jinceg、state ; blo、Ad(ichen);/加入阻塞队列 listBx1、Ies、Add(”当前进程状态:” + incheng、sae); /从数组起始地址开始输出该数组得内容publc void dis(ArayLi list) ArayList lit= newArryList();
3、 ist1 = list; (lis1、Cou 0) for (intj0; it1、Count; +) pcb p= (pc)t1; isBox1、Ies、Ad( p、id、oSting()+ +p、state、ToStin() + ” + p、r、ToString() + +、b、otring()+ ” p、rc、ToStrg()+” ” p、time、String() ” 、rtim、oString()+ rn”); ls isBox1、Itms、(”rn 该队列中没有进程!r); /输出就绪数组与阻塞数组得信息publi vidutpal() lisox1、tem、Add(”rn=PU
4、运行了:”+ h、Totrng()+ 次=r); lisBox、Iem、Add(*当前就绪队列得信息!*); lisBox1、Items、Ad(进程ID进程状态A资源数 B资源数 C资源数所需时间片 已运行时间片”); disp(hreay); lisBo、Its、A(*当前就阻塞列得信息!*); ltBox1、Ites、Add(”进程D进程状态 A资源数B资源数C资源 所需时间片 已运行时间片); dip(hbl); /运行就绪数组得头进程,运行一个时间片,轮转一个时间片,时间片轮转调度算法pulid rnni() Arrayist eady1 =nw Arrist(); hredy = h
5、read; p p1 =new pcb(); 1=(cb)hrady10; p1、sate; p、rte= p、me + ; h=+1; lisBox1、tem、Add(”rn当前正在运行进程D就是: +p、id + rn); lisBo1、Ims、Ad(rn进程ID进程状态 A资源数 资源数 C资源数所需时间片 已运行时间片rn”); lisB1、Items、Ad(p、d +” p1、stat+ p1、a+ + p1、r+ ” +p、rc+ + p1、ntie + + p1、rtme); i (p、ntime=1、rte) listBox1、Iems、Add(p、d、ToString()+”
6、得进程已经完成!rn”); a=a + p、ra; b= +1、rb; c + 1、rc; hready、oeAt(0); s 1、stae=W; hready、dd(p1); red、Removet(0); /检测当前资源数目就是否满足阻塞数组里进程得需求publi void tstblck() Arrayt hck=ne Arait(); hblk1 hblo; for (t = 0; hblock1、Cunt;m+) p p1 = new pcb(); p1 = (pcb)hblok; f (a p1、ra = 0) & (b- 1、r =0) & (c - p、rc = 0)) p1、
7、tae; hed、Ad(1); a =a - 1、ra; b = b - p1、b; c - p1、r; listBox、Items、Add(”ID号为:+p1、d + 得进程由阻塞队列转入就绪队列r); hbloc、eoveAt(m); m-; /检测就是否有新得进程产生,随机产生新进程ublic voidestnew() int ; if (r0)/为随机产生得进程数目 t = radom、Next()+ 1; if(t = 7) lstBx1、e、d(n有新得进程申请加入:); pcbjinceng ewcb(); incheng、id = i+; inchen、r (radom、ext
8、(a) + 1); jinhng、rb= (ranm、Next(b)+1); jnheg、c (rndm、Next(c) ); jinchen、nime = (radom、Next(1, 5)); iceng、tm ; istox1、Items、dd(”产生进程I: +jinchng、id); listx1、ems、(所需资源数目: + jinch、ra); isBox1、Ies、Ad(”所需B资源数目:” +iheng、b); listox1、tms、d(”所需C资源数目: cng、rc); listBx1、tes、Add(”所需时间片数: + jincheng、time); f((a- j
9、icheng、ra) 0 &(b jnchen、rb) = (c -jincn、rc) = 0) a =a jinchg、a; b = jinheg、rb; c c - incheg、r; incheg、state = ; Box1、Items、d(进程状态为:” +cheg、stae); hreay、Add(jheng);/加入就绪队列 isBox1、Iems、Add(”资源满足新进程请求,该进程进入就绪队列rn); else incheng、sate = ; hblok、Ad(inceng);/加入阻塞队列 lisBox1、Item、Add(进程状态为: + inchn、stae); li
10、stBo1、tem、dd(”资源不满足新进程请求,该进程进入阻塞队列r); r 1; /系统三类资源变化情况得显示ubic voidrescor()/系统三类资源变化情况得显示 f (a a1) textBo1、Txt = a1、ToStri(); if (a 0) etox1、Text ”; i( = 0 &a 1) texB1、et = 、ToStrin(); if (b b1)textx2、Tex = 1、ToStrin(); i (b 0) textB2、Txt =”; f (b 0 & = b1) extox、ext b、Ttrig(); i(c c) extBox、Tet c1、o
11、Srin(); if(c0) textox3、ext = ”0”; if (c 0 & c c1) txtBox3、Text = 、otrg(); /时间片轮转调度算法(先来先服务FCFS算法)ublic vo unFcs() if (hrady、Cut0) otputall(); ing(); tesblok(); esnew(); rescore(); ese tier1、Ealed = flse; extBo、Text = a1、oStrin(); extBo2、t b、oStri(); textBox3、e = c1、oStrig(); litBox1、Iems、d(rnr”); /计
12、时器触发时间片轮转调度算法piate vi timer1_Tc(objet seder, EventAr e) ncfs();/开始模拟按钮单击执行函数rivat o buton1_Cic(ojectsener, EventArge) ai(); btton1、Eabe = false; texBox、Enabed =ale; xBox2、Enl false; textBox3、Eabled fle; teox4、ble false; textBx、be = flse; texox6、nabled = le; ttBox7、Enabled as; etBox8、Enabld =fale; te
13、tBox9、Enabled= flse; 清除屏幕按钮单击执行函数pivat vd btton2_lic(object sender,vens e) exBox1、Text =; txtBox2、ext= ”; extx3、ext =”; textx4、Txt ; ttBox5、Text ”; tetBx6、Txt =”; txtx7、Tex ”; exBx8、et =; tex9、Te = ; listox1、Items、lar(); txBox4、Eble = tru; tetBox5、Enable= true; xtBx6、Eabled = tr; textx7、Eabl = tru;
14、texBox8、Enabd te; xBox9、abedrue; buto1、Enabled =true; /运行得主函数pulic oid unman() in();mer1、Enabled = tue;3、运行界面与运行结果界面中,可以任意设定需要模拟得进程总数(如),初始化进程个数(如),还有、B、C三类资源得总数(如1、10、1)。为了方便显示,还可以设定时间片得长度(如500毫秒)。除此之外,在运行过程中,所有得资源都就是随机生成得,并且其中新进程得产生也就是随机得,但就是产生得进程总数不会多于开始设定得模拟得进程总数,以防止不断产生新进程,程序不断运行。在显示窗口得上方,还会实时显
15、示资源得变化情况,方便对运行得观察。当运行结束后,可以通过工具栏中得显示选项中得保存结果按钮,将结果保存成txt文件格式,方便运行后得结果分析。五、心得体会本次实验,我得任务就是设计一个允许n个进程并发运行得进程管理模拟系统。该系统包括有简单得进程控制、同步与通讯机构,系统在运行过程中能显示各进程得状态及有关参数得变化情况,从而观察诸进程得运行过程及系统得管理过程,我就是用C写得,在我得电脑能够运行通过,虽不能尽善尽美,但也基本能实现老师得要求。两个星期得实验,虽然时间有点短,但我也收获不少,这次实验,加深了我对进程概念及进程管理得理解;比较熟悉进程管理中主要数据结构得设计及进程调度算法、进程控制机构、同步机构及通讯机构得实施.也让我认识到自己得不足,操作系统得有些知识,我知道得还不多,没有掌握好,还需要多多学学,不断提升自己得能力。实验中,我们小组分工合作,共同学习,虽然在实验中遇到了一些问题,但在老师与同学得细心指导与热心帮助下解决了。同时,了解到团队精神得重要性,也为以后得学习与工作打下了坚实得基础,同时积累了宝贵得经验。
限制150内