教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高等教育 >

《操作系统原理》实验-第二章-进程与线程

来源:网络收集 时间:2026-04-09
导读: // 进程管理.cpp : Defines the entry point for the console application. // //#include stdafx.h #include conio.h #include stdio.h #include stdlib.h void clrscr(); void create(); void run(); void huanchu(); void kill(); void huanxing(); struc

// 进程管理.cpp : Defines the entry point for the console application.
//

//#include "stdafx.h"


#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
void clrscr();
void create();
void run();
void huanchu();
void kill();
void huanxing();

struct jincheng_type
{ int pid;
int youxian;
int daxiao;
int zhuangtai;
char info[10];

};
struct jincheng_type neicun[20];
int shumu=0,guaqi=0,pid,flag=0;
void main()
{
int n;
char a;
n=1;
clrscr();
while(n==1)
{

printf("\n********************************************");
printf("\n* 进程演示系统 *");
printf("\n********************************************");
printf("\n 1.创建新的进程 2.查看运行进程 ");
printf("\n 3.换出某个进程 4.杀死运行进程 ");
printf("\n 5.唤醒某个进程 6.退出系统 ");
printf("\n********************************************");
printf("\n请选择(~)");
a=getche();


switch(a)
{ case'1':
create( );
break;
case'2':
run( );
break;
case'3':
huanchu();
break;
case'4':
kill( );
break;
case'5':
huanxing( );
break;
case'6': exit(0);
default: n=0;
}
}
system("pause");
}

void create( ) /* 创建一个进程的示例(不完整的程序)*/
{
int i=0;
int n=0;
printf("\n输入进程个数:");
scanf("%d",&n);
if(shumu>=20)
{
printf("\n内存已满,请先结束或退出进程\n");
}
else
{

for(i;i<n ;i++)
{

printf("\n输入优先级:");
scanf("%d",&neicun[shumu+i].youxian );
neicun[shumu+i].pid=shumu+i+1;
neicun[shumu+i].info[10]='A';

neicun[shumu+i].daxiao=20;
neicun[shumu+i].zhuangtai =1;
printf("\n输入进程信息:");
scanf("%s", neicun[shumu+i].info );

}
shumu+=n;

/*
*
*待填代码
*
* */


}
}
void clrscr()/*清除内存空间*/
{
int i;
for(i=0;i<19;i++)
{
neicun[i].pid=0;
neicun[i].youxian=0;
neicun[i].daxiao=0;

neicun[i].zhuangtai=0;
}

shumu=0;
}

void run()/* 查看内存中进程运行的情况 */
{


for(int i=0;i<20;i++)
{
if(neicun[i].zhuangtai==1)
{

printf("当前各内存中的进程\n");
printf("当前运行的进程%d\n",neicun[i].pid);
printf("当前运行进程的优先级%d\n",neicun[i].youxian);
printf("当前运行进程
占用的空间大小%d\n",neicun[i].daxiao);
}

}
}


void huanchu()/* 换出优先级最小的进程*/
{
if(!shumu)
{
printf("当前没有运行进程\n");
return;

}
printf("\n输入换出进程的ID值");
scanf("%d",&pid);




for (int i=0;i<20;i++)
{
if(pid==neicun[i].pid)
{

if(neicun[i].zhuangtai==1)
{
neicun[i].zhuangtai=2;
guaqi++;
printf("\n已经成功换出进程\n");
}
else if(neicun[i].zhuangtai==0)printf("\n要换出的进程不存在");
else printf("\n要换出的进程已被挂起\n");
flag=1;
break;
}

}

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

}

void kill()/* 杀死某个进程*/
{
if(!shumu)
{
printf("当前没有运行进程\n");
return;
}

printf("\n请输入要杀死的进程\n");
scanf("%d",&pid);
for(int i=0;i<20;i++)
{
if(pid==neicun[i].pid)
{ neicun[i].pid=0;
neicun[i].youxian=0;
neicun[i].daxiao=0;

neicun[i].zhuangtai=0;
for(int j=0;j<10;j++)
{

neicun[shumu].info [j]=' ';

}

/*
*
*待填代码
*
* */

flag=1;
break;

}
}
if (!flag)
{
printf("\n要杀死的进程不存在\n");
}
}



void huanxing()
{
if(!shumu)
{
printf("当前没有运行进程");
return;
}
if(!guaqi)
{
printf("当前没有挂起进程");
return;
}
printf("\n输入pid:\n");
scanf("%d",&pid);
for(int i=0;i<20;i++)
{
if (pid==neicun[i].pid)
{
flag=false;
if(neicun[i].zhuangtai==2)
{
neicun[i].zhuangtai=1;
guaqi--;
printf("\n已经成功唤醒进程\n");
}
else if(neicun[i].zhuangtai==0)printf
("\n要换醒的进程不存在\n");
else printf("\n要唤醒的进程已被挂起\n");
break;
}


}

if(flag)printf("\n要唤醒的进程不存在\n");


}

…… 此处隐藏:965字,全部文档内容请下载后查看。喜欢就下载吧 ……
《操作系统原理》实验-第二章-进程与线程.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/128906.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)