课程设计说明书。
设计题目操作系统课程设计。
班级信管。学号。
姓名。山东科技大学。
2024年12 月 15 日。
课程设计任务书。
学院信息学院专业信息管理与信息系统班级 11-2
姓名胡晓迪
一、 课程设计题目: 设计1 死锁相关算法;设计2 cpu调度算法;
设计3 磁盘调度算法。
二、课程设计主要参考资料。
1) 计算机操作系统第三版。
2) c++ 面向对象程序设计。
3) 网上相关资料。
三、课程设计应解决的主要问题:
1)死锁相关算法的模拟实现。
2)cpu调度算法的模拟实现。
3)磁盘调度算法的模拟实现。
四、课程设计相关附件(如:图纸、软件等):
codeblocks10.05编程软件。
五、任务发出日期: 2013.09.01 课程设计完成日期: 2013.12.15
指导教师签字。
指导教师对课程设计的评语。
成绩。指导教师签字。
年月日。设计1 死锁相关算法的模拟实现。
一:设计目的。
通过银行家算法设计与实现,可以加深对死锁的理解,掌握死锁的预防、避免、检测和解除的基本原理,重点掌握死锁的避免方法—银行家算法。初步具有研究、设计、编制和调试操作系统模块的能力。
二:设计要求。
1) 编写算法,实现银行家算法、安全性算法、死锁检测算法。
2) 判断系统安全状态、判断进程的资源请求是否可以被满足、判定系统是否为死锁状态。
3)算法所需的各种参数由输入产生(手工输入或者随机数产生)
4)输出各种判定结果(是否安全、安全序列、是否死锁、是否允许分配)
三、设计说明。
银行家算法实现系统是一个进程动态请求资源的模拟系统,实现系统为进城随机产生请求资源的数量,系统通过资源安全性检查,检查是否满足安全要求。若安全,则才分配资源;不安全时,系统恢复申请前的状态;只有当进程满足全部的资源需求时,该进程执行结束,释放所占的资源。
开始时,输入当前进程资源的状态以及整个系统的资源使用情况,即进行初始化安全性检查;如果是不安全状态,重新初始化系统;否则,给进程分配资源,并使用银行家算法进行检测,输出当前系统的状态和安全序列;如果是安全状态,系统继续从等待队列中提取等待进程进行检查,并且再分配所需的资源,当所需的资源已经满足进程所需资源时,便释放所占的资源;如果是不安全状态,进程恢复到原先的状态。
如下为银行家算法系统模块图:
主程序模块图。
银行家算法流程图。
安全性算法流程图:
四、运行结果及分析。
五、总结。由于使用进程编程较少,所以也遇到了一些问题,无论是哪种算法或问题首先要有自己的思路,接下来就是通过语言的实现。遇到的最大的问题就是不了解银行家算法和安全性算法,所以刚开始无从下手,还有问题就是编译调试中的问题。
我通过网上和图书馆查阅相关的资料,对这两种算法有了初步的了解,然后提出自己的设计思路,对于一些自己模糊和不清楚自己又解决不了的问题那就问同学和上网查阅资料。
通过这次实验,让我更加全面的复习了c语言和c++,也让我加深了操作系统的知识,知道了系统给进程分配资源时解决死锁的方法,对安全算法和银行家算法有了一定的了解。通过借阅图书馆的书籍,查阅相关的资料,弄懂了算法的含义,解决了相关的问题,让我收获匪浅。
设计2 cpu调度算法的模拟实现。
一:设计目的。
通过cpu调度相关算法的实现,了解cpu调度的相关知识,通过实现cpu调度算法,理解cpu的管理,以及不同的cpu调度算法实现过程。体会算法的重要性。
二:设计要求。
1)编写算法,实现fcfs、非抢占sjf、可抢占优先权调度、rr
2)针对模拟进程,利用cpu调度算法进行调度。
3)进行算法评价,计算平均周转时间和平均等待时间。
4)调度所需的进程参数由输入产生(手工输入或者随机数产生)
5)输出调度结果。
6)输出算法评价指标。
三、设计说明。
采用数组存储进程属性;
course[100][6];
course的行坐标是进程名,course的纵坐标0表示进程到达时间,1表示服务时间,2表示开始执行时间,3表示完成时间,4表示周转时间,5表示等待时间。
1、fcfs
先来先服务调度算法是一种最简单的调度算法,当作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个最先进入该队列的作业。
2、非抢占sjf
短作业优先调度算法,是指对短作业有限调度算法。是从后备队列中选择一个估计运行时间最短的作业将他们调入内存。
3、可抢占优先权调度。
在这种方式下,系统把处理机分配给优先级最高的进程,使之执行。但在其执行期间,只要出现另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理及分配给新到的优先权最高的进程。
4、rr系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把cpu分配给队首的进程并令其执行一个时间片。当执行的时间片用完时,有一个计时器发出时钟中断请求。调度程序便据此信号来停止该进程的执行,并将他送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首过程。
流程图:四、运行结果及分析。
输入进程数:5 有如下运行结果:
五、总结。cpu调度算法在我看来是这几个设计中难度较高的,在了解了算法的运行后,我试着编写了一下程序,发现编写的难度过高,于是我放弃了自己编写,开始在网上找参考资料,此次程序就是参考网上资料写的。
该程序实现了fcfs、非抢占sjf、可抢占优先权调度、rr,调度所需的进程参数由随机数产生,基本上运用了c语言的编写思想,编写了4个函数fcfs()、sjf()、rob()、rr(),在主函数中调用各函数以实现cpu调度算法的运行。
通过该实验,让我更加了解了cpu调度算法的运行流程,也对进程的调度有了更加深刻的认识。
设计3 磁盘调度算法的模拟实现。
一:设计目的。
通过实现磁盘调度算法,理解磁盘存储器的管理,以及不同的磁盘调度算法实现过程。
二:设计要求。
1) 编写算法,实现fcfs、sstf、scan、csan调度算法。
2) 针对给定的磁盘访问序列,运行各种调度算法得出调度过程。
3) 算法所需的各种参数由输入产生(手工输入或者随机数产生)
4)输出调度过程、平均寻道长度。
三、设计说明。
1、fcfs调度算法:
这是一种最简单的磁盘调度算法,它根据进程请求访问的先后次序进行调度。
2、sstf调度算法:
该算法要求访问的磁道与当前磁头所在的磁道距离最近,以使每次寻道时间最短。实现时,先将被访问的磁道号进行从小到大的排序,然后看已排好序的数组最小值是否比用户输入的当前磁道大,若是则按从小到大的顺序输出即为调度过程,若已排好序的数组最大值小于当前磁道,则按从大到小的顺序输出即为调度过程,若两者均不符,则逐一判断k值(数组下标为k的值小于当前磁道,数组下标为k+1的值大于当前磁道),先要判断这两个部分与当前磁道接近的值与当前磁道的距离,先输出距离短的那部分,k值之前的按从大到小输出,k值之后的按从小到大输出。
3、scan调度算法:
此算法在考虑到欲访问磁道与当前磁道间的距离基础上,更优先考虑磁头当前的移动方向。程序中1 代表磁道号增加方向,0代表磁道号减小方向,前半部分的数组排序,定位k值都是同于sstf算法的,只是在此基础上加入磁臂的移动方向。
4、 cscan调度算法:
为了减少scan算法中的延迟,cscan算法规定磁头只能单向移动,例如,只是自里向外移动,当磁头移动到最外边时,立即返回到最里的磁道访问,即将最小磁道号紧接着最大磁道号构成循环,**实现思想同scan算法。
下图显示了本次调度执行时磁头移动的轨迹:
循环结束后,根据磁头移动方向选择合适线程的流程图:
四、运行结果及分析。
五、总结。完成此算法主要要解决排序问题,本次实验为网上参考资料而得。此次课程设计中我学到了很多东西,无论在理论上还是实践中,都得到不少的提高,这对于我以后的工作和学习都是一种巨大的帮助。
通过学习实现磁盘调度算法的机制,掌握磁盘调度算法执行的条件和时机,观察fcfs、sstf和scan磁盘调度算法,了解常用的磁盘调度算法。以前只是理论的知识,运用到实验中,理解的更深刻。
操作系统课程设计报告
西安郵電大學。院系名称 计算机学院。专业名称 软件工程。班级 1104 学生姓名 赵大伟。学号 8位 04113124 指导教师 舒新峰。设计起止时间 2013.11.10 2013.11.20 1 通过观察 分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在posix 规范中...
操作系统课程设计报告
课程设计。课程名称操作系统。题目名称多级文件系统 2 学生学院计算机学院 专业班级。学号。学生姓名。指导教师。年月日。目录。一 课程设计 6 二 开发工具及环境 6 三 设计内容 6 四 结构图 8 五 部分 9 六 运行截图 11 七 参考文献 15 八 心得体会 15 本课程设计要求设计一个模拟...
操作系统课程设计报告
实验一进程管理。一 实验目的。1 开发一个函数,建立进程控制块和资源控制块结构,并实现相关数据结构的初始化。2 开发一系列操作,由进程调用这些操作,达到控制进程申请或释放各种资源的目的。通过实验理解进程的概念,进程的组成 pcb结构 进程的并发执行和操作系统进行进程管理的相关原语 主要是进程的创建 ...