ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:49.50KB ,
资源ID:5068021      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5068021.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统pcb的组织与维护实验.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统pcb的组织与维护实验.docx

1、操作系统pcb的组织与维护实验*大学计算机科学系实 验 报 告 书实验题目: 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、 线性方式流程图:线性方式代码:#include #include using namespace std;#define FALSE 0#define TRUE 1#define TASK_READY 3#define TASK_WAITE 4#define TASK_RUNNING 5struct task_struct string pname; /进程名 int pid;/进程号 int state;/进程当前状态/*3 就绪状态 4 等待状态 5运行状态*/ task_struct *next;/指向下一个的

4、;/void showInput();void menu(task_struct *pcb);/int inputNum()/提示输入进程数 int n; coutn; coutnext=NULL; task_struct *p=new task_struct; p=pcb; for(int i=0;ipid=i+1; cout请输入第i+1q-pname;loop: couttmp; if(tmp!=3&tmp!=4&tmp!=5) cout输入错误!state=tmp; if(p-next=NULL) q-next=NULL; p-next=q; /p=q; coutAdd a noden

5、ext=NULL; p=p-next; p-next=q; /p=q; coutfor Addendl; coutendl; void display(task_struct *pcb) task_struct *p; cout*endl; cout进程号t进程名t当前状态next;p!=NULL;p=p-next) coutpidtpnamestate) case 3:coutTASK_READYendl;break; case 4:coutTASK_WAITEendl;break; case 5:coutTASK_RUNNINGendl;break; cout*endl; menu(pcb

6、);/void output(task_struct *pcb, task_struct *p)/输入单个进程记录信息 cout*endl; cout进程号t进程名t当前状态endl; coutpidtpnamestate) case 3:coutTASK_READYendl;break; case 4:coutTASK_WAITEendl;break; case 5:coutTASK_RUNNINGendl;break; coutendlendlendlendlendl; menu(pcb);void Query(task_struct *pcb)/查询 int pid; coutpid;

7、task_struct *p; for(p=pcb-next;p!=NULL;p=p-next) if(p-pid=pid) output(pcb, p); return; cout无该进程!next!=NULL;q=q-next); /if(q-next=NULL) if(pcb-next=NULL) p-pid=1; else p-pid=q-pid+1; coutp-pname;loop1:couttmp; if(tmp!=3&tmp!=4&tmp!=5) cout输入错误!state=tmp; p-next=NULL; /if(q-next=NULL) if(pcb-next=NULL

8、) pcb-next=p; else q-next=p; coutendlendl; display(pcb);void Delete(task_struct *pcb)/删除 task_struct *p,*q; couttmp; for(p=pcb;p!=NULL;p=p-next) q=p-next; if(q-pid=tmp) p-next=q-next; delete q; display(pcb); cout无该进程!next!=NULL) q=p-next; p-next=q-next; delete q; delete pcb;void menu(task_struct *pc

9、b)/提示选择相应的操作 int m; cout1. 查询endl; cout2. 添加endl; cout3. 删除endl; cout4. 返回首菜单endl; coutm; coutendlendl; switch(m) case 1:Query(pcb);break; case 2:Add(pcb);break; case 3:Delete(pcb);break; case 4:Destroy(pcb);showInput();break; default:cout输入有误!重新输入endl; menu(pcb); void List()/线性方式 int n=inputNum();

10、task_struct *pcb=new task_struct; CreateList(pcb,n); coutendlendlendlendlendlendlendlendlendlendl; display(pcb);void Hash()/索引方式/ int n=inputNum(); void showInput() /提示选择输入 int tmp; cout1. 线性方式endl; /cout2. 索引方式endl; couttmp; coutendlendl; switch(tmp) case 1:List();break; /case 2:Hash();break; defau

11、lt:cout输入有误!请重新输入。endlendl; showInput(); void main() showInput();六、实验调试与结果分析(问题的发现、分析、解决方案与创新)实验结果展示:*进程号 进程名 当前状态1 a TASK_WAITE2 s TASK_READY3 d TASK_RUNNING*1. 查询2. 添加3. 删除4. 返回首菜单选择:请输入要查询的进程号:2*进程号 进程名 当前状态2 s TASK_READY1. 查询2. 添加3. 删除4. 返回首菜单选择:选择:2请输入要添加的进程名:f请输入进程状态(3为就绪状态,4为等待,5为运行):5*进程号 进程名 当前状态1 a TASK_WAITE2 s TASK_READY3 d TASK_RUNNING4 f TASK_RUNNING*1. 查询2. 添加3. 删除4. 返回首菜单选择:选择:3请输入要删除的进程号:2*进程号 进程名 当前状态1 a TASK_WAITE3 d TASK_RUNNING4 f TASK_RUNNING*1. 查询2. 添加3. 删除4. 返回首菜单选择:选择:41. 线性方式2. 索引方式请输入你的选择:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1