电子科技大学—操作系统课程实验(一)
系统化思维模式下计算机操作系统进程与资源管理设计
1.实验目的:
设计和实现进程与资源管理,并完成Test shell的编写,以建立系统的进程管理、调度、资源管理和分配的知识体系,从而加深对操作系统进程调度和资源管理功能的宏观理解和微观实现技术的掌握。
2.实验内容:
在实验室提供的软硬件环境中,设计并实现一个基本的进程与资源管理器。该管理器能够完成进程的控制,如进程创建与撤销、进程的状态转换;能够基于优先级调度算法完成进程的调度,模拟时钟中断,在同优先级进程中采用时间片轮转调度算法进行调度;能够完成资源的分配与释放,并完成进程之间的同步。该管理器同时也能完成从用户终端或者指定文件读取用户命令,通过Test shell模块完成对用户命令的解释,将用户命令转化为对进程与资源控制的具体操作,并将执行结果输出到终端或指定文件中。
3.实验环境:
设计平台和语言不限,平台可为Linux或Windows, 语言可为C,C++,Java等。
4.实验要求:
要求学生熟悉掌握计算机操作系统进程管理和资源管理的基本原理和关键技术,包含进程控制、进程调度、进程同步及资源管理,在此基础上设计和实现进程和资源管理器。具体步骤包括:了解功能需求、完成系统总统设计、相关的数据结构定义和具体函数设计。
同时要求设计与实现驱动程序(test shell):驱动该管理器工作,即将命令语言(即用户要求)转换成对与内核函数(如create, request等)的调用。
5.实验过程:
5.1总体设计
系统总体架构如图1所示,最右边部分为进程与资源管理器,属于操作系统内核的功能。该管理器具有如下功能:完成进程创建、撤销和进程调度;完成多单元 (multi_unit)资源的管理;完成资源的申请和释放;完成错误检测和定时器中断功能。
图1 系统总体结构
图1中间绿色部分为驱动程序test shell, 设计与实现test shell,该test shell将调度所设计的进程与资源管理器来完成测试。Test shell的应具有的功能:
-从终端或者测试文件读取命令;
-将用户需求转换成调度内核函数(即调度进程和资源管理器);
-在终端或输出文件中显示结果:如当前运行的进程、错误信息等。
图1最左端部分为:通过终端(如键盘输入)或者测试文件来给出相应的用户命令,以及模拟硬件引起的中断
5.2Test shell设计
Test_shell的功能如4.1所述,代码示例如图1中绿色部分。
Test shell要求完成的命令(Mandatory Commands)
-init
-cr (=1 or 2) // create process
-de // delete process
-req <# of units> // request resource
-rel <# of units> // release resource
-to // time out
可选实现的命令
-list all processes and their status
-list all resources and their status
-provide information about a given process
Test shell 输出示例:
* Process init is running //the running process create new process
* ….
shell> cr A 1 // this command is from terminal and indicates creating process A with priority 1.Test shell will invoke kernel function: create
* Process A is running //display
shell> cr B 2 // A create process B with priority 2
* Process B is running
shell> cr C 1 // B create process C with priority 1, C is at the end of ready list
* Process B is running //Because C’s priority is lower than B’s
5.3 进程管理设计
5.3.1 进程状态与操作
进程状态: 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
5.3.2 进程控制块结构(PCB)
• PID(name)
• CPU state — not used
• Memory — not used
• Open_Files — not used
• Other_resources //: resource which is o