《操作系统》实验指导书

  • 格式:doc
  • 大小:44.50 KB
  • 文档页数:8

《操作系统》实验指导书
(适用于计算机科学与技术专业、网络工程、软件工程
和信计专业)
计算机科学与技术学院
软件与理论教研室
2006-7
目录
前言 (3)
实验一、进程管理与进程同步 (4)
实验二、存储器管理 (6)
实验三、设备驱动程序设计 (7)
实验四、文件系统原理与实现 (8)
前言
本课程将系统学习操作系统的基本概念和常用算法以及其发展情况和应用情况。

通过本课程的学习,学生应达到如下要求:1、加深理解操作系统原理。

2、熟悉操作系统的常用算法并完成算法的程序设计。

3、理解当前操作系统的应用前景和新的进展。

本课程主要讲解操作系统的实现原理,如进程管理、进程同步、存储器管理、设备管理和文件系统等。

要求学生理解操作系统的基本原理并完成其中多种著名的操作系统的算法的程序设计和设备驱动程序及文件系统的管理与实现。

学生可以采用任何一种自己熟悉的编程语言完成算法的程序设计,如C/C++、Delphi、VB、VC、C#等。

实验一、进程管理与进程同步
实验目的:
了解进程管理的实现方法,理解和掌握处理进程同步问题的方法并完成程序设计。

实验内容:
实现银行家算法、进程调度的过程模拟、读者-写者同步问题的写者优先算法。

实验步骤:
●理解安全性算法和银行家算法的核心机制;
针对3类资源、5个进程的情况,设计相应的数据结构,分别表示每个进程占用各类资源的情况;
编程实现安全性算法函数,编制主函数,动态输入资源的占用情况,进程的资源申请,调用安全性函数,实现银行家算法;
测试:输入正常、异常数据,测试系统的正确性和健壮性。

●理解进程的三状态调度过程,及各状态间的转换关系;
模拟若干个进程的运行过程,将其存入进程文件中。

如:进程1:运行5秒后有3秒的I/O操作,之后有10秒的运行,结束。

可以写成:”p1:r5,io3,r3 e;”;
编程实现调度算法函数,定义时间片大小和并发进程个数,不断从进程文件中读出进程信息,模拟进程的运行及调度过程;
测试:针对进程文件里面的数据为正常、缺项、格式不正确等各种情况,检测程序的执行结果。

●设计读者--写者问题的写者优先算法;
学习Windows平台下信号量的API函数的使用;
编制读写进程的模拟信息文件,里面包含多个读写进程的运行描述:如0秒到达读进程1,读5秒结束;1秒到达写进程2,写3秒结束;2秒到达读进程3,读4秒结束。

可以写为:
0:1,r,5;
1:2,w,3;
2:3,r,4;
编制读者--写者问题的写者优先算法,从进程模拟信息文件中取出进程信息,按要求启动对应的进程模拟程序,决定出读者/写者进程的运行次序。

测试:针对进程模拟信息文件里面的数据为正常、缺项、格式不正确等各种情况,检测程序的执行结果。

实验结果:
银行家算法程序提供一个用户界面,可以在上边发出资源申请命令,系统应能给出是否可以接受申请,并且有结论输出;
进程调度模拟程序根据一个进程调度文件,模拟进程的各种调度过程,用适合的表达方式表示出来。

写者优先同步控制程序根据一个读写进程模拟信息文件,按照写者优先同步控制过程,用适合的表达方式表示出各读写进程的执行次序。

实验二、存储器管理
实验目的:
理解各类置换算法的原理和虚拟存储器管理的方法。

实验内容:
编程实现LRU算法或CLOCK/改进算法等置换算法(二选一),模拟实现虚拟存储器的地址变换过程。

实验步骤:
●理解LRU或CLOCK改进算法等置换算法;
设计与算法相关的数据结构,如:LRU的堆栈或CLOCK改进算法中的循环结构;
按照最多5块的内存分配情况,编程实现所选算法,动态输入访问内存的块号序列,输出置换结果;
测试:输入合法、非法的访问序列数据,检查程序的正确性和健壮性。

●理解虚拟存储器的地址变换过程;
设计用于模拟快表、页表、地址变换所用的寄存器的数据结构;
编制页表的初始信息文件,举例说明文件中具有的信息:共有5块,每块的状态、在内存和外存的起始地址等。

编程实现虚拟存储器地址变换算法程序,动态输入所要访问的逻辑地址,变换过程文字描述以及变换后的物理地址;
测试:输入有效、无效地址,测试程序的正确性和错误处理能力。

实验结果:
置换算法程序提供内存访问序列的输入界面,输出正确的置换过程描述和置换结果;
虚拟地址变换程序提供逻辑地址输入界面,形象地表示出变换成物理地址的过程与最后变换成的物理地址。

实验三、设备驱动程序设计
实验目的:
了解设备驱动程序的设计过程。

实验内容:
根据给定的部分驱动程序源码,补充设计,使之完整。

并且在系统中加载此驱动。

实验步骤:
掌握开发设备驱动程序的开发工具:DDK,DriverStudio等。

阅读已有的部分驱动程序源码和参考文档;
分组,每组最多4名同学,推选一名管理者,管理者负责具体分工和驱动的某一部分设计,以及与其他同学一起进行驱动程序的链接和调试;
其他同学各自负责某一或几部分驱动程序的开发;
在已有的USB驱动源码的基础上进行设计,使之成为可行的驱动程序。

共分初始化例程、创建设备、即插即用、电源管理和访问硬件例程等部分,具体见所附的参考资料。

加载此驱动程序,测试效果。

实验结果:
所实现的驱动程序可以响应USB设备引起的中断,并对其进行读写。

实验四、文件系统原理与实现
实验目的:
了解操作系统中文件系统的结构和管理过程,掌握经典的算法:混合索引与成组链接法等方法。

实验内容:
编程实现混合索引和成组链接法算法;
实验步骤:
●理解混合索引的原理;
设计支持混合索引算法的索引节点结构;
编程实现混合索引算法,输入文件的总长度,对文件数据进行磁盘块的模拟分配;输入一个需要访问的地址,得出其数据所在的盘快号;
测试:输入有效、无效的地址,检测程序的正确性和容错能力。

●理解成组链接法的原理;
设系统具有30个可用磁盘块,设计支持每组5块的成组链接法的数据结构;
编程实现成组链接法,输出分组信息。

动态输入分配或回收的磁盘块号,输出执行分配或回收的过程描述。

测试:输入正常、过大/小的分配和回收磁盘块号,检测程序的正确性和容错能力。

实验结果:
混合索引算法程序给用户提供一个输入访问地址的界面,并以合适的形式输出计算结果和中间过程描述;
成组链接法程序提供输入命令、盘块号的界面,输出盘块的分组情况和盘块栈的内容。