当前位置:文档之家› 操作系统实验题目2

操作系统实验题目2

实验报告撰写要求实验报告要求具有以下内容:
一、实验目的
二、实验内容
三、实验要求
四、算法流程图
五、给出测试数据及运行结果
六、实验体会或对改进实验的建议
实验1 进程调度(2学时)
一、实验目的
通过实验加强对进程调度算法的理解和掌握。

二、实验内容
编写程序实现基于优先级的时间片轮转调度算法。

三、实验要求
1、假定系统有5个进程,每个进程用一个进程控制块PCB来代表,进程控制块的结构如下图1.1所示:
图1.1
其中:
进程名:作为进程的标识,假设五个进程的进程名分别为p1,p2,p3,
p4,p5。

指针:进程按顺序排成循环链表,用指针指出下一个进程的进程控制块首地址,最后一个进程中的指针指出第一个进程的进程控制块首地址。

要求运行时间:假设进程需要运行的单位时间数。

已运行时间:假设进程已经运行的单位时间数,初值为0。

状态:可假设有两种状态,就绪状态和结束状态。

进程的初始状态都为就绪状态。

2、每次运行所设计的处理器调度程序调度进程之前,为每个进程随机确定它的要求运行时间。

3、此程序是模拟处理器调度,因此,被选中的进程并不实际启动运行,而是执行
已运行时间+1
来模拟进程的一次运行,表示进程已经运行过一个单位时间。

4、在所设计的程序中应有显示语句,能显示每次被选中的进程名以及运行一次后进程队列的变化。

实验2 银行家算法(2学时)
一、实验目的
理解银行家算法,掌握进程安全性检查的方法及资源分配的方法。

二、实验内容
编写程序实现银行家算法,并验证程序的正确性。

三、实验要求
编制模拟银行家算法的程序,并以下面给出的例子验证所编写的程序的正确性。

例子:某系统有A、B、C、D 4类资源共5个进程(P0、P1、P2、P3、P4)共享,各进程对资源的需求和分配情况如下表所示。

现在系统中A、B、C、D 4类资源分别还剩1、5、2、0个,请按
银行家算法回答下列问题:
(1)现在系统是否处于安全状态?
(2)如果现在进程P1提出需求(0、4、2、0)个资源的请求,系统能否满足它的请求?
实验3 内存管理(2学时)
一、实验目的
通过实验加强对内存管理方法的理解和掌握。

二、实验内容
编写程序实现采用可变分区方法管理内存。

三、实验要求
1、在该实验中,采用可变分区方式完成对存储空间的管理(即存储空间的分配与回收工作)。

2、设计用来记录主存使用情况的数据结构:已分区表和空闲分区表或链表。

3、在设计好的数据结构上设计一个主存分配算法。

4、在设计好的数据结构上设计一个主存回收算法。

其中,若回收的分区有上邻空闲分区和(或)下邻空闲分区,要求合并为一个空闲分区登记在空闲分区表的一个表项里。

5、(附加)若需要可以实现程序的浮动,对内存空间进行紧凑。

实验4 页面置换算法(2学时)
一、实验目的
通过实验加强对虚拟存储管理中页面置换算法的理解和掌握。

二、实验内容
编写程序实现虚拟存储管理中OPT,FIFO,LRU页面置换算法。

三、实验要求
1、任意给出一组页面访问顺序(如页面走向是1、
2、5、7、5、7、
1、4、3、5、6、4、3、
2、1、5、2)。

2、分配给该作业一定的物理块(如3块、4块等)。

3、利用OPT,FIFO,LRU页面置换算法模拟页面置换过程并计算其缺页率。

4、每访问一个页面均需给出内存中的内容(内存中的页面号),若有淘汰还需给出淘汰的页面号。

5、通过给出特殊的页面访问顺序,分配不同的物理块,利用FIFO 算法计算其缺页率,进一步理解Belady现象。

6、(附加)实现CLOCK置换算法,修改位可在确定页面号时直接任意给出。

实验5 设备管理(2学时)
一、实验目的
理解设备管理的概念和任务,掌握独占设备的分配、回收等主要算法的原理并编程实现。

二、实验内容
编写程序实现对独占设备的分配与回收的模拟。

三、实验要求
1、实现设备分配、回收、显示系统中设备信息的功能。

2、通过设备类表和设备表记录系统中设备信息、以便进行设备分配。

3、设备类表记录系统中全部设备的情况,每个设备类占一个表目,设备类表的数据结构如表1所示。

图1 设备类表
4、为每一个设备配置一张设备控制表,用于记录本设备的情况。

设备控制表的数据结构如图2所示。

图2 设备控制表
4、程序中建立分配设备和回收设备函数。

5、设系统有3类设备,每类设备的设备数分别为2、3、4。

6、要求键盘输入作业名、作业所需设备类和设备相对号。

实验6 SPOOLING技术(2学时)
一、实验目的
理解和掌握SPOOLING技术。

二、实验内容
编写程序实现SPOOLING技术的模拟。

三、实验要求
1、设计一个实现SPOOLING技术的进程
设计一个SPOOLING输出进程和两个请求输出的用户进程及一个SPOOLING输出服务程序。

SPOOLING输出进程工作时,根据请求块记录的各进程要输出的信息,将其实际输出到打印机或显示器。

这里,SPOOLING进程与请求输出的用户进程可并发运行。

2、设计进程调度算法
进程调度采用随机算法,这与进程输出信息的随机性相一致。

两个请求输出的用户进程的调度概率各为45%,SPOOLING输出进程为10%,这由随机数发生器产生的随机数模拟决定。

3、进程状态
进程基本状态有3种,分别为可执行、等待和结束。

可执行状态
就是进程正在运行或等待调度的状态;等待状态又分为等待状态1、等待状态2、等待状态3。

状态变化的条件为:
(1)进程执行完成时,置为“结束”状态。

(2)服务程序在将输出信息送至输出井时,如发现输出井已满,将调用进程置为“等待状态1”。

(3)SPOOLING进程在进行输出时,若输出井空,则进入“等待状态2”。

(4)SPOOLING进程输出一个信息块后,应立即释放该信息块所占的输出井空间,并将正在等待输出的进程置为“可执行状态”。

(5)服务程序在输出信息到输出井并形成输出请求信息块后,若SPOOLING进程处于等待状态则将其置为“可执行状态”。

(6)当用户进程申请请求输出块时,若没有可用请求块时,调用进程进入“等待状态3”。

4、数据结构
1)进程控制块PCB
struct pcb
{
int status;
int length;
}pcb[3];
其中status表示进程状态,其取值:
0 表示可执行状态;
1 表示等待状态1;
2 表示等待状态2;
3 表示等待状态3
2)请求输出块reqblock
struct{
int reqname;//请求进程名
int length;// 本次输出信息长度
int addr;// 信息在输出井的首地址
}reqblock[10];
3)输出井BUFFER
SPOOLING系统为每个请求输出的进程在输出井中分别开辟一个区。

本实验可设计一个二维数组(int buffer[2][10])作为输出井。

每个进程在输出井最多可占用10个位置。

5、编程说明
为两个请求输出的用户进程设计两个输出井。

每个可存放10个信息,即buffer[2][10]。

当用户进程将其所有文件输出完时,终止运行。

为简单起见,用户进程简单的设计成:每运行一次,随机输出数字0~9之间的一个数,当输入10个数时形成一个请求信息块,填入请求输出信息块reqblock结构中。

实验7 文件管理(4学时)
一、实验目的
理解文件系统的主要概念及文件系统内部功能和实现过程。

二、实验内容
采用二级文件目录结构,编写程序实现文件系统的文件存储空间的管理、文件的物理结构、目录结构管理和文件操作。

三、实验要求
1、设计一个有m个用户的文件系统,每个用户最多可保存一个文件。

2、规定用户在一次运行中只能打开K个文件。

3、系统能检查键入命令的正确性,出错时应能显示出错原因。

4、对文件应能设置保护措施,如只能执行、允许读、允许写等。

5、对文件的操作设计提供一套文件操作:
CREATE建立文件;
DELETE删除文件;
OPEN打开文件;
CLOSE关闭文件;
READ读文件;
WRITE写文件。

6、二级目录结构如下图所示。

主文件目录MFD
用户文件目录UFD。

相关主题