操作系统pcb的组织与维护实验Word文件下载.docx

上传人:b****4 文档编号:6375760 上传时间:2023-05-06 格式:DOCX 页数:14 大小:52.25KB
下载 相关 举报
操作系统pcb的组织与维护实验Word文件下载.docx_第1页
第1页 / 共14页
操作系统pcb的组织与维护实验Word文件下载.docx_第2页
第2页 / 共14页
操作系统pcb的组织与维护实验Word文件下载.docx_第3页
第3页 / 共14页
操作系统pcb的组织与维护实验Word文件下载.docx_第4页
第4页 / 共14页
操作系统pcb的组织与维护实验Word文件下载.docx_第5页
第5页 / 共14页
操作系统pcb的组织与维护实验Word文件下载.docx_第6页
第6页 / 共14页
操作系统pcb的组织与维护实验Word文件下载.docx_第7页
第7页 / 共14页
操作系统pcb的组织与维护实验Word文件下载.docx_第8页
第8页 / 共14页
操作系统pcb的组织与维护实验Word文件下载.docx_第9页
第9页 / 共14页
操作系统pcb的组织与维护实验Word文件下载.docx_第10页
第10页 / 共14页
操作系统pcb的组织与维护实验Word文件下载.docx_第11页
第11页 / 共14页
操作系统pcb的组织与维护实验Word文件下载.docx_第12页
第12页 / 共14页
操作系统pcb的组织与维护实验Word文件下载.docx_第13页
第13页 / 共14页
操作系统pcb的组织与维护实验Word文件下载.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

操作系统pcb的组织与维护实验Word文件下载.docx

《操作系统pcb的组织与维护实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《操作系统pcb的组织与维护实验Word文件下载.docx(14页珍藏版)》请在冰点文库上搜索。

操作系统pcb的组织与维护实验Word文件下载.docx

1、系统利用PCB来描述进程的基本情况以及进程的运行变化过程。

PCB是进程存在的唯一标志,当系统创建一个进程时,为进程设置一个PCB,再利用PCB对进程进行管理和控制。

撤销进程时,系统收回它的PCB,进程也随之消亡。

进程是由程序、数据和进程控制块PCB三部分组成.PCB是进程的“灵魂”,由于进程控制块中保存了进程的地址信息,通过PCB可以得到进程程序的存储位置,也可以找到整个进程。

2、为了便于管理,系统把所有的PCB用适当方式组织起来。

一般来说,大致有以下三种组织方式:

1、线性方式;

2、索引方式;

3、连接方式。

通过这三种方式的组织进而对进程进行高效的管理。

五、算法设计与流程

程序设计流程图如下:

1、线性方式流程图:

线性方式代码:

#include<

iostream>

string>

usingnamespacestd;

#defineFALSE0

#defineTRUE1

#defineTASK_READY3

#defineTASK_WAITE4

#defineTASK_RUNNING5

structtask_struct

{

stringpname;

//进程名

intpid;

//进程号

intstate;

//进程当前状态/*3就绪状态4等待状态5运行状态*/

task_struct*next;

//指向下一个的

};

/////////////////////////////////////

voidshowInput();

voidmenu(task_struct*pcb);

////////////////////////////////

intinputNum()//提示输入进程数

intn;

cout<

<

"

请输入进程数:

;

cin>

>

n;

endl;

returnn;

}

voidCreateList(task_struct*pcb,intn)

pcb->

next=NULL;

task_struct*p=newtask_struct;

p=pcb;

for(inti=0;

i<

i++)

{

task_struct*q=newtask_struct;

inttmp;

q->

pid=i+1;

cout<

请输入第"

i+1<

个进程名:

cin>

q->

pname;

loop:

请输入进程状态(3为就绪状态,4为等待,5为运行):

tmp;

if(tmp!

=3&

&

tmp!

=4&

=5)

{

cout<

输入错误!

gotoloop;

}

else

q->

state=tmp;

if(p->

next==NULL)

p->

next=q;

//p=q;

Addanode"

else

p=p->

next;

forAdd"

}

}

voiddisplay(task_struct*pcb)

task_struct*p;

****************************************"

进程号\t进程名\t当前状态"

for(p=pcb->

p!

=NULL;

p=p->

next)

p->

pid<

\t"

pname<

switch(p->

state)

case3:

cout<

TASK_READY"

break;

case4:

TASK_WAITE"

case5:

TASK_RUNNING"

menu(pcb);

///////////////////////////////////////////////

voidoutput(task_struct*pcb,task_struct*p)//输入单个进程记录信息

switch(p->

case3:

case4:

case5:

}

endl<

voidQuery(task_struct*pcb)//查询

请输入要查询的进程号:

pid;

pid==pid)

output(pcb,p);

return;

无该进程!

voidAdd(task_struct*pcb)//添加

inttmp;

task_struct*q;

for(q=pcb;

next!

q=q->

next);

//if(q->

if(pcb->

p->

pid=1;

else

pid=q->

pid+1;

请输入要添加的进程名:

loop1:

if(tmp!

gotoloop1;

p->

pcb->

next=p;

display(pcb);

voidDelete(task_struct*pcb)//删除

task_struct*p,*q;

请输入要删除的进程号:

for(p=pcb;

q=p->

if(q->

pid==tmp)

next=q->

deleteq;

display(pcb);

////////////////////////////////////////////////

voidDestroy(task_struct*pcb)//销毁链表

while(p->

=NULL)

deleteq;

deletepcb;

voidmenu(task_struct*pcb)//提示选择相应的操作

intm;

1.查询"

2.添加"

3.删除"

4.返回首菜单"

选择:

m;

switch(m)

case1:

Query(pcb);

case2:

Add(pcb);

Delete(pcb);

Destroy(pcb);

showInput();

default:

输入有误!

重新输入"

menu(pcb);

voidList()//线性方式

intn=inputNum();

task_struct*pcb=newtask_struct;

CreateList(pcb,n);

voidHash()//索引方式

//intn=inputNum();

voidshowInput()//提示选择输入

1.线性方式"

//cout<

2.索引方式"

请输入你的选择:

switch(tmp)

List();

//case2:

Hash();

请重新输入。

showInput();

voidmain()

showInput();

六、实验调试与结果分析(问题的发现、分析、解决方案与创新)

实验结果展示:

****************************************

进程号进程名当前状态

1aTASK_WAITE

2sTASK_READY

3dTASK_RUNNING

1.查询

2.添加

3.删除

4.返回首菜单

2

f

5

4fTASK_RUNNING

3

4

1.线性方式

2.索引方式

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2