操作系统课程设计

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

任务一、进程创建、控制与撤消

一、目的:

通过进程的创建和控制的设计来达到如下目的:

1、加深对进程概念的理解,明确进程和程序的区别;

2、进一步认识并发执行的概念,区别顺序执行和并发执行;

3、分析进程争用临界资源的现象,学习解决进程互斥的方法;

二、内容:

在WINDOWS环境下模拟实验:

1、编写一程序,来模拟进程的创建和撤消,要求通过终端键盘输入三、四

作业的名称、大小、优先级等。系统为它创建进程,并把进程控制块PCB的内容送到终端显示器上输出。

2、同时模拟内存空间为作业分配内存空间,并把结果用图形形象地表示出

来,同样通过终端输出。

3、按进程的优先级的顺序撤消进程,同时通过终端显示PCB的撤消过程和

内存的释放过程

程序流程图:

源代码如下:

#include;

using namespace std; struct PCB

{

int pid;

int priority;

int size;

int detail;

int isrun;

};

PCB running[20], ready[20]; int sum = 0, pid_1;

void choose();

void menu();

int create()

{

if (sum >= 20)

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

}

else

{

cout << "请输入第" << sum + 1 << "个进程"<

cout << "请输入进程的pid" << endl;

cin >> running[sum + 1].pid;

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

cin >> running[sum + 1].priority;

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

cin >> running[sum + 1].size;

cout << " 请输入新的进程的详情" << endl;

cin >> running[sum + 1].detail;

running[sum + 1].isrun = 1;

sum++;

}

return running[sum - 1].isrun;

choose();

}

void display()

{

int pid;

cout << "请输入进程的pid" << endl;

cin >> pid;

if (pid > 0 && pid <= 20 && running[pid].isrun == 1)

cout << "进程的pid是:"<< running[pid].pid<

cout << "进程的优先级是:"<< running[pid].priority<

cout << "进程的大小是:"<< running[pid].size<

cout << "进程的相关信息:"<< running[pid].detail<

}

else

{

cout << "所查看运行进程不存在" << endl;

}

choose();

}

void replace()

{

int pid1, pid2;

cout << "请输入第一个替换进程的pid" << endl;

cin >> pid1;

cout << "请输入第二个替换进程的pid" << endl;

cin >> pid2;

if (pid1 > 0 && pid1 <= 20 && running[pid1].isrun == 1)

{

if (running[pid1].priority > running[pid2].priority) { ready[20].pid = running[pid1].pid;

ready[20].priority = running[pid1].priority;

ready[20].size = running[pid1].size;

ready[20].detail = running[pid1].detail;

running[pid1].pid = running[pid2].pid;

running[pid1].priority = running[pid2].priority;

running[pid1].size = running[pid2].size;

running[pid1].detail = running[pid2].detail;

running[pid2].pid = ready[20].pid;

running[pid2].priority = ready[20].priority;

running[pid2].size = ready[20].size;

running[pid2].detail = ready[20].detail;

cout << "替换完成" << endl;

cout << "被替换进程的pid是:"<< ready[20].pid<

cout << "被替换进程的优先级是:", ready[20].priority;

cout << "被替换进程的大小是:"<< ready[20].size<

cout << "被替换进程的详情是:"<< ready[20].detail<

}

else

{

cout << "进程优先级不够大"<

相关文档
最新文档