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