用C语言模拟实现操作系统的进程管理机制

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

《操作系统》实验报告
实验一题目用C语言模拟实现操作系统的进程管理机制
一、实验内容
使用顺序表模拟内存中的进程队列,实现对于进程的管理。

进程的管理主要包括进程的创建、进程的查询、进程的换出以及进程的删除等操作。

二、实验目的
进程是计算机操作系统的重要的核心概念,合理的管理进程是一个操作系统最核心主要的功能之一,通过编写相应的进程程序,加强对进程概念的理解。

三、设计过程
1进程结构PCB的描述:
typedef struct jincheng_type{
int pid;
int priority;
char state;
int blocktime;
}PCB;
PCB是对进程的描述,pid代表进程号,priority代表优先级,state代表状态,blocktime代表阻塞时间。

2进程队列的描述:使用顺序表
typedef struct queuelist{
PCB pro[MAXSIZE];
int length;
}MEMORY;
内存的描述,系统创建的进程都保存在这里,MAXSIZE是内存中允许存放最大的进程数目3本实验主要包含如下三个主要操作
(1)创建进程操作
void create(MEMORY *P,int count);
参数P是指向存放进程的内存指针(头指针),count是指创建进程的数目。

(2)查询进程操作
int check(MEMORY *P,int pid);
参数P是指向存放进程的内存指针(头指针),pid是指查询进程的进程号,若查询到该进程则返回OK(1),否则返回ERROR(0)。

(3)置换进程操作
int exchange(MEMORY *P);
参数P是指向存放进程的内存指针(头指针),将换出的进程保存在PCB pcb;中,若换出某个进程则返回OK(1),否则返回ERROR(0)。

(4)删除进程操作
int kill(MEMORY *P,int i);
参数P是指向存放进程的内存指针(头指针),删除内存中第i个进程,若删除某个进
程则返回OK (1),否则返回ERROR (0)。

4程序流程图:
(1)主程序的流程图
(2)三个主要功能的的程序流程图
创建进程:void create(MEMORY *P,int count);
查看进程:int check(MEMORY *P,int pid); 程序开始
输入功能号:function=?
创建进程 查看进程 置


程 杀死进程 1 2 4
3
传入实参:内存首地址,创建进程数目
输入进程的相关信息:
pid,priority,state,blocktime
将进程保存在内存中
传入实参:内存首地址,查看的进程号
在内存中若查询到该进程则输
出该进程信息并反正OK,否则
返回ERROR
换出进程:int exchange(MEMORY *P);
传入实参:内存首地址
在内存中查询某个进程的阻塞
时间,若进程的阻塞时间超出一
定的时间,则将它换到外存
返回换出进程成功与否的信息
删除进程:int kill(MEMORY *P,int i);
传入实参:内存首地址,删除进程的序号
从内存中删除第i个进程
返回删除进程成功与否的信息
四、程序实现及运行结果源程序见:实验一程序。

Doc 实验结果:
五、实验总结
在以前的学习中,我并没接触过C语言,更没有用C语言编过任何代码,所以一开始编写代码时给我带来了很大的困难。

不过通过查阅相关的书籍,我一步步地克服了这些困难。

进程是程序以及数据在处理机(即CPU)上运行的过程,它是系统进行资源分配和调度的一个独立单位。

没有试验前,我对进程的了解只限于字面的意思,通过这次试验我对进程这一概念右了跟深层次的了解。

虽然是模拟进程的创建,我也对进程的创建过程有了更深层次的了解,创建一个进程,首先应该为它分配内存空间,然后将进程的基本信息输入到进程控制快PCB中。

同时将创建好的进程插入到进程就绪队列中。

而对进程的查阅和换出等功能的实现,只是简单地对就绪队列进行检索,并将相关信息输出来。

相关文档
最新文档