# 进程与资源管理实验与虚拟内存综合实验
# 进程与资源管理实验
## 实验原理:
### 1.总体设计:
系统总体架构如图 1 所示,最右边部分为进程与资源管理器,属于操作系统内核的功能。该管理器具有如下功能:完成进程创建、撤销和进程调度;完成多单元资源的管理;完成资源的申请和释放;完成错误检测和定时器中断功能。
![](https://www.writebug.com/myres/static/uploads/2021/12/5/6a6e08e2856b4486efa844574831313a.writebug)
图 1 系统总体结构
图 1 中间绿色部分为驱动程序 test shell, 设计与实现 test shell,该 test shell 将调度所设计的进程与资源管理器来完成测试。Test shell 的应具有的功能:
从终端或者测试文件读取命令;
将用户需求转换成调度内核函数(即调度进程和资源管理器);
在终端或输出文件中显示结果:如当前运行的进程、错误信息等。
图 1 最左端部分为:通过终端(如键盘输入)或者测试文件来给出相应的用户命令,以及模拟硬件引起的中断。
### 2.Test Shell 设计
Test shell 要求完成的命令(Mandatory Commands):
-init
-cr <name> <priority>(=1 or 2) // create process
-de <name> // delete process
-req <resource name> <# of units> // request resource
-rel <resource name> <# of units> // release resource
-to // time out
可选实现的命令:
-lp: all processes and their status
-lr: all resources and their status
\- provide information about a given process
(注:具体的功能实现此处略去,详见第八部分:实验步骤)
### 3.进程管理设计
进程状态: ready/running/blocked
进程操作:
创建(create): (none) -> ready
撤销(destroy): running/ready/blocked -> (none)
请求资源(Request): running -> blocked (当资源没有时,进程阻塞)
释放资源(Release): blocked -> ready (因申请资源而阻塞的进程被唤醒)
时钟中断(Time_out): running -> ready
调度:ready -> running / running ->ready
### 4.进程控制块结构(PCB)
PID(name)
resources //: resource which is occupied
Status: Type & List// type: ready, block, running…., //List: RL(Ready list) or BL(block list)
Creation_tree: Parent/Children
Priority: 0, 1, 2 (Init, User, System)
![](https://www.writebug.com/myres/static/uploads/2021/12/5/4dfa13af57242621e8cb41137fc90fd1.writebug)
图 2 PCB 结构示意
就绪进程队列:Ready list (RL)
![](https://www.writebug.com/myres/static/uploads/2021/12/5/a62fa437c26f597ae005d6acaa753d2c.writebug)
图 3 Ready list 数据结构
3 个级别的优先级,且优先级固定无变化
2 =“system”
1 = “user”
0 = “init”
每个 PCB 要么在 RL 中,要么在 block list 中 。当前正在运行的进程,根据优先级,可以将其放在 RL 中相应优先级队列的首部。
Init 进程在启动时创建,可以用来创建第一个系统进程或者用户进程。新创建的进程或者被唤醒的进程被插入到就绪队列(RL)的末尾。
示例:
图 4 中,虚线表示进程 A 为运行进程,在进程 A 运行过程中,创建用户进程 B:cr B 1,数据结构间关系图 4 所示:
![](https://www.writebug.com/myres/static/uploads/2021/12/5/f85d22ef682204557881eba0a93d0c1a.writebug)
图 4 进程数据结构间关系
(为了简单起见,A 和 B 分别指向 RL 的链接可以不要)
### 5.资源管理设计
资源的表示:设置固定的资源数量,4 类资源,R1,R2,R3,R4,每类资源 Ri 有 i 个资源控制块 Resource control block (RCB) 如图 5 所示
RID: 资源的 ID
Status: 空闲单元的数量
Waiting_List: list of blocked process
![](https://www.writebug.com/myres/static/uploads/2021/12/5/62adead45c14ded66e3be4de5bfc289f.writebug)
图 5 资源数据结构 RCB
### 6. 进程调度与时钟中断设计
调度策略:
基于 3 个优先级别的调度:2,1,0
使用基于优先级的抢占式调度策略,在同一优先级内使用时间片轮转(RR)
基于函数调用来模拟时间共享
初始进程(Init process)具有双重作用:
(1)虚设的进程:具有最低的优先级,永远不会被阻塞
(2)进程树的根
时钟中断(Time out):模拟时间片到或者外部硬件中断
### 7. 系统初始化设计
启动时初始化管理器:
具有 3 个优先级的就绪队列 RL 初始化;
Init 进程;
4 类资源,R1,R2,R3,R4,每类资源 Ri 有 i 个
## 实验目的:
设计和实现进程与资源管理,并完成 Test shell 的编写,以建立系统的进程管理、调度、资源管理和分配的知识体系,从而加深对操作系统进程调度和资源管理功能的宏观理解和微观实现技术的掌握。
## 实验内容:
在实验室提供的软硬件环境中,设计并实现一个基本的进程与资源管理器。该管理器能够完成进程的控制,如进程创建与撤销、进程的状态转换;能够基于优先级调度算法完成进程的调度,模拟时钟中断,在同优先级进程中采用时间片轮转调度算法进行调度;能够完成资源的分配与释放,并完成进程之间的同步。该管理器同时也能完成从用户终端或者指定文件读取用户命令,通过 Test shell 模块完成对用户命令的解释,将用户命令转化为对进程与资源控制的具体操作,并将执行结果输出到终端或指定文件中。
### 实验器材(设备、元器件):
个人计算机、Java version "1.8.0_162"、JetBrains IntelliJ IDEA(Ultimate Version)2019
### 实验步骤:
#### a) 系统功能需求分析:
与第四部分(实验原理)相同,系统总体上由 Test Shell、进程管理模块部分、进程控制块结构(PCB)、资源管理模块部分、进程调度与时钟中断模块部分等组成。其中,各部分的原理以及具体结构在第四部分(实验原理)已经描述过,此处不再赘述,具体分析与代码详见第四部分(实验原理)以及详细设计部分。
#### b) 总体框架设计:
项目的总体框架与结构如图所示:
![](https://www.writebug.com/myres/static/uploads/2021/12/5/d292ff643d7cbb80028036250c8f4931.writebug)
其中 Main 类是系统的主函数入口部分,主要对应实现的是 Test Shell 部分,根据输入的命令进行解析,调用系统的不同功能模块,并输出相应结果。
PCB 类是整个系统的主要核心功能实现类,用于进程的管理,主要对应的是进程管理、进程控制块结构以及进程调度与时钟中断部分。该类主要实现了进程的创建、进程的切换与调度以及进程信息的输出等等功能。
Process 类是进程的实体类,该类定义了进程的数据结构,实现了对应的 get、set 方法,并且主要实现了删除进程和子进程树的功能。
Queue 类是队列类,该类用于管理和维护进程队列,主要实现了 3 种优先级队列的入队、出队、删除等操作。
Resource 类是资源的实体类,该类定义了资源的数据结构,实现了对应的 get、set 方法,并且主要实现了请求资源、释放资源、输出资源信息等功能。另外,该类对每一个资源管理和维护了对应的阻塞队列,当进程请求资源不足时,将进程加入对应的阻塞队列中。
#### c) 详细设计:
Test Shell 部分:是系统的中心部分,起着读取命令、连接核心部件、输出结果的作用。首先,通过 Test Shell 读入各种命令,在系统的设计中,同时设计了从命令行输入命令以及从文件读取两种输入方式。然后,对命令进行分析,将用户的需求转换成调度内核函数,也就是说,通过调度进程和资源管理器,实现创建进程、撤销进程、进程调度、对资源进行管理、申请和释放资源、检测�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
一、进程与资源管理实验 二、虚拟内存综合实验 在实验室提供的软硬件环境中,设计并实现一个基本的进程与资源管理器。该管理器能够完成进程的控制,如进程创建与撤销、进程的状态转换;能够基于优先级调度算法完成进程的调度,模拟时钟中断,在同优先级进程中采用时间片轮转调度算法进行调度;能够完成资源的分配与释放,并完成进程之间的同步。 通过手工查看系统内存,并修改特定物理内存的值,实现控制程序运行的目的。
资源推荐
资源详情
资源评论
收起资源包目录
100011539-基于Java进程与资源管理实验与虚拟内存综合实验.zip (36个子文件)
osshiyan
OSLab1-Scheduler.iml 423B
关文聪 2016060601008 计算机操作系统 实验报告.pdf 1.21MB
src
Queue.java 2KB
Process.java 4KB
Resource.java 7KB
Main.java 12KB
PCB.java 8KB
LICENSE 1KB
out
artifacts
OSLab1_Scheduler_jar
OSLab1-Scheduler.jar 14KB
production
OSLab1-Scheduler
Resource$BlockProcess.class 692B
Main.class 7KB
Queue.class 1KB
Resource.class 5KB
Process.class 4KB
Process$State.class 1KB
PCB.class 6KB
.idea
artifacts
OSLab1_Scheduler_jar.xml 502B
vcs.xml 167B
workspace.xml 18KB
misc.xml 258B
modules.xml 272B
encodings.xml 135B
test
0.txt 110B
1.txt 163B
OSLab1-Scheduler.jar 14KB
5.txt 103B
读取文件模式.bat 42B
3.txt 205B
4.txt 104B
键盘录入模式.bat 31B
2.txt 93B
README.md 239B
关文聪 2016060601008 计算机操作系统 实验报告.docx 1.08MB
README.md 61KB
实验报告模板.docx 15KB
labs-2019.zip 10.22MB
共 36 条
- 1
资源评论
神仙别闹
- 粉丝: 2674
- 资源: 7640
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 筷手引流工具.apk
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功