- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统实验二 进程管理.doc
操作系统实验
实验二 进程管理
学号
姓名
班级
华侨大学电子工程系
实验目的
理解进程的概念,明确进程和程序的区别。
理解并发执行的实质。
掌握进程的创建、睡眠、撤销等进程控制方法。
实验内容与要求
基本要求:用C语言编写程序,模拟实现创建新的进程;查看运行进程;换出某个进程;杀死进程等功能。
实验报告内容
1、进程、进程控制块等的基本原理。
进程是现代操作系统中的一个最基本也是最重要的概念,掌握这个概念对于理解操作系统实质,分析、设计操作系统都有其非常重要的意义。为了强调进程的并发性和动态性,可以给进程作如下定义:进程是可并发执行的程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位。
进程又就绪、执行、阻塞三种基本状态,三者的变迁图如下:
I/O完成 时间片完
进程调度
I/O请求
由于多个程序并发执行,各程序需要轮流使用CPU,当某程序不在CPU上运行时,必须保留其被中断的程序的现场,包括:断点地址、程序状态字、通用寄存器的内容、堆栈内容、程序当前状态、程序的大小、运行时间等信息,以便程序再次获得CPU时,能够正确执行。为了保存这些内容,需要建立—个专用数据结构,我们称这个数据结构为进程控制块PCB (Process Control Block)。
进程控制块是进程存在的惟一标志,它跟踪程序执行的情况,表明了进程在当前时刻的状态以及与其它进程和资源的关系。当创建一个进程时,实际上就是为其建立一个进程控制块。
在通常的操作系统中,PCB应包含如下一些信息:
进程标识信息。为了标识系统中的各个进程,每个进程必须有惟一的标识名或标识数。
② 位置信息。指出进程的程序和数据部分在内存或外存中的物理位置。
③ 状态信息。指出进程当前所处的状态,作为进程调度、分配CPU的依据。
④ 进程的优先级。一般根据进程的轻重缓急其它信息。
这里给出的只是一般操作系统中PCB所应具有的内容,不同操作系统的PCB结构是不同的,我们将在2.8节介绍Linux系统的PCB结构。
程度为进程指定一个优先级,优先级用优先数表示。
⑤ 进程现场保护区。当进程状态变化时(例如一个进程放弃使用CPU),它需要将当时的CPU现场保护到内存中,以便再次占用CPU时恢复正常运行,有的系统把要保护的CPU现场放在进程的工作区中,而PCB中仅给出CPU现场保护区起始地址。
⑥ 资源清单。每个进程在运行时,除了需要内存外,还需要其它资源,如I/O设备、外存、数据区等。这一部分指出资源需求、分配和控制信息。
⑦ 队列指针或链接字。它用于将处于同一状态的进程链接成一个队列,在该单元中存放下一进程PCB首址。
⑧其它信息。
这里给出的只是一般操作系统中PCB所应具有的内容,不同操作系统的PCB结构是不同的,我们将在2.8节介绍Linux系统的PCB结构。
程序流程图。
3、程序及注释。
#includestdio.h
#includestdlib.h
#includestring.h
struct jincheng_type{ // 定义表示进程信息的结构体
int pid; //进程ID
int youxian; //优先级
int daxiao; //大小
int zhuangtai; //进程的状态,这里用0表示没有建立或被杀死,1表示执行,2表示换出
int info; //内容
};
struct jincheng_type neicun[20]; //定义20个内存单位给进程使用
int shumu=0,guaqi=0,pid,flag=0; //定义正在执行进程数目,被挂起进程数目,进程ID,运行标志位
void create() //函数——创建一个新进程
{
if(shumu=20) printf(\n内存已满,请先换出或杀死进程\n); //判断内存空间是否已满
else{
for(int i=0;i20;i++)
if(neicun[i].zhuangtai==0) break; //选出空着的内存单元给新进程使用
printf(\n请输入新进程pid\n); //输入新进程ID存至选出的内存单元
scanf(%d,(neicun[i].pid));
for(i
您可能关注的文档
最近下载
- 人事行政年终总结明年工作计划范文十篇.docx
- 微专题18 家庭电路—2021届九年级物理中考复习专题讲义.pdf VIP
- 自我护理能力量表ESCA.doc
- 浙教版八年级数学上册全册ppt教学课件.pptx
- 哈希HACH-sensION+ Portable Meter操作手册-操作说明书.pdf
- 2024年党纪学习教育心得体会.docx VIP
- 园区光储充智能微电网项目建议书.docx
- 浙江省宁波市奉化区2023-2024学年四年级上学期期末语文试卷.docx VIP
- 2023年主任医师(正高)-胸心外科学(正高)考试历年真题集锦附答案.docx
- 新修订《中华人民共和国妇女权益保障法》全文PPT课件.pptx VIP
文档评论(0)