东北大学-操作系统实验二报告操作系统实验报告 班 级物联网 1302 班学 号姓 名 实验 2 进程状态转换及其 PCB 的变化1.目的:自行编制模拟程序,通过形象化的状态显示,深化理解进程的概念、进程之间的状态转换及其所带来的 PCB 内容 、组织的变化,理解进程与其 PCB 间的一一对应关系。2. 内容及要求:1)设计并实现一个模拟进程状态转换及其相应 PCB 内容、组织结构变化的程序。2)独立编写、调试程序。进程的数目、进程的状态模型(三状态、五状态、七状态或其它)以及 PCB 的组织形式可自行选择。3)合理设计与进程 PCB 相对应的数据结构。PCB 的内容要涵盖进程的基本信息、控制信息、资源需求及现场信息。4)设计出可视性较好的界面,应能反映出进程状态的变化引起的对应PCB 内容、组织结构的变化。5)代码书写要法律规范,要适当地加入注释。6) 仔细进行预习,完成预习报告。7) 实验完成后,要仔细总结,完成实验报告。3.使用的数据结构及说明:在本实验中,主要用到的数据结构是 PCB 的结构,其中 PCB 的数据结构如下:enum Status{Running,Ready,Blocked,Exit};struct PCB{int id; //进程号int priority;//优先级enum Status status;//进程状态char name;//进程名称};struct Running{struct PCB pcb;struct Running *pcbnext;};struct Running *header_running;struct Ready{struct PCB pcb;struct Ready *pcbnext;};struct Ready *header_ready, *tail_ready;struct Blocked{struct PCB pcb;struct Blocked *pcbnext;};struct Blocked *header_blocked, *tail_blocked;struct Exit{int id;char name;struct Exit *pcbnext;};struct Exit *header_exit,*tail_exit;4.流程图5.程序源代码,注释及说明文字:Main.c#include#include#include"process.h"#includeint main(){int i = 1;int choice = -1;header_running = (struct Running *) malloc(sizeof(struct Running)); //创建运行状态队列头if (NULL == header_running){perror("error");exit(1);}header_running->pcbnext = NULL;header_ready = (struct Ready *) malloc(sizeof(struct Ready));//创建就绪队状态列头if (NULL == header_ready){perror("error");exit(1);}header_ready->pcbnext = NULL;header_blocked = (struct Blocked *) mall...