操作系统pcb的组织及维护试验

上传人:hs****ma 文档编号:564550320 上传时间:2022-11-25 格式:DOC 页数:15 大小:194KB
返回 下载 相关 举报
操作系统pcb的组织及维护试验_第1页
第1页 / 共15页
操作系统pcb的组织及维护试验_第2页
第2页 / 共15页
操作系统pcb的组织及维护试验_第3页
第3页 / 共15页
操作系统pcb的组织及维护试验_第4页
第4页 / 共15页
操作系统pcb的组织及维护试验_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《操作系统pcb的组织及维护试验》由会员分享,可在线阅读,更多相关《操作系统pcb的组织及维护试验(15页珍藏版)》请在金锄头文库上搜索。

1、WORD格式整理版*大学计算机科学系实验报告书实验题目:pcb的组织与维护课程名称:操作系统主讲教师:辅导教师:课程编号:班 级:实验时间:实验目的:1、通过编写和调试pcb组织与维护的模拟程序以加深对 pcb组织与维护方 案的理解。2、通过编写和调试pcb组织与维护的模拟程序以加强对进程的基本情况以 及进程的运行变化过程的进一步理解。二、实验环境:VC 6.0+三、实验内容1、通过线性方式对以pcb为唯一标志的进程进行创建、查询、添加、删除 等操作。2、通过索引方式对以pcb为唯一标志的进程进行创建、查询、添加、删除 等操作。3、通过链接方式对以pcb为唯一标志的进程进行创建、查询、添加、删

2、除 等操作。四、实验设计原理1、 系统利用PCB来描述进程的基本情况以及进程的运行变化过程。PCB是进 程存在的唯一标志,当系统创建一个进程时,为进程设置一个PCB再利 用PCB寸进程进行管理和控制。撤销进程时,系统收回它的PCB进程也 随之消亡。进程是由程序、数据和进程控制块 PCB三部分组成.PCB是进 程的“灵魂”,由于进程控制块中保存了进程的地址信息,通过PCB可 以得到进程程序的存储位置,也可以找到整个进程。2、为了便于管理,系统把所有的 PCB用适当方式组织起来。一般来说,大 致有以下三种组织方式:1、线性方式;2、索引方式;3、连接方式。通 过这三种方式的组织进而对进程进行高效的

3、管理。五、算法设计与流程程序设计流程图如下:1、线性方式流程图:专业学习参考资料线性方式代码:#in elude #in elude using n amespaee std;#defi ne FALSE 0#defi ne TRUE 1#defi ne TASK_READY 3#defi ne TASK_WAITE 4#defi ne TASK_RUNNING 5 struct task_structstri ng pn ame; /进程名5运行状态*/in t pid;/进程号int state;/进程当前状态/*3就绪状态4等待状态task_struct *n ext;/指 向下一个的;

4、/ void show In put();void menu (task_struct *pcb);/ int in putNum()提示输入进程数 int n;coutvv请输入进程数:;cinn;coute ndl;return n;void CreateList(task_struct *pcb,int n)pcb- next=NULL;task_struct *p=new task_struct;p=pcb;for(i nt i=0;ipid=i+1;coutvv请输入第i+1 q-p name;loop:coutvv请输入进程状态(3为就绪状态,4为等待,5为运行):;cin tmp

5、;if(tmp!=3&tmp!= 4&tmp!=5)coutvv输入错误!state=tmp;if(p- next=NULL)q- next=NULL;p-n ext=q;P=q;coutAdd a no de next=NULL;p=p-n ext;p-n ext=q;P=q; coutfor Adde ndl; coute ndl;void display(task_struct *pcb)task_struct *p;coutvv * *e ndl;coutvv进程号t进程名t当前状态n ext;p!=NULL;p=p-n ext)coutpidvvtvvp-p namestate)ca

6、se 3:coutvTASK_READYve ndl;break; case 4:coutvTASK_WAITEve ndl;break; case 5:coutvTASK_RUNNINGve ndl;break; coutvv * *e ndl;menu (pcb);/void output(task_struct *pcb, task_struct *p)/输入单个进程记录信息 coutvv * *e ndl;coutvv进程号t进程名t当前状态endl;coutpidvp namevvt;switch(p-state)case 3:coutvvTASK_READYvve ndl;brea

7、k;case 4:coutvvTASK_WAITEvve ndl;break;case 5:coutvvTASK_RUNNINGvve ndl;break; coutvve ndlvve ndlvve ndlvve ndlvve ndl;menu (pcb);void Query(task_struct *pcb) 查询 int pid;coutvv请输入要查询的进程号cin pid;task_struct *p;for(p=pcb-n ext;p!=NULL;p=p-n ext)if(p-pid=pid)output(pcb, p);return;cout无该进程!n ext!=NULL;q

8、=q-n ext);if(q- next=NULL)if(pcb-n ext=NULL)p-pid=1;elsep-pid=q-pid+1;coutvv请输入要添加的进程名:;cin p-p name;Ioop1:coutvv请输入进程状态(3为就绪状态,4为等待,5为运行):;cin tmp;if(tmp!=3&tmp!=4&tmp!=5)cout输入错误!state=tmp;p-n ext=NULL;if(q- next=NULL)if(pcb-n ext=NULL)pcb-n ext=p;elseq-n ext=p;coute ndle ndl;display(pcb);void Del

9、ete(task_struct *pcb)删除 task_struct *p,*q;coutvv请输入要删除的进程号int tmp;cin tmp;for(p=pcb;p!=NULL;p=p-n ext) q=p-n ext;if(q-pid=tmp)p-n ext=q-n ext;delete q; display(pcb);cout无该进程! next!=NULL)q=p-n ext;p-n ext=q-n ext;delete q;delete pcb;void men u(task_struct *pcb)/提示选择相应的操作int m;cout1.查询e ndl;cout2.添加e

10、ndl;cout3.删除e ndl;cout4.返回首菜单m;coute ndle ndl;switch(m)case 1:Query(pcb);break;case 2:Add(pcb);break;case 3:Delete(pcb);break;case 4:Destroy(pcb);showl nput();break;default:cout输入有误!重新输入endl;menu (pcb);void List()/线性方式int n=in putNum();task_struct *pcb=new task_struct;CreateList(pcb, n);coute ndle n

11、dle ndle ndle ndle ndle ndle ndle ndle ndl; display(pcb);void Hash()索引方式/ int n=in putNum();void show In put() /提示选择输入int tmp;cout1.线性方式endl;cout2.索引方式 tmp;coute ndle ndl;switch(tmp)case 1:List();break;/case 2:Hash();break;default:cout输入有误!请重新输入。e ndle ndl; show In put();void mai n()show In put();六、实验调试与结果分析(问题的发现、分析、解决方

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号