还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
进程控制与处理机调度实验报告院系计算机与通信工程学院班级嵌入式班姓名黄星10-02媛学号541013090215printf\n当前正在运行的进程是:\n“;/*显示当前运行进程*/dispp;pr=ready;printf\n当前就绪队列状态为:\rT;/*显示就绪队列状态*/whilepr!=NULLdisppr;pr=pr-link;void destroy/*建立进程撤消函数进程运行结束,撤消进程*/printf\n进程[%d]已完成.\np-pid;freep;void running/*建立进程就绪函数进程运行时间到,置就绪状态*/p-ptime-;ifp-ptime==Odestroy;/*调用destroy函数*/elsep-pri-=3;sort;/*调用sort函数*/void main/*主函数*/int len,h=0;char ch;input;len=space;whilelen!=Oready!=NULLch=getchar;h++;printf*;printf\n现在是第%1次运行\n,h;p=ready;ready=p-link;p-link=NULL;check;running;printf\n按任意键继续……\n;printf\n\n进程已经完成.\rT;
六、心得体会通过本次实验验加深了我对于作业/进程调度功能的认识,并且更加深刻地理解了操作系统中进程调度的基本原理,使得理论知识得到的实践,也使我的编程能力得到了进一步提高
一、实验目的通过模拟进程控制方法及单处理机系统的进程调度,了解进程的结构,进程的创建与撤消,进程的组织及进程的状态及其转换,掌握进程调度策略本实验通过自行设计实现的调度程序,使同学们加深对作业/进程调度功能的理解,从而掌握操作系统的基本原理同时还可以提高同学们的编程能力
二、实验要求本实验为单机模拟进程调度算法,在程序设计时不需真正地建立线程或者进程实验模拟创建若干进程(人为输入或随机数产生),选择一种或几种单处理机的进程调度算法,本次实验采用的是优先级算法,模拟进行进程调度进程运3,行一次优先级减每进行一次调度,都打印一次运行进程、就绪队列、以及各个PCB,进程的并能在进程完成后及时撤消该进程
三、实验流程图插入就绪队列插入完成对列NULL终止Pr==ready回到调运行pri-=3Ptime-=1度开始Ptime==O
四、实验结果奴桌面*C:\Docu*ent sand Settings\user\\Debug\jc.exe请输入进程数3进程号No・l输入进程名式输入进程优先数输入进程运行时间2进程号No.2输入进程名2输入进程优先数7输入进程运行时间3进程号NO.3输入进程名3武•C:\Docu*ent sand Settings\user\^®\Debug\jc.exe*输入进程名3输入进程优先数3输入进程运行时间3;现云是萦工友运行当前正在运行的进程是进程号优先数运行次数il!112当前就绪队列状态为进程号优先数运行次数2573进程号优先数运行次数3S3S3按任意键继续I、桌面c*C:\Docuent sand Settings\user\\Debug\jc.exe*[现三是彰友运行当前正在运行的进程是进程号优先数运行次数;!181当前就绪队列状态为进程号优先数运行次数\723进程号优先数运行次数333进程已完成.]U按任意键继续……「加三至豪友杯:a当前正在运行的进程是〈桌面c*C:\Docuent sand Settings\user\\D£bug\jc.现在是第次运行3当前正在运行的进程是进程号优先数运行次数2!73当前就绪队列状态为进程号优先数运行次数333按任意键继续……现在是笫次运行4当前正在运行的进程是进程号优先数运行次数2:4!2当前就绪队列状态为:c\*C:\Docuent sand Settings\user\M®\Debug\jc.exe现在是第次运行当前正在运行的进程是进程号优先数运行次数83S-31当前就绪队列状态为进程己完成.]C3按任意键继续……;进程已经完成.Press anykey tocontinue
五、实验代码include stdio.h#include stdlib.h#include conio.h#define getpchtypetype*mallocsizeoftype struct pcb{/*定义进程控制块PCB*/int pid;int pri;int ptime;structpcb*link;}*ready=NULL,*p;typedef structpcb PCB;void sort/*建立对进程进行优先级排列函数*/PCB*first,*second;int insert=O;ifready==NULL11p-priready-pri/*优先级最大者,插入队首*/p-link=ready;ready=p;else/*进程比较优先级,插入适当的位置中*/first=ready;second=first-link;whilesecond!=NULLifp.prisecond-pri/*若插入进程比当前进程优先数大,*/{/*插入到当前进程前面*/p-link=second;first-link=p;second=NULL;insert=l;}else/*插入进程优先数最低,则插入到队尾*/first=first-link;second=second-link;ifinsert==O first-link=p;void input/*建立进程控制块函数*/int i,num;system”cls;/*清屏*/printfH\n请输入进程数:;scanf%d”,num;fori=l;i=num;i++printfn\n进程号No.%d:\nn,i;p=getpchPCB;printf\n输入进程名:;scanf”%cT,p・pid;printf\n输入进程优先数门;scanf%d,p-pri;printf\n输入进程运行时间scanf%d,p-ptime;printf\n;p-link=NULL;sort;/*调用sort函数*/}int spaceint1=0;PCB*pr=ready;whilepr!=NULLI++;pr=pr-link;returnl;void dispPCB*pr/*建立进程显示函数,用于显示当前进程*/printf\n进程号\t优先数\t运行次数\t\n;printf|%d\t,pr-pid;printf|%d\t,pr-pri;printf|%d\t\t,pr-ptime;printf\n;void check/*建立进程查看函数*/PCB*pr;。