操作系统实验二进程管理.docx
- 文档编号:12593271
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:6
- 大小:16.75KB
操作系统实验二进程管理.docx
《操作系统实验二进程管理.docx》由会员分享,可在线阅读,更多相关《操作系统实验二进程管理.docx(6页珍藏版)》请在冰点文库上搜索。
操作系统实验二进程管理
操作系统实验二进程管理
以下是为大家整理的操作系统实验二进程管理的相关范文,本文关键词为操作系统,实验,进程,管理,,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在综合文库中查看更多范文。
操作系统实验
实验二进程管理
学号姓名班级
华侨大学电子工程系
实验目的
1、理解进程的概念,明确进程和程序的区别。
2、理解并发执行的实质。
3、掌握进程的创建、睡眠、撤销等进程控制方法。
实验内容与要求
基本要求:
用c语言编写程序,模拟实现创建新的进程;查看运行进程;换出某个进程;杀死进程等功能。
实验报告内容
1、进程、进程控制块等的基本原理。
进程是现代操作系统中的一个最基本也是最重要的概念,掌握这个概念对于理解操作系统实质,分析、设计操作系统都有其非常重要的意义。
为了强调进程的并发性和动态性,可以给进程作如下定义:
进程是可并发执行的程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位。
进程又就绪、执行、阻塞三种基本状态,三者的变迁图如下:
就绪
I/o完成时间片完进程调度I/o请求
阻塞执行由于多个程序并发执行,各程序需要轮流使用cpu,当某程序不在cpu上运行时,必须保留其被中断的程序的现场,包括:
断点地址、程序状态字、通用寄存器的内容、堆栈内容、程序当前状态、程序的大小、运行时间等信息,以便程序再次获得cpu时,能够正确执行。
为了保存这些内容,需要建立—个专用数据结构,我们称这个数据结构为进程控制块pcb(processcontrolblock)。
进程控制块是进程存在的惟一标志,它跟踪程序执行的情况,表明了进程在当前时刻的状态以及与其它进程和资源的关系。
当创建一个进程时,实际上就是为其建立一个进程控制块。
在通常的操作系统中,pcb应包含如下一些信息:
①进程标识信息。
为了标识系统中的各个进程,每个进程必须有惟一的标识名或标
识数。
②位置信息。
指出进程的程序和数据部分在内存或外存中的物理位置。
③状态信息。
指出进程当前所处的状态,作为进程调度、分配cpu的依据。
④进程的优先级。
一般根据进程的轻重缓急其它信息。
这里给出的只是一般操作系统中pcb所应具有的内容,不同操作系统的pcb结构是不同的,我们将在2.8节介绍Linux系统的pcb结构。
程度为进程指定一个优先级,优先级用优先数表示。
⑤进程现场保护区。
当进程状态变化时(例如一个进程放弃使用cpu),它需要将当时的cpu现场保护到内存中,以便再次占用cpu时恢复正常运行,有的系统把要保护的cpu现场放在进程的工作区中,而pcb中仅给出cpu现场保护区起始地址。
⑥资源清单。
每个进程在运行时,除了需要内存外,还需要其它资源,如I/o设备、外存、数据区等。
这一部分指出资源需求、分配和控制信息。
⑦队列指针或链接字。
它用于将处于同一状态的进程链接成一个队列,在该单元中存放下一进程pcb首址。
⑧其它信息。
这里给出的只是一般操作系统中pcb所应具有的内容,不同操作系统的pcb结构是不同的,我们将在2.8节介绍Linux系统的pcb结构。
2、程序流程图。
功能选择(输入1~6)开始1create创建新进程2Run查看运行的进程3huanchu换出进程4Kill杀死进程5huanxing唤醒进程6Viewall查看内存的状态7exit(0)结束进程模拟程序
操作结束3、程序及注释。
#include
#include#include
structjincheng_type{//定义表示进程信息的结构体
intpid;
//进程ID
intyouxian;//优先级intdaxiao;
//大小
//进程的状态,这里用0表示没有建立或被杀死,1表示执行,2表
intzhuangtai;
示换出};
structjincheng_typeneicun[20];//定义20个内存单位给进程使用
intshumu=0,guaqi=0,pid,flag=0;//定义正在执行进程数目,被挂起进程数目,进程ID,运行标志位
voidcreate()//函数——创建一个新进程{
if(shumu>=20)
printf(\内存已满,请先换出或杀死进程\\n\判断内存空间是否
intinfo;
//内容
已满用
printf(\请输入新进程pid\\n\
//输入新进程ID存至选出的内
else{
for(inti=0;i if(neicun[i].zhuangtai==0)break;
//选出空着的内存单元给新进程使
存单元
scanf(\for(intj=0;j if(neicun[i].pid==neicun[j].pid)
//当输入的新进程与原有进程ID相
同时,显示“该进程已存在”
{
}
printf(\该进程已存在\\n\return;
printf(\请输入新进程优先级\\n\//输入新进程的优先级、大小和
内容
scanf(\printf(\请输入新进程大小\\n\scanf(\printf(\请输入新进程内容\\n\scanf(\neicun[i].zhuangtai=1;
//将新进程的内存单元状态
(zhuangtai)设成“1”,以表示存在且未被换出一}voidrun()的进程{
for(inti=0;i if(neicun[i].zhuangtai==1)
//将存在且未被挂起(即
//函数——查看正在运行
}
shumu++;
//正在运行的进程数目加
zhuangtai=1)的进程显示出来,若存在这样的程序,则将flag设成1
{
printf(\printf(\printf(\
最后,小编希望文章对您有所帮助,如果有不周到的地方请多谅解,更多相关的文章正在创作中,希望您定期关注。
谢谢支持!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 进程 管理