1 / 14
文档名称:

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

格式:doc   大小:72KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

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

上传人:511709291 2019/1/10 文件大小:72 KB

下载得到文件列表

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

相关文档

文档介绍

文档介绍:****大学计算机科学系
实验报告书
实验题目: pcb的组织与维护
课程名称: 操作系统
主讲教师:
辅导教师:
课程编号:
班级:
实验时间:
实验目的:
1、通过编写和调试pcb组织与维护的模拟程序以加深对pcb组织与维护方案的理解。
2、通过编写和调试pcb组织与维护的模拟程序以加强对进程的基本情况以及进程的运行变化过程的进一步理解。 
实验环境:
VC ++
实验内容
1、通过线性方式对以pcb为唯一标志的进程进行创建、查询、添加、删除等操作。
2、通过索引方式对以pcb为唯一标志的进程进行创建、查询、添加、删除等操作。
3、通过链接方式对以pcb为唯一标志的进程进行创建、查询、添加、删除等操作。
实验设计原理
系统利用PCB来描述进程的基本情况以及进程的运行变化过程。PCB是进程存在的唯一标志,当系统创建一个进程时,为进程设置一个PCB,再利用PCB对进程进行管理和控制。撤销进程时,系统收回它的PCB,进程也随之消亡。进程是由程序、“灵魂”,由于进程控制块中保存了进程的地址信息,通过PCB可以得到进程程序的存储位置,也可以找到整个进程。
为了便于管理,系统把所有的PCB用适当方式组织起来。一般来说,大致有以下三种组织方式:1、线性方式;2、索引方式;3、连接方式。通过这三种方式的组织进而对进程进行高效的管理。
算法设计与流程
程序设计流程图如下:
线性方式流程图:







开始
读入选择选择输入
输入是否是1

线性方式
是否是2
索引方式
输出:输入有误!请重新输入
请输入进程的个数
读入进程的个数n
保存这n个进程的信息,并创建n个进程
选择相应的操作
查询
添加
删除
返回首菜单
在已有的进程信息中查找对应进程号的进程信息
是否存在
输出进程信息
无该进程
把新的进程信息保存
在已有的进程信息中查找对应进程号的进程信息
是否存在
删除该进程
无该进程
线性方式代码:
#include <iostream>
#include <string>
using namespace std;
#define FALSE 0
#define TRUE 1
#define TASK_READY 3
#define TASK_WAITE 4
#define TASK_RUNNING 5
struct task_struct
{
string pname; //进程名
int pid;//进程号
int state;//进程当前状态/*3 就绪状态 4 等待状态 5运行状态*/
task_struct *next;//指向下一个的
};
/////////////////////////////////////
void showInput();
void menu(task_struct *pcb);
////////////////////////////////
int inputNum()//提示输入进程数
{
int n;
cout<<"请输入进程数:";
cin>>n;
cout<<endl;
return n;
}
void CreateList(task_struct *pcb,int n)
{
pcb->next=NULL;
task_struct *p=new task_struct;
p=pcb;
for(int i=0;i<n;i++)
{
task_struct *q=new task_struct;
int tmp;
q->pid=i+1;
cout<<"请输入第"<<i+1<<"个进程名:";
cin>>q->pname;
loop: cout<<"请输入进程状态(3为就绪状态,4为等待,5为运行):";
cin>>tmp;
if(tmp!=3&&tmp!=4&&tmp!=5)
{
cout<<"输入错误!"<<endl;
goto loop;
}
else
q->state=tmp;
if(p->next==NULL)
{
q->next=NULL;
p->next=q;
//p=q;
cout<<"Add a node"<<endl;
}
else
{
q->next=NULL;
p=p->next;
p->next=q;
//p=q;
cout<<"for Add"<<endl;
}