操作系统实验一(进程创建、删除、调度等)实验报告

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

实验一实验报告

实验源码:

#include "stdio.h"

#include

#include

#include

#include

#include

// 内存最大装备作业数

#define N 5

#define P_TIME 50

struct PCB{

int pid; // 进程id

int priority; // 优先权

int size; // 大小

int state; // 进程状态0表示不存在1表示运行状态2表示阻塞状态

char info[10]; // 消息

};

struct PCB neicun[N];

int shumu = 0, guaqi = 0;

int pid;

int flag = 0; // 查找相应进程是否存在的标志

// 进程调度

enum state{

ready,

working,

block,

finish

};// 定义进程状态

struct D_PCB{

char name[4]; // 进程名

int priority; // 优先权

int cputime; // CPU运行时间

int needtime; // 进程运行所需时间

int count; // 进程执行次数

int round; // 时间片轮转轮次

state process; // 进程状态

D_PCB *next;

};// 定义进程PCB

// 创建进程

void create()

{

system("cls");

if(shumu >= N) printf("\n内存已满,请先换出或杀死进程\n");

else{

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

// 定位,找到还未创建的进程

if(neicun[i].state == 0) break;

printf("请输入新进程pid\n");

scanf("%d",&(neicun[i].pid));

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

if(neicun[j].pid == neicun[i].pid){

printf("\n该进程已存在\n");

return;

}

printf("请输入新进程优先级\n");

scanf("%d",&(neicun[i].priority));

printf("请输入新进程大小\n");

scanf("%d",&(neicun[i].size));

printf("请输入新进程内容\n");

scanf("%s",&(neicun[i].info));

// 创建进程,使标记位为1

neicun[i].state = 1;

shumu++;

}

}

// 查看运行进程

void run()

{

system("cls");

printf("\npid\tprioroty\tsize\tstate\tinfo\n");

for(int i = 0; i < N; i++){

if(neicun[i].state == 1){

// 输出运行进程的各个属性值

printf("%d\t%d\t\t%d\t%d\t%s\n",neicun[i].pid,neicun[i].priority,neicun[i].size,n eicun[i].state,neicun[i].info);

flag = 1;

}

}

if(!flag) printf("\n当前没有运行进程\n");

}

// 换出进程

void huanchu()

{

system("cls");

if(!shumu){

printf("当前没有运行进程\n");

return;

}

printf("\n输入换出运行进程ID值\n");

scanf("%d",&pid);

for(int i = 0; i < N; i++){

// 定位,找到所要换出的进程,根据其状态做相应处理

if(pid == neicun[i].pid){

if(neicun[i].state == 1){

neicun[i].state = 2;

guaqi++;

printf("\n已经成功换出进程\n");

}

else if(neicun[i].state == 0) printf("\n要换出的进程不存在\n");

else printf("\n换出的进程已被挂起\n");

flag = 1;

break;

}

}

// 找不到,则说明不存在

if(flag == 0) printf("\n要换出的进程不存在\n");

}

// 杀死进程

void kill()

{

system("cls");

if(!shumu){

printf("当前没有运行进程\n");

相关文档
最新文档