操作系统课程设计报告
2023 年 3 月
1
《操作系统课程设计》
组别: 3 组长:谢航
学
号
姓
名
谢航
分
工
进程管理
工 作
量 比
例
20%
成绩
学
号
姓
名
彭启槟
分
工
设备管理
工 作
量 比
例
20%
成绩
学
号
姓
名
周军
分
工
内存管理
工 作
量 比
例
20%
成绩
学
号
姓
名
杨金平
分
工
文件管理
工 作
量 比
例
20%
成绩
学
号
姓
名
李东金
分
工
页面设计,磁
盘调度
工 作
量 比
例
20%
成绩
实
验
题
目
操作系统模拟
自
我
评
价
谢航:
我负责的是进程调度管理部分,主要是实现的功能有:1.进程调度的三种常
见方式:先来先服务,短作业优先和动态优先级时间片轮转法。 2.进程模块和
内存管理模块的通信,传递需要访问的页面号 3.进程和文件管理部分的联系,
打开文件需要创建进程并且生成磁盘调度所需要的磁道顺序 4.用信号量操作
模拟进程同步,主要涉及到实现 PV 操作。
针对本次课设,让我深刻的领会到 CPU 作为计算机大脑的重要性,与其他
板块的工作有着千丝万缕的紧密联系。在写代码前,进程调度就应该提前规划好
设计思路,提前预测可能出现的问题。因为没有提前规划好设备管理部分的联系,
导致我们小组后期合并难度较大,所以放弃了与该部分的联系。
同时,除了实现算法和功能,为了界面的美观,我们选择了用 QT 作为代
码平台。课设的中途为了界面也付出了较多时间。在学习 QT 编程的时候,各种
组件的利用和功能代码的实现,使我更加深刻的理解了模块化编程和面向对象的
好处,不仅利于团队之间相互合作,互相分工,同时也利于自己代码的重复利用
和功能之间的封装,保障代码的简洁和安全性。
周军:
我主要负责内存管理模块,主要是为进程提供申请内存的接口函数,采用固
定分配局部置换策略,在创建进程之前先调用我的分配函数并传递进程所需页框
数,我这边会根据内存的使用情况进行页框的分配。提供一个页面请求函数。在
进程创建时预先讲程序加载到虚拟内存,进程运行的时候需要请求页面,如果内
存中没有就需要在虚拟内训中查找后进行页面置换。这里我提供了 LRU 和 FIFO
页面置换算法,考虑到 OPT 算法是理想算法,需要后面的请求页面对列,然而实
2
际的操作系统需要请求的页面具有随机性,所以在这里没有设计 OPT 算法。最后
进程运行结束后释放内存,释放呢进程在虚拟内存中的程序。
在设计过程中由于我们并没有商量好实现方式所以出现了一些问题。导致
用大量时间完成的工作并没有用,让我深刻体会到合作作业交流的重要性,同时,
我也在这次合作作业中收获很多,不仅在技术知识上有所收获,还让我学会如何
协同工作。
彭启槟:
我负责的是设备管理模块,该模块没有与其他成员的部分连接,故 PCB 各
项数据均由随机函数生成。该模块模拟了 4 个资源,分别是蓝牙,打印机,键盘,
鼠标。通过随机函数生成进程队列,以及请求各个资源的数量,得到矩阵。通过
输入发送进程对资源和的请求,再通过银行家算法,安全性检测算法去计算该请
求是否不会导致系统处于不安全状态。若请求予以通过,则根据该进程申请的时
间占用资源,时间到后结束归还请求与原本占用的资源,完成本次请求。
在该模块的设计过程中,我学会了 qt 的一些基本的开发操作,对死锁的避
免有了相比于一开始更进一步的了解。通过这次的课程设计,我明白了作为一名
计算机专业的学生,必须时刻处于学习的状态,因为科技一直在进步,技术一直
在发展,所学的某项技术可能不久后便会被时代所淘汰!
李东金:
我负责的是界面管理模块,我们组使用 QT 平台来作为基础,它跨平台,
支持很多平台;接口也简单容易上手,开发的效率也很高。我们的界面总共有
四个板块组成:进程管理,内存管理,文件管理(磁盘管理),设备管理。我们
可以进行文件夹的创建以及文件的创建与删除,可以从界面了解磁盘的使用状
态,置换算法 LRU,FIFO 每个进程使用内存的页框数,调度算法
FCFS,SJF,DPTSR 所对应进程的运行信息,还可以执行银行家等算法。
在此次课设中由于初次接触 QT,对很多操作使用还不是特别熟练,因此做
了很多功课,收获也很大,对于 QT 有了一些基本的了解和使用。通过它,我们
的团队合作能力以及个人能力得到了一定的提升,让我明白了 1+1>2 这个道
理。
杨金平:
我负责的是文件系统模块,该模块涉及文件的内部存储结构模块如目录结
构,文件控制块 FCB 结构以及文件数据存储结构等,视图结构上最大简单化了
用户的操作接口,使用 QT 控件接口就能操作文件的创建、删除、修改等操
作。对于存储结构模拟上,针对不同的文件磁盘控件分配方式有不同的模拟结
构,对于文件空间分配方案有:
连续分配修正方案,文件目录存储文件的基本信息以及起始文件块的块地
址,对于每个文件块又有扩展标记用于文件内容扩展时往下链接下一个连续
块。
显式链接分配方案在磁盘里存储一个 FAT 表,里面记录每个磁盘块的下一
扩展块地址,并以指定结束值作为文件的结束标志。因此对于每个文件目录只
需要存储起始磁盘块地址就能在 FAT 表中依次找到下一个文件磁盘块地址。
3
索引分配方案将每个索引块大小设置为磁盘块大小,里面包含文件基本信
息、以及指定数目的文件磁盘块、下一索引块所在磁盘块地址。因此同理文件
目录只需要存储起始索引块的磁盘块地址就能依次遍历文件磁盘块。
当然还有每个文件 FCB 的初始化及更新等其他操作,但每次分配空间前从
空闲空间表中判断是否足够才分配。
虽然在设计过程中总是遇到一些 bug ,涉及到算法问题以及 QT 语法问题,
但通过文件系统的模拟,对操作系统中文件的存储结构、分配方式管理等结构更
加深刻,能够体会得到操作系统对文件工作的高度维护服务,也意识到操作系统
的重要性。
评价指标:
题目内容和要求完成情况 优 良 中 差
对算法原理的理解程度 优 良 中 差
程序设计水平 优 良 中 差
程序运行效果及正确性 优 良 中 差
课程设计报告结构清晰 优 良 中 差
报告中总结和分析详尽 优 良 中 差
成
绩
指导教师
一、 需求分析
1、 课程设计目的
加强学生对操作系统的理解,让我们能够将书本上的知识学以致用,同时也能强
化我们的团队合作能力和实践操作。
2、 编程语言与编程工具
编程语言:C++
编程工具:QT
3、 设计内容
模拟一个采用多道程序设计方法的单用户操作系统, 该操作系统应包括进程管
理、 存储管理、设备管理、文件管理和用户接口五个部分。
二、 概要设计
1、 模块划分:
(1)、进程管理模块
4
(2)、内存管理模块
(3)、文件管理模块
(4)、设备管理模块
(5)、界面管理模块
2、 程序流程图:
进程管理