操作系统-实验一-进程管理.doc

操作系统-实验一-进程管理.doc

ID:56051327

大小:145.50 KB

页数:8页

时间:2020-06-19

操作系统-实验一-进程管理.doc_第1页
操作系统-实验一-进程管理.doc_第2页
操作系统-实验一-进程管理.doc_第3页
操作系统-实验一-进程管理.doc_第4页
操作系统-实验一-进程管理.doc_第5页
资源描述:

《操作系统-实验一-进程管理.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、昆明理工大学信息工程与自动化学院学生实验报告(2010—2011学年第二学期)课程名称:操作系统开课实验室:计算机中心2042010年04月20日专业、年级、班学号姓名成绩实验项目名称进程管理指导教师教师评语教师签名:年月日注:报告内容按实验须知中七点要求进行。一、实验目的:运用优先权法和轮转法来模拟进程的控制,掌握进程的状态转换、进程的整个控制工作。二、实验原理及基本技术路线图(方框原理图):实验原理:用C语言或C++语言开发。需要定义PCB的数据结构,用链表的形式管理进程,采用多级反馈队列调度的算法模拟进

2、程的控制。要求有创建、撤销、调度、阻塞、唤醒进程等功能。输出当前队列信息基本技术路线图:开始输入进程数n输入进程信息设置3个优先级队列将不同优先级的进程依次插入不同队列Ch>nCh=y或n不打印Ch=y调用run函数,没运行过一次,将优先级降低,插入下一队列中,若所需时间为0,则释放空间否结束是结束若三个优先级队列为空三、所用仪器、材料(设备名称、型号、规格等):VC++6.0。四、实验方法、步骤:源程序:#include"stdio.h"#include#include

3、#definegetpch(type)(type*)malloc(sizeof(type))#defineNULL0structpcb{/*定义进程控制块PCB*/charname[10];charstate;intsuper;intntime;intrtime;intretime;intjsuper;//静态优先级structpcb*link;}*ready=NULL,*p;typedefstructpcbPCB;sort()/*建立对进程进行优先级排列函数*/{PCB*first,*second;inti

4、nsert=0;if((ready==NULL)

5、

6、((p->super)>(ready->super)))/*优先级最大者,插入队首*/{p->link=ready;ready=p;}else/*进程比较优先级,插入适当的位置中*/{first=ready;second=first->link;while(second!=NULL){if((p->super)>(second->super))/*若插入进程比当前进程优先数大,*/{/*插入到当前进程前面*/p->link=second;first->lin

7、k=p;second=NULL;insert=1;}else/*插入进程优先数最低,则插入到队尾*/{first=first->link;second=second->link;}}if(insert==0)first->link=p;}}input()/*建立进程控制块函数*/{inti,num=5;//有5个进程for(i=0;iname);

8、printf("输入进程静态优先数:");scanf("%d",&p->jsuper);p->retime=i;printf("输入进程运行时间:");scanf("%d",&p->ntime);p->super=(p->jsuper-(p->ntime+p->retime))+10;//使优先级不为负数printf("");p->rtime=0;p->state='w';p->link=NULL;sort();/*调用sort函数*/}}intspace(){intl=0;PCB*pr=read

9、y;while(pr!=NULL){l++;pr=pr->link;}return(l);}disp(PCB*pr)/*建立进程显示函数,用于显示当前进程*/{printf("进程名t状态t动态优先级t静态优先级tNeedtimetRuntimetRStime");//不好打印就只能将就了哈printf("

10、%st",pr->name);printf("

11、%ct",pr->state);printf("

12、%dtt",pr->super);printf("

13、%dtt",pr->j

14、super);printf("

15、%dtt",pr->ntime);printf("

16、%dt",pr->rtime);printf("

17、%d",pr->retime);printf("");}check()/*建立进程查看函数*/{PCB*pr;printf("****当前正在运行的进程是:%s",p->name);/*显示当前运行进程*/disp(p);pr=ready;printf(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。