操作系统实验2进程调度 实验报告

上传人:仙*** 文档编号:167698607 上传时间:2022-11-04 格式:DOCX 页数:10 大小:128.75KB
返回 下载 相关 举报
操作系统实验2进程调度 实验报告_第1页
第1页 / 共10页
操作系统实验2进程调度 实验报告_第2页
第2页 / 共10页
操作系统实验2进程调度 实验报告_第3页
第3页 / 共10页
点击查看更多>>
资源描述
人佛山科学技术学院实验报告课程名称操作系统原理实验项目实验二-进程调度实验讲义专业班级_姓名学号指导教师 成绩 日期一、实验目的通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算 法的理解。(1)掌握时间片轮换的进程调度算法;(2)掌握带优先级的进程调度算法;(3)选用面向对象的编程方法。二、实验内容;(1)用C语言(或其它语言,如Java)实现对N个进程采用动态优先调度算法的调度。(2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段:进程标识数ID。进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。进程已占用CPU时间CPUTIME。进程还需占用的CPU时间ALLTIMEo当进程运行完毕时,ALLTIME变为0。进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进入阻塞状态。进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将转换成就绪状态。进程状态STATE o队列指针NEXT,用来将PCB排成队列。(3)优先数改变的原则:可以采用以下方法的任一种:(a)进程在就绪队列中呆一个时间片,优先数增加1o进程每运行一个时间片,优先数减3o(b)进程在就绪队列中呆一个时间片,优先数增加3o进程每运行一个时间片,优先数除以2。(4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行 的进程,处于就绪队列中的进程和处于阻塞队列中的进程。(5)用户可以干预进程的运行状态,程序应该设置可以让用户中断的入口,并可以通过以下命令查看,修 改,终止进程。A)create随机创建进程,进程的优先级与所需要的时间片随机决定;B)ps查看当前进程状态C)sleep命令将进程挂起D)kill命令杀死进程E)quit命令退出(5)分析程序运行的结果,谈一下自己的认识。三、实验原理;无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。 另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就 绪队列中的某一个进程,以使之执行。根据进程的五个特征:(1)动态性;(2)并发性;(3)异步性;(4)独立性;(5)结构性及三种基本状态的转换, 了解各进程对资源的共享和竞争。进程并发执行时,由于资源共享,带来各进程之间的相互制约。为了反映这 些制约关系和资源共享关系,在创建一个进程时,应首先创建其PCB,然后才能根据PCB中信息对进程实施 有效的管理和控制。当一个进程完成其功能之后,系统则最后释放PCB,进程也随之消亡。最简单最直观的进程调度策略是基于优先级的调度,多数实时系统采用基于优先级的调度,每个进程根据它重 要程度的不同被赋予不同的优先级,调度器在每次调度时,总选择优先级最高的进程开始执行四、实验步骤;1. 随机生成几个处在就绪队列的进程;2. 在就绪队列中选择优先权最高的进程;3. 每运行一个时间片后更新运行进程、就绪队列和阻塞队列的状态,判断是否需要进行变换;4. 可动态添加、删除进程;5. 完成所有进程操作。五、程序源代码及注释实验2进程调度return:void Destrortjuue(Queii *Q)( rtile(Q-front) (Q-raaT=Q-frDnt-MEXT;Q-frojit=Q-*43* :return :Pct创廷尹晦机和蚂化若运程int Enqueue (Queue *Q; PCB *pcb) (QNode *)q&119C(sx zeof (QXodG); p-pub=pcb;if ( !d) return 0;d-ext=null:Q-rsar-NEXT=D:Q-*92TF;Q-Q_nun-:return 1:队列牛剂隐指定id夫素nt DeQueue (Queue 点Q, int d) (QNode *a. *s;if (食-fMmt=Q-mar printf 3。; return 。;a=Qfront;s=a-NEXr;for(;a-XEXT!=NULL:axa-NEXT)(i f (a-EXT-pb-IB=id) 5=3-NEST;i f .5=Sxear J(Q-rear=a:a-NEXT=s-NEXr; free(s);include inc lude ?includQ ?includQ inoiuastypedef struct. PCB (int ID;避程标识3ft ID.int PRIORITY:建程伐完轰PRXR1TY.尹姓定任先桑巷大时住涅.苴杭先姣巷尊.int. CPUTIME ;方注程已吕.号 CPU 的间CPUTI3E.int ALLTIME ; 甦理还需M用的CPU的同 ALLTZME.当W程运气充举时,ALLTW交为6 int STAETELXK;/走程的恒言时间 STARIELCCK.表示当W巷再运行STARTELXK个时间片后,W巷君走入 隈塞状态.int ELCCKTIME;的打间 ELO-CKri3E.表示已匾氢的遂程再与待玖火KTIME个时间片后.骂哭 性或垃空状恋int. STATESTATE. 0 代表致行.1 代表爰活.2代表区室 PCE:typedef struct. QMode(PCB *pcb;struct QMode *NEXT;QMode;typsdsf struct. Qususmt Q_nua;QNod蜡 *frQnt;QMode *rear:Queue;int Dro_nua=O;/i*的总个敛PCE t.enp_PCE;PCB bast:展款绝队列中选务的毂伐逐程QNode如昌兴机LREADY次七BLOCK:匣戛供、列void In it Queue (Suene (Q-fxont=Q-r ear= 5KoSe*! nalloc .si zeof (Jode):if ( !q-frgt) et (-1);Q- fxont-NEXT=Sq_nu3=0;:if(Q_READF- q_nus=O!return L;iMf (就免眼列中尚无说程皿二;rstuxn;父匾室中选斧匾室国间为0的矣出鼠列void SQlect.FrxiJLCa0 (QMods *a? *t$SD;*::,tsn.D=a=Q_EL4XK- front:printf (ge依袂物虹绥史宣富袂钮R翊k*徐攻*敦攵兑维义义钮知tn);。苴nH(从匾惠&L列中法务W程到致竖底列二/); f (QBL 0:E- q_nu3=0:printfCFSg队刿中尚无七程皿);return;for(5=tenD-NEXT;a-NEXT !=MULL: a=a-NEXT)if(3-NEXT-DC-b-BLCCKr:3E=:i( tnp=a:s=tezp-?iEXT;if (C_5L*XK-*s&r=g)Q_BLCC K-rear=*te=p:tespP*CB= (PCS *j zall-oc. size of (PCE .: : ZZ 从匾戛成列奘珍京度渔队列中te2p_PCE-ID=5-pcb-ID;t e 2p_PCE-PRI 0EZTY=s -pcl)- PRIORITY;t i 2P.PCE-XFU I != s- R 6-C PUTZ1E;t x sp_PCE-ALL T iffi= s- pcb-ALLT:lE;t i r_PST AETELOC K=m () 94 L,食话设豆 STARTELOCKt e np_PCE-ELOCM DIEz 0:tQnp_PCE-STATE=l:/标记为我建队列EhQiiguq (QJ?EADT tER.FCB);ts=p-NEKT=s-?EXT:Q_BLOCK*Q_nus:free front:for(s=t eno-挥EXT: a-XEXT!=NULL: 3=a-以EXT)if(a-NET-peb-PRIORITYte=D-iEXr-peb-P RIORITY) teap=a;5=tenp-NIEXT;xf(*Q_REr-rear=sjQ_RE AD Y-r e ar = te=p;best. ID=s-pcb-ID;b药 t. PR ICRITY= -pcb-PR IORITY;best. CPUTD(E=5-pcb-X:PUTIME:best. ALLTD(E=5-pcb-ALLTIME:best. STARTELaCK=5rpcb-SrARTELXK;best. EL*XKTDE=s-DCtrEL0Cn3CE;bast. STATEzs-pclrSTATE :tMj-NEXT=3- ?EXT:Q_RIADY-q_nua:free(s):从盐绻队列中洗多景尊和次杭骸.设豆STARTrZiEvoid Sst_Es:5t_Sscand_Start () QXods *t=3p_f irst: *tap_5GQJid *a;Xnt fa: fb: n=0;a=Q_BEADY- front;if (Q.READY- Q_nun=0 .:fNintf (款活队列T尚无法蜜jT):*sturn:)if(Q_RE ADE- q_nxi3=l)a-KEST-pcb-SrASrBLO:K=a-NErr-pcV-ALiri炷;/立果盐绪冽中只宥二个注蚤 则设豆为乩LT*forir5t=te=p_5ec-OT3=a-ST ;a-SXTI =NULL;a=a-HEXr)(if(a-?JEXT-pcb-PRIOEin=teaD_fir5t-DC-b-PRIORITY)t &sd.PC B-STAR-TBLC*CK=be51. STARTBLOCK;t enp_s e cond=t e3p_f r st;t enp_PCE-BLCKT ZMEzbest. BLOCKTDE:tenp_f irst=a- NEXT;tenp_PCE-SrATE=l;Enqueue(Q_RE.DY. Mr_PCB);fa=tp_fixst-pcb-PRICRirY;fb=tenp_5econd-pcb APRIORITY;elsewhiletf a=fbfrojit-EXT:tea.p_frst-pc b-STA.RTBLOCK=n:for(:a! SULL: a=a-NEXT a-pcb-PRIORITY-;/灵若W程状态函苏void Change 0 对家给做到中每个炬程到既是芍给耒*a;a=_EEAC,x-frQt-:EXT ;.mt teap_id1;for(;a! =NULL; a=a-:EXTif(b5t.ID!-l)V7对运行送程老行场改best. CPUTDE;坡丸 CPU时间if (a-DCbALLTIME=O) (bGSt. ALLT3E-;逢程总时间政少t 史 D_i dn-。ID ;:best. PRIORin=bast. PRICirY-3:Dequeue (Q.READY, 二d):best. STARTBLOCK:P*-o_nua:if (best. ALLTIME! =0) 如果的间片还没月完if (best. STARTELXE=O 询果对程需printfC当首适行注建需法入晅塞队刿对匿塞鼠列中信息灵改nr);a=?_BLCCK-front-NEXTt enp_PCE=(PCBaalloc (siz eof(PCB);for (;a!=NULL; a=a-NEXTtgp_PCE-XD=b3t.ZD;a-pcb-BLCT3ffi;tenD_PCE-PRI0RITY=be5t. PRIORITY;Niirtf (更折走程信息完成切勺:t enp_PCE-X:PUTDE=be st. CPU TIME:t QD_PCE-ALLTDE=be st.ALLTIME;)t god.P CE-STAETELCa=O:劫出渥程借息函敛t GnD_PCE-ELCCKT3E=TandO *101:void Print()*5_PCE-STATE=2:QMo4e *&:Enqueue (Q_BLCK 足r_PCB):printf (二二=-D ):else 否则受入鼬给我恣。苴rtf (当部冠总个釜:W。pxo.nuoj ;t enp_PCE=(PCBaalloc (siz eof(PCB);prlutf (零给列):JREADY-unuaJ ;t enp_PCE-ID=-best. ID;a=? _RE A DY- front -NEXTtenD_PCE-PRI0RITY=be5t. PRIORITY;if(a!=NULL)t enp_PCE-X:PUTDfE=be st. CPU TIME:t enD_PCE-ALLTD!E=be st.ALLTDfE:Drintf CH) PIRORITT CFUTIME ALLTIMESTAJTEL*OCK ELCCKT3E STATErT): f-orC;a! =NTLL: a=a-ME5T)(XintfC*短d2d42d%2d a-peb-ID. a-cb-JPRI-ORirY. a-peb-XPUTIUE? a-pc b-ALLTBffi:printff关 2dn,a-pc-b-STARTEbOCT; a-pcb-BLO:KT3fE; a-pcb-ST ATE);printprintf (EE室队列仪d) n,Q_BL0*CK-q_nu2L: a=*S_5LCa-?front -NEXT;if (a!=NULL) (printfriD PIROfilTY CPUTIME ALLTUCE STAJTEL*XK ELCCKT3E STATErT):f-orC;a! =NTLL: a=a-M5T)(XintfC*短d2d42d%2d a-peb-ID. a-cb-JPRI-ORirY. a-peb-XPUTIUE? a-pc b-ALLTBffi:printf C耘 d%2d:a-pcl)-STARTBLCCK. a-pcb-BLOCKTIKE. a-pcb-ST ATE); print :)printf C= ) WHWMVWMV. J ./正在运行的遂忌景作函袤void Pro.RLNO (if (b&st. ZD=1)“Mtf T当查无可孰行的W程k/):return ;)pr intf (当t?时间片大运咛淀遑W ;printfCHS PZR-ORITY CPUTBIE ALLTZMI STARTBLOCK BLOCET:1E STATE n勺:printf *%2d 耘d -2d%2d: best. ID. -best. PRIORITY.best. CPUTIME;best. ALLTISE?;print fC%2iX2d S2d1*:bsst. STAKTELC-2S:-b5t. 5LXKTIJE: bsst. STATE?;%= =二二华眺分副绶void sain() (int a:charSelect xon 4. .S. = (create *ps *.*qut;char cho-os&l 10.;int chooseZ;best. ID1;Q_FEADY=(Quus *)zallQC (QguE);拧勘始 化就备,晅窘京列Q_ELOCK= (Queue *) aallo c(5izeof CQueue):InitQneue(QJ?EADY):InitQeue(5JL0CK:i ;pxo_n-ua=5:/rand nunbexprint f厂初始化W迳个数:m: pro_nuai:f or (int i=3; iID=i:t enp_P*CE-PRIORITY=r-and 0 英9 慝机设迓t enp_PCB-XPUT 3(E=0;tenp-PCB-ALLT3E=randO %4-l;tWH_PB-STHnELXK=。;/开始为 0;拿貌 绝队列中炭含优完校底次高位先杖比皎童空t enp.PCB-BLCCCT DCE=O:tenp_PCB-STATE=l;EnQueue (*S_READYf tenp项CB):rtile(Dro_niEi!=0j Sst.Est_S ec&nd_S tart 0 :/ J设五款樊氐列中 曼高伉形权魇次高伉完权菌5t a-t ti=fePrint ();Select.Fxon.READY0列中艺孝与:伉生彰尹生咛相关崇作Pm.R贝():正在运W渲程壕作改戋哥自注程状态Print E。的走入就绪叭列Print#*林* * 革w琮理w、*理琮普球*、a );FTlDtf /*1-原机创近善冠(U萸让*;2.查等当前善程意忘-*):if .stTtnr .对m韭 Ew二MionZ:; =0;/束死遂程rrintf (rt 5.骷咎杀花是卷(kiW *4.命咨iB出(S t -1 ,家工);i f .?-S-ueuG :q_EAnY. C1idoeb2); rzzntfC 三鼠发蜷队列中二一隆pziDtf (r*-5.不执蚱择作(r.z.nE -二*5 ;室娅Hgc妣妣却*妣妣电CH律宝京妣市菖京童n rA DbooEEiS );BLES if(BeuE-ue(q_EL ciooEe2 gntfK相已从咀言瓯列中刑除nrj c;tipg2;y:M泮粗牌丰杵杵村科*杵柱杵杵杵*,*);izarf .峰 W。 ScbooE el tctioZISEb&SEB2 :t. ezip_PCB-PF. I0E.17=zsn d ()庙机bLeeif Cs txecu (chooEElL SeLectio口 3_. =0)J/由t ecip_F CE- XIPUT MfcO;t ecip_F CE- AJ_LTrMfcra=nd 0 实L;p上砒M惺出程序牝);teap_F CE- 蛹 TE WF;EEltf.-J ;t eap_FC-EL0CKrLME=3;traD_PCE-STATE=l;En饥迎歪MYt ea.PCBl ;/新钊速的f flush(5t sin):善程跳入就缮俄列丁 2_nuni:f EtlEXhD&EEl, SEl-iEtifinZll =口;/夸歪W程Pr=_RUN0 ;PTLEtf (所有魏*柜羌或/iT);六、实验结果分析1、运行结果如下当前时间片内运行进程IP PIBORITV CPUTIftE ILLUME: STARIBLOCK BLOCKTIKE STATE 35132 iflLLIJME3:挡忌个数次POKIH CPOTinE80STftKIBLMJH B1OCJHI1HE 8TBIE36 i土查看当前进程忱割畔1也命号退出-1怛塞队列0 IP FIEOEII CPIJimEfiLLIllMESIfiMBLaCJK BLOCH I MIE TAIfi662一一凭吼列3)IB PI TORI TV cron HE Mill MEETfimBLCKK ELOCKTIHE ETfllEE阻空队列IEFl MEI TV CPUTITHEAUT1MESTfUKrOLOClK BLOCITIMIEETffiTE-none -1阻塞队列当前时间片内运行进程ID PIRORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE阻塞卧、列t 1 -随机创建进程* 3 .命令钢进程kill *f 5.不执行操作当前进程总个数:4就绪成列ID PIRORITV CPUTIME ALLTIME STARTBLOCK BLOCKTI ME STATE当前进程总个数W就绪成列ID PIRORITV CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE阻塞队列E当前时间片内运行进程ID PIRORITV CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATE阻塞队列E1-随机创建进程S-不执行操作none -1料邮汐T:当前进程总个数=3就绪队列ID PIRORITV CPUTIME ALLTIME STARTBLOGK BLOCKTIME STATE当前进程总个数:2就绪队列3ID PIRORITV CPUTIMEALLTIME STARTBLOGK BLOCKTIME STATE2、结果分析首先,每次从就绪队列中选择最高优先权的进程时,需要计算出最高优先权和次高优先权之间的 STARTBLOCK即最高优先权进程运行多少个时间片后就会进入阻塞队列。每调度一次,就需要更新所有进程 的信息,并判断CPUTIME是否等于ALLTIME,如果相等,则进程完成操作,需从就绪队列中删除。如果阻塞 队列中进程的BLOCKTIME为0时,还需要将其转移到就绪队列中。七、实验心得体会通过了这次实验,我了解了进程调度的用法。实验的开始,我对于调度的还不懂,所以遇到了一点问题, 幸好通过了老师的解说才得以解决。我相信,这次实验可以让自己在操作系统的进程调度有了更好的掌握。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!