欢迎来到天天文库
浏览记录
ID:58965558
大小:525.50 KB
页数:12页
时间:2020-10-27
《东北大学-操作系统实验二报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、操作系统实验报告班级物联网1302班学号姓名实验2进程状态转换及其PCB的变化1.目的:自行编制模拟程序,通过形象化的状态显示,深入理解进程的概念、进程之间的状态转换及其所带来的PCB内容、组织的变化,理解进程与其PCB间的一一对应关系。2.内容及要求:1)设计并实现一个模拟进程状态转换及其相应PCB内容、组织结构变化的程序。2)独立编写、调试程序。进程的数目、进程的状态模型(三状态、五状态、七状态或其它)以及PCB的组织形式可自行选择。3)合理设计与进程PCB相对应的数据结构。PCB的内容要涵盖进程的基
2、本信息、控制信息、资源需求及现场信息。4)设计出可视性较好的界面,应能反映出进程状态的变化引起的对应PCB内容、组织结构的变化。5)代码书写要规范,要适当地加入注释。6)认真进行预习,完成预习报告。7)实验完成后,要认真总结,完成实验报告。3.使用的数据结构及说明:在本实验中,主要用到的数据结构是PCB的结构,其中PCB的数据结构如下:enumStatus{Running,Ready,Blocked,Exit};structPCB{intid;//进程号intpriority;//优先级enumStatu
3、sstatus;//进程状态charname;//进程名称};structRunning{structPCBpcb;structRunning*pcbnext;};structRunning*header_running;structReady{structPCBpcb;structReady*pcbnext;};structReady*header_ready,*tail_ready;structBlocked{structPCBpcb;structBlocked*pcbnext;};structBlo
4、cked*header_blocked,*tail_blocked;structExit{intid;charname;structExit*pcbnext;};structExit*header_exit,*tail_exit;4.流程图5.程序源代码,注释及说明文字:Main.c#include#include#include"process.h"#includeintmain(){inti=1;intchoice=-1;header_runni
5、ng=(structRunning*)malloc(sizeof(structRunning));//创建运行状态队列头if(NULL==header_running){perror("error");exit(1);}header_running->pcbnext=NULL;header_ready=(structReady*)malloc(sizeof(structReady));//创建就绪队状态列头if(NULL==header_ready){perror("error");exit(1);}he
6、ader_ready->pcbnext=NULL;header_blocked=(structBlocked*)malloc(sizeof(structBlocked));//创建阻塞队状态列头if(NULL==header_blocked){perror("error");exit(1);}header_blocked->pcbnext=NULL;header_exit=(structExit*)malloc(sizeof(structExit));//创建僵死状态队列头if(NULL==header_
7、exit){perror("error");exit(1);}header_exit->pcbnext=NULL;tail_ready=header_ready;tail_blocked=header_blocked;tail_exit=header_exit;printf("请输入要创建的进程个数");scanf("%d",&num);while(num<=0){printf("进程个数应大于0,请重新输入");scanf("%d",&num);}for(i;i<=num;i++){stru
8、ctReady*ready=(structReady*)malloc(sizeof(structReady));if(NULL==ready){perror("error");exit(1);}printf("请输入进程%d的名称:t",i);scanf("%c",&ready->pcb.name);ready->pcb.id=i;ready->pcb.priority=i;ready->pcb.status=Ready
此文档下载收益归作者所有