1、 1 操作系统课程设计 一、一、 设计目的设计目的 本课程设计是学习完操作系统原理课程后,进行的一次全面的综合训练。通过这次课程设 计, 让我们更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解, 加 强动手能力。 二、二、 实验环境实验环境 环境不限,可以在 vc 和 java, C#等环境下完成,操作系统平台可以选择 Windows,Linux 等平 台。 三、三、 实验内容实验内容 以下几项实验内容可任选一项完成即可。可分组进行(2 人一组) ,也可独立完成。 (一) 进程调度算法设计与实现 (二) 银行家算法设计与实现 (三) 分区分配与回收算法设计与实现 (四
2、) 假脱机技术算法设计与实现 (五) 文件系统管理算法设计与实现 四、报告目录要求(以银行家算法为例)四、报告目录要求(以银行家算法为例) 一、 设计目的 . 1 二、 设计内容 .错误错误!未定义书签。未定义书签。 三、银行家算法的基本思想 错误错误!未定义书签。未定义书签。 2 (一)死锁 . 5 (二)系统安全状态 . 5 (三)银行家算法避免死锁 . 5 1、银行家算法中的数据结构 5 2、银行家算法 . 6 3、安全性算法 . 6 四、系统模块间关系图,流程图.错误错误!未定义书签。未定义书签。 五、系统子模块结构图 .错误错误!未定义书签。未定义书签。 六、输入、输出数据 错误错误
3、!未定义书签。未定义书签。 七、源程序及系统文件使用说明. 7 (一)源程序 错误错误!未定义书签。未定义书签。 (二)系统文件使用说明 错误错误!未定义书签。未定义书签。 八、心得体会 错误错误!未定义书签。未定义书签。 九、参考文献 错误错误!未定义书签。未定义书签。 五、各算法实现说明五、各算法实现说明 进程调度算法设计与实现进程调度算法设计与实现 要求要求 选用优先数法和多级反馈队列调度算法对 n个进程进行调度。 3 进程是操作系统最终要的概念之一,进程调度又是操作系统核心的主要内容。本设 计要求学生独立的用高级语言编写和调试一个进程调度程序。调度算法包括:优先权调 度算法、多级反馈队
4、列调度算法(可设置菜单由用户选择采取何种调度算法,也可添加 自行设计的调度算法) 。通过本设计加深对于进程调度和各种调度算法的理解,加深理 解有关进程控制块、进程队列的概念,并体会和了解优先数和时间片轮转调度算法的具 体实施办法。 说明与提示说明与提示 设计一个有 n个进程(可假定系统有五个进程)共行的进程调度程序。每一个进程 用一个进程控制块 PCB 来代表。PCB 中应包含下列信息:进程名、进程优先数、进程 需要运行的时间、占用 CPU 的时间及进程的状态等,且可按调度算法的不同而增减。 各进程的优先数或轮转时间片数,以及进程运行需要地时间片数,均由伪随机数发生器 产生。 (1) 调度程序
5、应包含 23 种不同的调度算法,运行时可任选一种。 (2) 每个进程处于运行 R、就绪 W 和完成 F 三种状态之一,假定初始状态都为就绪 状态 W。 (3) 系统能显示或打印各进程状态和参数的变化情况。 为便于处理,程序中进程的运行时间以时间片为基本计算单位。 1. 进程控制块 PCB 的格式为: 进程标识数 链指针 优先数/轮转时间片数 占用 CPU 时间片数 进程所需时间片数 进程状态 2. 优先数算法:进程就绪链按优先数大小排列,链首首先投入运行。每过一个时间片, 运行进程所需运行的时间片数减 1,说明它已运行了一个时间片,优先数也减 3, 理由是该进程如果在一个时间片中完成不了,优先
6、数应降低一级。接着比较现行进 程和就绪链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续运 行,否则,调度就绪链的链首进程投入运行。原运行进程再按照其优先数大小插入 就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。 3. 简单轮转法:进程就绪链按各进程进入的先后次序排列,进程每次占用处理机的轮 转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相应于优先数法的 优先数记录项位置) 。每过一个时间片,运行进程占用处理机的时间片数加 1,然后 比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达 轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它 们的进程状态,直至所有进程完成各自的时间片。 4. 进程控制块链结构: 4 RUN HEAD TAIL 1 3 5 2 . . . . . . . . R W W W 其中: RUN 当前运行进程指针; HEAD进程就绪链链首指针; TAIL 进程就绪链链尾指针。 5 随即函数 rand()通常