上海海事大学计算机08操作系统课程设计
一、课程设计的基本要求
课程设计是在有限的时间内实现模拟操作系统的部分功能,为使课程设计能够有效实施,并取得一定效果,把设计的重点放在操作系统核心内容的模拟上。基本要求如下:
1. 详细描述整个系统设计的总体框架和设计思想,并给出系统的主要模块以及模块间
关系。
2. 详细描述整个系统所使用的全局数据结构,包括结构名称、作用和各个字段的含义。 3. 给出所有模块的详细的设计说明,并画出流程图。
4. 源代码格式规范,并给出注释,以标明函数和数据结构的功能。
5. 系统完成后,提交完整的程序代码、课程设计报告及相关文档,并适当说明设计
中遇到的问题及心得体会。
6. 课程设计使用的开发工具不限,但程序必须是WINDOWS图形界面。
二、课程设计的题目 1、进程调度模拟程序
设计要求:编写一个进程调度程序,模拟实现进程的创建、运行、阻塞、完成等进
程控制,允许多个进程并行的进程调度程序。
a. 系统能够真实模拟多任务操作系统中进程生命周期中的相关活动,主要功能涉及进程
管理和进程调度。
b. 进程状态: 每个进程的状态可以是就绪 W(Wait)、运行R(Run)、阻塞B(Blocked)
或完成F(Finish)四种状态之一。
c. 每个进程相关的数据结构有:进程控制块(PCB)和进程生命周期数据。
? 进程控制块(PCB):至少应该包含如下信息:进程名、优先级、创建时间、需要运行时间、已使用CPU时间、进程状态、进程生命周期数据、队列链表等等。
? 进程生命周期数据:即CPU-I/O时间序列,它是进程调度、进入不同队列的依据。 如序列:10秒(CPU),500秒(I/O),20秒(CPU),100秒(I/O),30秒(CPU),90秒(I/O),110秒(CPU),60秒(I/O)……等,要求序列有一定长度,在进程创建时随机生成,作为进程PCB结构的一个数据项。 d. 系统管理的数据结构 ? 系统PCB结构数组;
? 系统就绪队列、完成队列和阻塞队列;
? 系统参数:时钟(可以调节速度,以利于观看系统运行)、时间片大小; e. 系统运行时的显示信息
时钟以时间片为单位计数,系统每次有进程发生状态改变时都给出改变进程的显著提示信息,系统在运行完每个时间片后都要显示所有队列和相关进程的状态(基本是FCB的值,格式如下仅供参考),以便掌握系统的运行情况。
系统进程状态 队列 执行进程 就绪进程 阻塞进程 完成进程 时间片长度 CPU利用率 进程名 P3 P4 P9 P8 P234 P1 P24 优先级 23 4 6 8 1 5 8 创建时间 4 125 23 65 554 7 88 已运行时间 23 88 58 90 67 4 8 进程状态 Running Wait Wait Blocked Blocked Finish Finish 时钟56 。。。。。。 2 时钟速度 58% 1 重建进程 暂停 继续 提示信息 78% I/O利用率
每个时间片后,系统动作大体顺序如下 :
?根据进程调度算法决定需要更改的进程PCB数据,并调整相关队列,给出提示信息(最好单独出现信息窗口); ?更新显示窗口信息; f. 进程调度算法:
①采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。进程的优先数由随机数产生。 ②采用时间片轮转调度算法和先来先服务算法。
③采用动态优先级调度算法(优先级的计算自己决定,但一个进程的优先级要随时间改变,即UNIX的策略)和先来先服务算法。
2、存储管理模拟程序
设计要求:设计请求页式存储管理方案,并编写模拟程序实现之。页面淘汰算法采用:
① FIFO和LRU页面淘汰算法 ② FIFO和OPT页面淘汰算法。
方案提示:
? ?
系统参数:页面尺寸(例如以 1K或2K为1页)、每个进程内存页表的最大长度; 选择生成序列功能后,随机产生一个进程的随机大小,构建页表并对页表进行初始化,随后随机生成访问的指令地址流(是一系列需要访问的指令的地址)并显示在界面上,并将转换后的页面访问序列也显示在界面上。不失一般性,可以适当地(人工指定或随机数产生器)生成这个序列,使得 50%的指令是顺序执行的,50%的
指令均匀地散布在前后地址部分。
?
按不同的算法功能按钮则执行不同的算法。每访问一个地址时,首先要根据该地址所在的页的页号,然后查页表,判断该页是否在主存——如果该页已在主存,则打印页表情况;如果该页不在主存且页表未满,则调入一页并打印页表情况;如果该页不足主存且页表已满,则按页面淘汰算法淘汰一页后调入所需的页,打印页表情况; 逐个地址访问直到所有地址访问完毕,并即时统计显示缺页率和页面置换情况。执行过程中有速度控制访问每页的时间间隔。
显示结果给出算法执行的最终效果,请使用教科书中的表格形式呈现。
注意:访问的指令地址流不能太少,为能够观察地址的访问情况,最好设置显示速度调节参数,并在关键的地方给出提示信息。 参考界面 ? ?
? 存储管理模拟程序 访问指令 地址流 访问页面 序列 当前访问页面情况 当前 缺页率 58% 执行FIFO 执行LRU 速度 3 生成序列 显示结果 页面尺寸 2
3、磁盘调度算法模拟程序
设计要求:在充分理解磁盘调度算法的原理基础上,独立设计磁盘调度算法,并编写模
拟程序实现之。磁盘调度算法采用:
① FCFS和SSTF算法 ② SCAN和CSCAN汰算法。
方案提示:
? ? ?
运行时,选择生成序列则随机产生磁盘寻道请求序列和当前道号,并显示在界面上。 执行速度用于控制执行过程中两个访问之间的时间间隔。
按不同的算法功能按钮则执行不同的算法。每访问一个磁道时,首先在显示被选择的磁道号,然后把该磁道添加到磁道访问顺序中,并在执行结果中增加一步当前结果。且计算目前为止的平均寻道长度并显示。 参考界面
?
磁盘调度算法模拟程序 磁道请求序列 磁道访问顺序 (53) 98,183,37,122,14,124,65,67 53 37 14 65 67 98 122 124 183 平均寻道长度 58 执行执行SCAN CSCAN 生成序列 执行速度 5 序列长度 20
4、同步问题的实现
设计要求:设计一个Windows程序,并创建两类不同作用的线程(生产者线程和消费
者线程,读者线程和写者线程),他们共享缓冲池,并使用线程同步对象来协调线程之间的同步关系。 要求实现同步和非同步两种运行方式,并给出执行结果的分析描述。生产者线程和消费者线程以及读者线程和写者线程都通过参数设置他们的生产、消费或读写速度。实现的两个同步问题如下:
① 生产者——消费者问题(最简单的为单生产者、单消费者和单缓冲区,较简单的
为单生产者、单消费者和多缓冲区,最后为多生产者、多消费者和多缓冲区,根据自己的情况选择实现)
② 读者——写者问题(同生产者——消费者问题要求)
界面参考样式如下:
生产者—消费者问题 生产的数据 34 125 12 34 aaaaa 34 125 aaaaa 消费的数据 缓冲池的数据 aaaaa 生产速度
15 消费速度 25 同步/非同步 5、模拟文件系统的设计及实现(两人一组)
设计要求:编写一程序,模拟一个简单的文件管理系统。
a. 文件系统通过磁盘上建立的一个文件来模拟一个磁盘分区上的各种文件
操作,通过系统初始化文件分区获得磁盘分区的信息。 b. 提供基本的文件系统调用和文件系统基本操作。 c. 文件系统采用树型目录结构。
d. 文件系统提供的系统调用(带*号的为必做项)
①*建立文件: int creat(path,mode);
②*读文件: string read(int fp, int length);
③*写文件: int write(int fp, string string, int [length]); ④*打开文件 int open(filename, mode); ⑤*关闭文件 int close(int fp);
e. 文件系统提供的操作(带*号的为必做项) ①*删除文件: del filename
②文件拷贝: copy source, dest; ③*显示文件/目录: dir filename ④*创建目录:md pathname ⑤*删除目录:rd dirname ⑥*改变目录:cd dirname
⑦*磁盘格式化: format DestDisk ⑧新建文件:edit filename
f. 用提供的文件系统的系统调用实现类似记事本(edit)的简单程序
?磁盘空间的布局有如下几种:
①类FAT结构,文件物理结构同Windows系统的文件 引导块 根目录 FAT32 数据区 ②类FAT结构,文件物理结构为两级索引文件