《进程控制实验报告.docx》由会员分享,可在线阅读,更多相关《进程控制实验报告.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、进程控制与处理机调度实验报告院系:计算机与通信工程学院班级:嵌入式10-02班 姓名:黄星媛 学号:541013090215printf(n当前正在运行的进程是:n“); /*显示当前运行进程*/disp(p);pr=ready;printf(n当前就绪队列状态为:rT); /*显示就绪队列状态*/while(pr!=NULL)(disp(pr);pr=pr-link;)void destroy。/*建立进程撤消函数(进程运行结束,撤消进程)*/(printf(n 进程%d已完成.n)p-pid);free(p);)void running()/*建立进程就绪函数(进程运行时间到,置就绪状态*
2、/(p-ptime)-;if(p-ptime=O)destroy(); /* 调用 destroy 函数*/else(p-pri)-=3;sort。;/*调用 sort 函数*/ void main。/*主函数*/(int len,h=0;char ch;input();len=space();while(len!=O)&(ready!=NULL)(ch=getchar();h+;printf(*);printf(n现在是第(1次运行:n,h);p=ready;ready=p-link;p-link=NULL;check();running();printf(n按任意键继续n);)printf
3、(nn进程已经完成.rT);)六、心得体会通过本次实验验加深了我对于作业/进程调度功能的认识,并且更加深 刻地理解了操作系统中进程调度的基本原理,使得理论知识得到的实践,也 使我的编程能力得到了进一步提高。一、 实验目的通过模拟进程控制方法及单处理机系统的进程调度,了解进程的结构, 进程的创建与撤消,进程的组织及进程的状态及其转换,掌握进程调度策略。 本实验通过自行设计实现的调度程序,使同学们加深对作业/进程调度功能 的理解,从而掌握操作系统的基本原理。同时还可以提高同学们的编程能力。二、 实验要求本实验为单机模拟进程调度算法,在程序设计时不需真正地建立线程或 者进程。实验模拟创建若干进程(人
4、为输入或随机数产生),选择一种或几 种单处理机的进程调度算法,本次实验采用的是优先级算法,模拟进行进程 调度。进程运行一次优先级减3,每进行一次调度,都打印一次运行进程、 就绪队列、以及各个进程的PCB,并能在进程完成后及时撤消该进程。三、实验流程图NULL终止Pr=ready回 到 调 度 开 始运行 pri-=3Ptime-=1Ptime=O插入就绪队列插入完成对列四、实验结果奴 *C: Docu*ent s and Sett ingsuser桌面Debugjc. exe请输入进程数:3进程号Nol:输入进程名式 输入进程优先数输入进程运行时间:2进程号No.2:输入进程名:2输入进程优先
5、数:7输入进程运行时间:3进程号No.3:输入进程名:3武 C: Docu*ent s and Sett ingsuserDebugjc. exe*输入进程名:3输入进程优先数:3输入进程运行时间:3;现云是萦工友运行:当前正在运行的进程是:进程号优先数运行次数il !11:2当前就绪队列状态为:进程号优先数运行次数:257:3进程号优先数运行次数:3S3S3I按任意键继续c、*C: Docuent s and Sett ingsuser桌面Debugjc. exe*现三是彰友运行:当前正在运行的进程是:进程号优先数运行次数!1:8;1当前就绪队列状态为:进程号优先数运行次数:27:3进程号优
6、先数运行次数:3:3:3进程U已完成.按任意键继续加三至豪友a杯:当前正在运行的进程是:c *C: Docuent s and Sett ingsuser桌面Dbugjc.现在是第3次运行:当前正在运行的进程是:进程号优先数运行次数:2!7:3当前就绪队列状态为:进程号优先数运行次数:3:3:3按任意键继续现在是笫4次运行:当前正在运行的进程是:进程号优先数运行次数:2:4!2当前就绪队列状态为:c *C: Docuent s and Sett ingsuserMDebugjc. exe现在是第8次运行: 当前正在运行的进程是: 进程号优先数运行次数 :3S-3:1当前就绪队列状态为: 进程C
7、3己完成.按任意键继续 ;进程已经完成.Press any key to continue五、实验代码include stdio.h#include #include #define getpch(type) (type*)malloc(sizeof(type) struct pcb /*定义进程控制块PCB */int pid;int pri;int ptime;struct pcb* link;*ready=NULL,*p;typedef struct pcb PCB;void sort() /*建立对进程进行优先级排列函数*/PCB *first, *second;int insert=
8、O;if(ready=NULL) 11 (p-pri)(ready-pri) /*优先级最大者,插入队首*/(p-link=ready;ready=p;)else/*进程比较优先级,插入适当的位置中*/(first=ready;second=first-link;while(second!=NULL)(if(p.pri)(second-pri) /*若插入进程比当前进程优先数大,*/*插入到当前进程前面*/p-link=second;first-link=p;second=NULL;insert=l;else/*插入进程优先数最低,则插入到队尾*/(first=first-link;secon
9、d=second-link;if(insert=O) first-link=p;)void input()/*建立进程控制块函数*/(int i,num;system(”cls); /*清屏*/printf(Hn请输入进程数:);scanf(%d”,&num);for(i=l;ipid);printf(n输入进程优先数门; scanf(%d,&p-pri);printf(n输入进程运行时间 scanf(%d,&p-ptime);printf(n);p-link=NULL;sort。;/* 调用 sort 函数*/int space()int 1=0;PCB* pr=ready;while(pr!=NULL)(I+;pr=pr-link;)return(l);)void disp(PCB * pr) /*建立进程显示函数,用于显示当前进程*/ (printf(n进程号t优先数t运行次数tn);printf( | %dt,pr-pid);printf( | %dt,pr-pri);printf( | %dtt,pr-ptime);printf(n);)void check() /*建立进程查看函数*/PCB* pr;