1、 操作系统操作系统课程设计课程设计 学号: 姓名: 专业: 计算机科学与技术 课程: 操作系统 指导教师: 时间: 2015/3/9 成绩: 1 目录目录 目录 . 1 1设计题目与要求 . 错误错误!未定义书签。未定义书签。 1.1 设计目的. 错误错误!未定义书签。未定义书签。 1.2 设计要求 . 错误错误!未定义书签。未定义书签。 2 总体设计思想 . 错误错误!未定义书签。未定义书签。 2.1 总体设计思想 错误错误!未定义书签。未定义书签。 3 功能设计 4 3.1 数据结构设计 . 4 3.2 程序清单 4 3.3 运行结果 7 4. 设计心得 . 9 5. 参考资料 . 9 附
2、录 . 10 程序源代码: 10 2 一设计题目与要求一设计题目与要求 课题:理机调度模拟程序:选择一个调度算法,实现处理机调度。课题:理机调度模拟程序:选择一个调度算法,实现处理机调度。 1.1.设计目的:设计目的: 在多道程序和多任务系统中, 系统内同时处于就绪状态的进程可 能有若干个。也就是说能运行的进程数大于处理机个数。 为了使系统 中的进程能有条不紊地工作, 必须选用某种调度策略,选择一进程占 用处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处 理机调度的概念。 2.2.设计要求:设计要求: 1)进程调度算法包括:时间片轮转法,短作业优先算法,最高响应 比优先算法。 2)可
3、选择进程数量 3)本程序包括三种算法,可用 C 语言实现,执行时在主界面选择算 法(可用函数实现) ,进入子页面后输入进程数及每个进程的运行时 间,每个进程的优先数由随机函数产生且优先数随等待时间而变化, 执行,显示结果。 二总体设计思想二总体设计思想 (1)进程的创建:由系统为某个进程设置一个进程控制块 PCB, 用于对进程进行控制和管理。 进程任务完成, 由系统收回其 PCB,该 进程便消亡。 3 (2)进程的三种状态:运行、就绪、完成。进程的三种状态可以 通过设计三个链队列来实现:finish 为完成队列的头指针,ready为就 绪队列的头指针,tail 为循环轮转法队列的尾指针。因为每
4、一时刻, CPU 只能运行一个进程, 所以运行队列只有一个 run 指针指向当前运 行进程。 (3)进程调度的功能:按照一定的策略从就绪队列的多个进程中 选取一个进程,使其获得 CPU 而运行。 动态优先数调度算法: 思想:为每一个进程设一个优先数,它总是把处理机给就绪队列中 具有最高优先级的进程。 初始的进程优先数是随机产生的,随 着进程的运行对优先数进行调整, 每次运行时都是从就绪队列 中选取优先数最大的进程运行, 所以将就绪队列按照优先数的 大小从高到低排序,这样,每次取对首进程即可。将进程按优 先数的大小排列在就绪队列中, 每次选取就绪队列中优先权最 高的进程首先占用处理机。 优先数由
5、随机函数产生进程最初的 优先数。优先数的动态变化:进程每执行一次优先数-1。优先 数随着进程的执行进行调整, 每次执行时都从就绪队列中选取 优先数最大的进程投入运行。 时间片轮转调度算法: 思想:将所有进程按照先来先服务的规则排成一个队列,把 CPU 分 配给就绪队列的队首进程,并规定它的执行时间(称此时间为 时间片) ,当时间片用完但并未执行结束时,剥夺该进程的执 行,将其链接到就绪队列的队尾,等待下一次的选择。将就绪 队列的队首指针投入运行。 短作业优先调度算法(不可剥夺式的) 思想:根据估计运行时间的长短,将各个进程排成一个就绪队列(估 计运行时间最短的进程排在队首) ,每次运行将队首进
6、程投入运 行,直到运行结束,将此进程连接到完成队列的队尾。然后,再 将下一个队首进程投入运行,直到所有的进程都运行完毕。 4 三功能设计三功能设计 1.数据结构设计 PCB 结构体: typedef struct node char name10; /*进程时间轮转时间片*/ int pid; /*进程的标号*/ int prio; /*优先级*/ int round; /*时间片*/ int cputime; /*进程占用 cpu的时间*/ int runtime; /*进程运行所用的时间*/ int waittime; /*进程的等待时间*/ int length; /*进程的长度*/ int count; /*计数器*/ char state; /*进程的状态*/ struct node *next;/*链指针*/ PCB ; PCB 结构体用于标识进程的创建与撤