113301班。
20113792 刘秀仪。
20113817郑晓雪。
20113811张佳。
2024年12月31日
第一章课程设计目的与要求 1
1.1课程设计目的 1
1.2设计要求 1
1.3课程设计题目 1
第二章算法分析 2
2.1先到先服务调度算法 2
2.2时间片轮转法 3
2.3优先数调度算法 4
2.4多级队列调度算法 4
第三章详细设计与实现 6
3.1主函数 6
3.2先到先服务算法的实现 6
3.4优先级进程调度算法的实现 8
3.5其它函数 8
第四章心得体会 9
参考文献 10
附录一部分源** 11
第1章课程设计及目的与要求。
第一章课程设计目的与要求。
操作系统课程是计算机科学与技术专业以及相关专业的必修课,在课程体系中占有重要地位。操作系统本身具有概念抽象、结构复杂和难于掌握的特点,要想掌握操作系统精髓,不仅要做适量的习题,更重要的是动手能力。通过课程设计,可以加深对基本原理的理解,激发学习兴趣,增强自信心。
在本课程设计过程中要求学生:
1)2名同学一组,选择1个设计题目。
2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩。
3)认真编写课程设计报告。
本课程设计共包括3个题目,内容覆盖了操作系统原理的关键知识点,包括进程调度、内存管理、进程同步、死锁、进程通讯、文件系统及嵌入式操作系统。
题目1:进程调度算法。
题目2:动态异长分区的存储分配与**算法。
题目3:读者/写者问题与进程同步。
我们选择了题目1,进程调度算法。
第2章算法分析。
进程调度算法用于确定就绪队列中的哪一个进程即将获得cpu。常用的进程调度算法有先到先服务法、时间片轮转法、优先数法等。
先来先服务调度算法的基本思想是:以到达就绪队列的先后次序为标准来选择占用处理机的进程。一个进程一旦占有处理机,就一直使用下去,直至正常结束或因等待某事件的发生而让出处理机。
采用这种算法时,应该这样来管理就绪队列:到达的进程的pcb总是排在就绪队列末尾;调度程序总是把cpu分配给就绪队列中的第一个进程使用。先到先服务调度算法如图所示:
图2-1先到先服务调度算法。
时间片轮转调度算法的基本思想是:为就绪队列中的每一个进程分配一个称为“时间片”的时间段,它是允许该进程运行的时间长度。在使用完一个时间片后,即使进程还没有运行完毕,也要强迫其释放处理机,让给另一个进程使用。
它自己则返回到就绪队列末尾,排队等待下一次调度的到来。采用这种调度算法时,对就绪队列的管理与先来先服务完全相同。主要区别是进程每次占用处理机的时间由时间片决定,而不是只要占用处理机就一直运行下去,直到运行完毕或为等待某一事件的发生而自动放弃。
优先数调度算法的基本思想是:为每一个进程确定一个优先数,进程就绪队列按照优先数排序。
如何确定进程的优先数(也就是进程的优先级)?可以从如下几个方面考虑。
1)根据进程的类型。系统中既有系统进程,又有用户进程。系统进程完成的任务是提供系统服务,分配系统资源,因此,给予系统进程较高的优先数能够提高系统的工作效率。
2)根据进程执行任务的重要性。重要性和紧迫性高的进程应当被赋予较高的优先级。
3)根据进程程序的性质。一个cpu繁忙的进程,由于需要占用较长的运行时间,影响系统整体效率的发挥,因此只能给予较低的优先数。一个i/o繁忙的进程,给予它较高的优先数后,就能充分发挥cpu和外部设备之间的并行工作能力。
4)根据对资源的要求。系统资源有处理机、内存储器和外部设备等。可以按照一个进程所需资源的类型和数量,确定它的优先数。
比如给予占用cpu时间短或内存容量少的进程以较高的优先数,这样可以提高系统的吞吐量。
5)根据用户的请求。系统可以根据用户的请求,给予它的进程很高的优先数,作“加急”处理。
多级队列调度算法也称多级反馈队列调度算法,它是时间片调度算法与优先数调度算法的结合。实行这种调度算法时,系统中将维持多个就绪队列,每个就绪队列具有不同的调度级别,可以获得不同长度的时间片。例如,系统维持n个就绪队列,第1级就绪队列中进程的调度级别最高,可获得的时间片最短,第n级就绪队列中进程的调度级别最低,可获得的时间片最长。
具体的调度方法是:创建一个新进程时,它的pcb将进入第1级就绪队列的末尾。对于在第1级到第n-1级队列中的进程,如果在分配给它的时间片内完成了全部工作,那么就撤离系统;如果在时间片没有用完时提出了输入/输出请求或要等待某事件发生,那么就进入相应的阻塞队列里等待。
在所等待的事件出现时,仍回到原队列末尾,参与下一轮调度(也就是每个队列实行先来先服务调度算法);如果用完了时间片还没有完成自己的工作,那么只能放弃对cpu的使用,降到低一级队列的末尾,参与那个队列的调度。对位于最后一个队列里的进程,实行时间片轮转调度算法。
整个系统最先调度1级就绪队列;只有在上一级就绪队列为空时,才去下一级队列调度。当比运行进程更高级别的队列中到达一个进程(可以肯定,在此之前比运行进程级别高的所有队列全为空)时,系统将立即停止当前运行进程的运行,让它回到自己队列的末尾,转去运行级别高的那个进程。
可以看出,多级队列调度算法优先照顾i/o繁忙的进程。i/o繁忙的进程在获得一点cpu时间后就会提出输入/输出请求,因此它们总是被保持在级等较前面的队列中,总能获得较多的调度机会。对于cpu繁忙的进程,它们需要较长的cpu时间,因此会逐渐地由级别高的队列往下降,以获得更多的cpu时间,它们“沉”得越深,被调度到的机会就越少。
但是,一旦被调度到,就会获得更多的cpu时间。
第三章详细设计与实现。
主函数用来显示菜单,接收用户输入的菜单选项,并根据用户的选项执行相应的功能。实现的界面如图所示:
图3-1主菜单界面。
1、创建先到先服务进程调度函数:void fcfs( process pr,int num, int timepice)。
2、输出函数,输出信息包括:进程名字、共需占用cpu的时间、还需占用cpu的时间、优先级、状态。如图所示:
图3-2先到先服务算法的实现。
3.3时间片轮转调度算法的实现
1、创建时间片轮转进程调度函数:void timeturn( process process,int num, int timepice)。
2、输出函数,输出信息包括:进程名字、共需占用cpu的时间、还需占用cpu的时间、优先级、状态。 如图所示:
图3-3时间片轮转调度算法的实现。
1、创建优先级进程调度函数:void priority( process process,int num, int timepice)。
2、输出函数,输出信息包括:进程名字、共需占用cpu的时间、还需占用cpu的时间、优先级、状态。如图所示:
图3-3优先调度算法的实现。
1、void copy ( process proc1, process proc2); 把proc2赋值给proc1。
2、void sort( process pr,int size) ;此函数排序后按优先级从大到小排列。
3、void sort1() 此函数排序后按需要的cpu时间从小到大排列。
本次试验的题目——进程调度算法。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动。进程是系统进行资源分配的独立单元。
从操作系统的角度来看,可将进程分为系统进程和用户进程两类。系统进程执行操作系统程序,完成操作系统的一些功能。用户进程运行用户程序,直接为用户服务。
总而言之,进程就是操作系统为系统和用户提供服务的主要方式。
通过本次课程设计的学习,我们深刻体会到自己需要学习的还有很多,对许多操作系统的运作方式还不是很了解,而且在算法设计中也存在着很大的不足。最值得我们欣慰的就是在合作的过程中取长补短学到了很多,渐渐对操作系统这门课产生了浓厚的兴趣。感谢这次小组的所有成员的帮助和努力,及收获了知识也收获了珍贵的友谊。
还有指导老师的悉心教导。子曰:“温故而知新”,意思就是说温习学过的知识,才能得到新的体会与理解。
而正是此次课程让我们重新温习了之前学的基础课的内容并深入学习。
经过了无数次的调试才能运行成功,不断地改错和增加新的**,让我们的动手能力提高了很多,对操作系统的设计算法也产生了浓厚的兴趣,以后我们会抽更多的时间来学习和完善自我。在充实和快乐中学习,在改进和努力中提高。
1] 左万历等著。计算机操作系统教程。北京:高等教育出版社,2024年。
操作系统课程设计报告
西安郵電大學。院系名称 计算机学院。专业名称 软件工程。班级 1104 学生姓名 赵大伟。学号 8位 04113124 指导教师 舒新峰。设计起止时间 2013.11.10 2013.11.20 1 通过观察 分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在posix 规范中...
操作系统课程设计报告
课程设计。课程名称操作系统。题目名称多级文件系统 2 学生学院计算机学院 专业班级。学号。学生姓名。指导教师。年月日。目录。一 课程设计 6 二 开发工具及环境 6 三 设计内容 6 四 结构图 8 五 部分 9 六 运行截图 11 七 参考文献 15 八 心得体会 15 本课程设计要求设计一个模拟...
操作系统课程设计报告
实验一进程管理。一 实验目的。1 开发一个函数,建立进程控制块和资源控制块结构,并实现相关数据结构的初始化。2 开发一系列操作,由进程调用这些操作,达到控制进程申请或释放各种资源的目的。通过实验理解进程的概念,进程的组成 pcb结构 进程的并发执行和操作系统进行进程管理的相关原语 主要是进程的创建 ...