实验二-实验报告(进程管理)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二模拟实现进程管理

组长:和林软件1402

一、实验目的

1.理解进程的概念,明确进程和程序的区别。

2.理解并发执行的实质。

3.掌握进程的创建,睡眠,撤销等进程控制方法。

二、实验容

用C语言,JAVA语言,C++语言编写程序,模拟实现创建新的进程;查看运行进程,换出某个进程;杀死运行进程。

三、实验准备

1.进程的定义

进程是程序在一个数据集合上的运行过程,是系统资源分

配和调度的一个独立单位。一个程序在不同的数据集合上

运行,乃至一个程序在同样数据集合上的多次运行都是不

同的进程。

2.进程的状态

通常情况下,一个进程必须具有就绪,执行和阻塞三种基本

情况。

1)就绪状态

当进程已分配到除处理器外的所有必要资源后,只要再

获得处理器就可以立即执行,这时进程的状态就为就绪

状态。在一个系统里,可以有多个进程同时处于就绪状

态,通常把这些就绪进程排成一个或多个队列,称为就

绪队列。

2)执行状态

处于就绪状态的进程一旦获得处理器,就可以运行,进

程状态也就处于执行状态,在单处理器系统中,只能有

一个进程处于执行状态,在多处理器系统中,则可能有

多个进程处于执行状态

3)阻塞状态

正在执行的进程因为发生某些事件而暂停运行,这种受

阻暂停的状态称为阻塞状态,也可称为等待状态。通常

将处于阻塞状态的进程拍成一个队列,称为阻塞队列,

在有些系统中,也会按阻塞原因的不同将阻塞状态的进

程排成多个队列。

3.进程状态之间的转换

4.进程控制块

1)进程控制块的作用

进程控制块是进程实体的重要组成部分,主要包含下述四个方面的信息:

a)进程标示信息

b)说明信息

c)现场信息

d)管理信息

5.进程控制块的组织方式

1)方式

2)索引方式

6.进程控制原语

1)创建原语

2)撤销原语

3)阻塞原语

4)唤醒原语

7.程序代码

#include

#include

using namespace std;

void clrscr();

void create();

void run( );

void exchange( );//唤出

void kill( );

void wakeUp( );//唤醒

struct process_type{

int pid;

int priority;//优先次序

int size;

int state;//状态

char info[10];

};

struct process_type internalMemory[20];

int amount=0,hangUp=0,pid,flag=0;//数目,挂起

void main( ){

int n;

int a;

n=1;

clrscr( );

while(n==1){

cout<<"\n********************************************";

cout<<"\n* 进程演示系统 *";

cout<<"\n********************************************";

cout<<"\n 1.创建新的进程 2.查看运行进程 ";

cout<<"\n 3.换出某个进程 4.杀死运行进程 ";

cout<<"\n 5.唤醒某个进程¨ 6.退出系统 ";

cout<<"\n*********************************************"<

cout<<"请选择 ";

cin>>a;

switch(a){

case 1:

create( );

break;

case 2:

run( );

break;

case 3:

exchange();//换出

break;

case 4:

kill();

break;

case 5:

wakeUp();

break;

case 6:

exit(0);

default:

n=0;

}

}

}

void create(){ //创建进程

int i=0;

if (amount>=20)

{

cout<<" 存已满,请先结束或换出进程";

}

else{

for (i=0;i<20;i++)

{

if (internalMemory[i].state==0)

{

break;

}

}

cout<<"请输入新进程的pid: "<

cin>>internalMemory[ i ].pid;

cout<<"请输入新进程的优先级: "<

cin>>internalMemory[amount].priority;

cout<<"请输入新进程的大小: "<

cin>>internalMemory[amount].size;

cout<<"请输入新进程的容: "<

cin>>internalMemory[amount].info;

internalMemory[i].state=1;

amount++;

}

}

void clrscr()//清除存空间

{

for (int i=0;i<19;i++)

{

internalMemory[i].pid=0;

internalMemory[i].priority=0;

internalMemory[i].size=0;

internalMemory[i].state=0;

}

amount=0;

}

void run()

{

for (int i=0;i<20;i++)

{

相关文档
最新文档