欢迎来到天天文库
浏览记录
ID:58482340
大小:130.00 KB
页数:14页
时间:2020-05-16
《进程管理实验报告昆工.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、昆明理工大学信息工程与自动化学院学生实验报告(2011—2012学年第二学期)课程名称:操作系统开课实验室:4442012年4月10日年级、专业、班10级计科103班学号2姓名成绩实验项目名称进程管理指导教师杨云飞教师评语教师签名:年月日一、实验目的通过编写进程管理的算法,要求学生掌握整个进程管理的各个环节,进程的数据结构描述,进程的各种状态之间的转换,以及进程的调度算法。以加深对进程的概念及进程调度算法的理解,并且提高链表的应用能力,达到提高编程能力的目的。二、实验原理及基本技术路线图(方框原理图)用C语言或C++语言开发。需要定义PCB的
2、数据结构,用链表的形式管理进程,采用多级反馈队列调度的算法模拟进程的控制。要求有创建、撤销、调度、阻塞、唤醒进程等功能。状态转换图:执行进程,在规定时间内,未执行完,则进入下一链表尾部,进行等待就绪队列准备进入内存执行完毕输出重复执行,直至为空,则执行下一链表各原语的功能说明:#include标准输入输出头文件#includestdlib.h里面定义了五种类型、一些宏和通用工具函数。类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t;宏例如EXIT_FAILURE、EXIT_S
3、UCCESS、RAND_MAX和MB_CUR_MAX等等;常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。多级反馈队列调度算法的描述:voidzhingxing(){for(inti=0;i<=链表的数目;){p=rq(i),front;while(p!=NULL){执行调度算法,将在时间片内不能完成的进程,插入到下一队列的尾部,并以此循环执行。p=p->next;}}}main()程序功能结构图:display()
4、显示进程的运行情况diaodu()执行程序中进程的调用creat()创建就绪队列流程图:creat()流程图:开始输入shumuNYshumu<20内存不足j=0jyouxianNYNp->youxian==3Yp->youxian==2插入队列2YNp->youxian==1插入队列1插入队列0结束数据结构定义主要变量的说明:xuhao进程的序号daoda进程到达时间pid[10]进程名字youxian进程优先级yunxingsuoxu运行所需时间yunxing运行已用时间zhuangtaiR表示执行,W表示动态就绪,F表
5、示完成函数的说明:voidcreat();//创建链表voiddiaodu();//执行调度的过程voiddisplay();//显示执行结果三、所用仪器、材料(设备名称、型号、规格等)。计算机一台四、实验方法、步骤#include#include#defineNULL0intshumu;voidcreat();//创建链表voiddiaodu();//执行调度voiddisplay();//显示执行结果//进程PCB结构体structjincheng{intxuhao;intdaoda;charpid[
6、10];//进程名字intyouxian;//进程优先级intyunxingsuoxu;//占用cpu时间intyunxing;charzhuangtai;//R表示执行,W表示动态就绪,F表示完成structjincheng*next;};//链表结构体typedefstructnode{jincheng*front;}pcbqueue;pcbqueuerq[3];//定义三个等待队列structjincheng*p,*q;//创建进程……voidcreat(){printf("创建进程数目;(不大于20):");scanf("%d",&s
7、humu);if(shumu>20){printf("内存已满!");printf("输入错误,请重新创建进程!");creat();}else{for(intj=0;jyouxian=(int)(rand()%(4-1)+1);if(rq[p->youxian-1].front==NULL)//建立队列2,1,0{printf("请输入新进程的序号(数字):");scanf("%d",&p->xuhao);printf("请
8、输入新进程的名字:");scanf("%s",&p->pid);p->daoda=(int)(rand()%(5-1)+1);p->yunxingsuoxu=(
此文档下载收益归作者所有