操作系统原理课程设计报告
系 (院): 计算机科学学院
专业班级:
姓 名:
学 号:
指导教师:
设计时间:
设计地点:
1
一、课程设计目的 ....................................................................................2
二、设计任务及要求 ................................................................................2
三、需求分析 ............................................................................................2
四、总体设计 ............................................................................................3
五、详细设计与实现[含代码和实现界面] .............................................5
六、课程设计小结 ..................................................................................16
2
一、课程设计目的
《操作系统原理》是计算机科学与技术专业的一门专业核心课程,也是研究
生入学考试中计算机专业综合中所涉及的内容。该课程理论性强,纯粹的理论学
习相对枯燥乏味,不易理解。通过课程设计,可加强学生对原理知识的理解。
二、课程设计的任务和要求
本次课程设计的题目是,时间片轮转调度算法的模拟实现。要求在充分理解
时间片轮转调度算法原理的基础上,编写一个可视化的算法模拟程序。
具体任务如下:
1、根据需要,合理设计 PCB 结构,以适用于时间片轮转调度算法;
2、设计模拟指令格式,并以文件形式存储,程序能够读取文件并自动生成
指令序列。
3、根据文件内容,建立模拟进程队列,并能采用时间片轮转调度算法对模
拟进程进行调度。
任务要求:
1、进程的个数,进程的内容(即进程的功能序列)来源于一个进程序列描
述文件。
2、需将调度过程输出到一个运行日志文件。
3、开发平台及语言不限。
4、要求设计一个 Windows 可视化应用程序。
三、需求分析
在的操作系统都是多任务的操作系统,实际上并不是真正同时运行多个进程,
只不过是进程在频繁切换,而这种切换用户基本上感觉不到,进程调度就是操作
系统来完成的。当以下情况出现时需要操作系统来调度进程:时间片到,即每个
进程所分配的时间片用完后,要跳转到调度程序;占用 CPU 的当前运行进程提
出 I/O 操作,发起对内核的系统调用时,在系统调用结束后,跳转到调度程序;
当前运行进程对所有内核系统调用在结束时都要跳转到调度程序,根据当前的调
3
度信息来决定下一个可以占用 CPU 的进程。
而进程调度的实现就涉及一些算法,本次课设采用时间片轮转调度算法,间
片轮转调度算法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,
每次调度时,把 CPU 分配给队首进程,并令其执行一个时间片。时间片的大小
从几 ms 到几百 ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,
调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,
再把处理机分配给就绪队列的队首进程,同时也让它执行一个时间片。这样就可
以保证就绪队列中的所有进程在一定的时间内均能获得一时间的处理机执行时
间。本次试验就是依据该算法的原理进行设计的,当新进程进入内存后将其放入
第一队列的队尾,然后再按先来先服务的原则排队等待调度。
四、总体设计
4.1 设计原理及语言
按照时间片工作原理:时间片轮转的原则是系统将所有的就绪进程按照先来
先服务的原则排成一个队列,每次调度时,把 CPU 分配队首进程,并令其执行
一个时间片,当执行完时,有一个计时器发出时钟中断请求,该进程停止,并被
送到就绪队列的末尾,然后再把处理机分配就绪队列的队列进程,同时也然它执
行一个时间片。本次课设采用 Java 语言实现。
4.2 系统结构设计
时间片大小固定,由用户输入。进程个数由用户输入。每个进程用一个 PCB
表示。PCB 包括进程名,到达时间,运行时间,剩余时间,进程状态,链接指
针。其中,进程名,到达时间和运行时间由用户输入,剩余时间的初值等于运行
时间。为简单起见,进程状态设为三种:就绪,运行和完成。链接指针指向下一
个进程的 PCB;
按照进程到达的先后顺序排成一个队列。设置一个队头指针指向队列中第一
个进程,并设置一个队尾指针指向队列中的最后一个进程;执行调度时,先选择
4
队首的第一个进程运行。另外设置一个指向当前运行进程的指针;由于本实验是
模拟实验,所以对选中进程并不实际启动运行,而只是执行:被选中进程的状态
置为运行态;被选中进程的剩余时间减去时间片大小;按照队列的顺序依次输出
每个进程的进程名,到达时间,运行时间,剩余时间,进程状态。用这三个操作
来模拟进程的一次运行。
进程运行一次后,以后的调度则将当前指针依次下移一个位置,指向下一个
进程,即调整当前运行指针,以指示应运行进程。同时还应判断该进程的剩余时
间是否为 0。如果不为 0,则等待下一轮的运行;如果该进程的剩余时间为 0,
则将进程的状态置为完成态,并退出队列;若处于就绪态的进程不为空,则重复
第 d 步和第 e 步直到所有进程都运行完为止。
4.3 算法流程图