1
操作系统课程设计报告
姓 名:
学 号:
班 级:
专 业:
指导教师:
2
目录
一、课程设计的目的........................................................................................................................4
二、课程设计的要求........................................................................................................................4
三、内容一........................................................................................................................................5
3.1、项目描述...................................................................................................................................5
3.2、先来先服务(FCFS)调度算法和 SJF 调度算法原理...............................................................5
3.3、源程序结构分析及代码实现...................................................................................................6
3.3.1、实验环境........................................................................................................................6
3.3.2、设计思想说明................................................................................................................6
3.3.3、数据结构的说明............................................................................................................8
3.3.4、模块的算法流程图........................................................................................................8
3.3.5、代码展示......................................................................................................................12
3.4、运行及测试.............................................................................................................................24
3.5 遇到问题及解决........................................................................................................................26
四、 内容二....................................................................................................................................29
4.1、项目描述.................................................................................................................................29
4.2、shell 脚本编程原理 ................................................................................................................29
4.2.1、shell 脚本语言介绍 .....................................................................................................29
4.2.2、shell 的执行: .............................................................................................................29
4.3、源程序结构分析及代码实现.................................................................................................30
4.3.1、实验环境......................................................................................................................30
4.3.2、设计思想说明..............................................................................................................30
4.3.3、数据结构的说明..........................................................................................................30
4.3.4、模块的算法流程图......................................................................................................30
4.3.5、代码展示......................................................................................................................31
4.4、运行及测试.............................................................................................................................31
4.5、遇到问题及解决.....................................................................................................................32
五、 内容三....................................................................................................................................33
5.1、项目描述.................................................................................................................................33
5.2、实验原理.................................................................................................................................33
5.3、源程序结构分析及代码实现.................................................................................................33
5.3.1、实验环境......................................................................................................................33
5.3.2、设计思想说明..............................................................................................................33
5.3.3、Linux 模块代码: .......................................................................................................34
5.4、运行测试.................................................................................................................................34
5.5、遇到问题及解决.....................................................................................................................35
六、内容四......................................................................................................................................37
6.1、项目描述.................................................................................................................................37
6.2、实验原理.................................................................................................................................37
6.3、源程序结构分析及代码实现.................................................................................................37
6.3.1、实验环境......................................................................................................................37
6.3.2、代码展示......................................................................................................................38
6.4、运行及测试.............................................................................................................................42
6.5、遇到问题及解决.....................................................................................................................44
3
七、内容五......................................................................................................................................45
7.1、项目描述.................................................................................................................................45
7.2、实验原理.................................................................................................................................45
7.3、源程序结构分析及代码实现.................................................................................................45
7.3.1、实验环境......................................................................................................................45
7.3.2、代码展示......................................................................................................................45
7.4、运行及测试.............................................................................................................................47
7.5、遇到问题及解决.....................................................................................................................48
八、课程设计总结..........................................................................................................................50
4
一、课程设计的目的
操作系统是计算机系统的核心系统软件,它负责控制和管理整个系统的资源
并组织用户协调使用这些资源,使计算机高效的工作。《操作系统系统课程设计》
是《操作系统》理论课的必要补充,是复习和检验所学课程的重要手段,本课程
设计的目的是综合应用学生所学知识,通过实验环节,加深学生对操作系统基本
原理和工作过程的理解,提高学生独立分析问题、解决问题的能力,增强学生的
动手能力。
二、课程设计的要求
1.分析设计内容,给出解决方案(要说明设计实现的原理,采用的数据结
构)。
2.画出程序的基本结构框图和流程图。
3.对程序的每一部分要有详细的设计分析说明。
4.源代码格式要规范。
5.设计合适的测试用例,对得到的运行结果要有分析。
6.设计中遇到的问题,设计的心得体会。
7.按期提交完整的程序代码、可执行程序和课程设计报告。
8. 独立完成,每天填写设计日志。
5
三、内容一
3.1、项目描述
要求:理解操作系统中的经典算法,并在 Linux 系统下用 C 程序模拟实现;
内容:
(1)处理机调度算法的模拟实现类
先来先服务调度算法、短作业优先、时间片轮转调度算法、优先级调度算法
等的模拟和比较;
银行家算法的模拟实现;
3.2、先来先服务(FCFS)调度算法和 SJF 调度算法原理
(1)FCFS 调度算法
先来先服务调度算法是一种简单的调度算法,按照进程到达的顺序进行调度。
当一个进程到达后,如果 CPU 空闲,就将其分配给 CPU 执行,否则就将其放入就
绪队列等待。
原理:按照进程到达的先后顺序安排进程的执行顺序。当一个进程到达时,
如果 CPU 空闲,则立即将其分配给 CPU 执行。如果 CPU 正在执行进程,那么新到
达的进程将被放入就绪队列。在当前执行进程执行完毕后,从就绪队列中选择下
一个进程运行。
(2)SJF 调度算法
SJF(Shortest Job First)短作业优先,优先选择执行时间最短的进程。当一
个进程到达时,系统会比较该进程的执行时间与就绪队列中其他进程的执行时间,
将执行时间最短的进程分配给 CPU 执行。
原理:当一个进程到达时,系统首先比较该进程的执行时间与当前正在执行
的进程的执行时间。如果新到达的进程的执行时间比当前正在执行的进程的执行
时间更短,则将 CPU 从当前进程切换到新到达的进程。如果新到达的进程的执行
时间与当前进程一样短或更长,则将新到达的进程放入就绪队列中等待。当前进
程执行完毕后,系统从就绪队列中选择执行时间最短的进程分配给 CPU 执行。SJF
调度算法的目标是使平均等待时间最小化。因为执行时间短的进程可以更快地完
成,所以该算法通常能够获得较低的平均等待时间。
(3)RR 调度算法
RR 调度算法是一种抢占式调度算法,每个进程被分配一个时间片,在时间
片用完后,进程被暂停并放回就绪队列的末尾,下一个进程被调度执行。
原理:每个进程被分配一个固定长度的时间片(例如 10ms)。当一个进程
获得 CPU 后开始执行,如果在时间片结束之前进程执行完毕,则进程继续执行下