1、 1 设计时间:设计时间: 2012012 2- -1 1- -1 1 至至 2012012 2- -1 1- -08 08 姓名:姓名: 学号:学号: 组员:组员: 专业年级:专业年级: 一一. .设计目的:设计目的: 通过课程设计, 加深对操作系统各资源管理模块的理解,掌握操作系统的基本原理及 功能, 具有初步分析实际操作系统、设计、构造和开发现代操作系统的基本能力。 二二. .设计内容:设计内容: 2 2题目:进程调度算法的设计题目:进程调度算法的设计 设计要求:设计要求: 设计进程控制块 PCB 表结构,分别适用于优先数调度算法和循环轮转调度算法。 建立进程就绪队列。对两种不同算法编制
2、入链子程序。 编制两种进程调度算法:1)优先数调度;2)循环轮转调度 开发环境:开发环境:VC+6.0 设计技术参数设计技术参数: : 本程序用两种算法对五个进程进行调度,每个进程可有三个状态,并假设初始状态 为就绪状态。 为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或 轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 在 优 先 数 算 法 中 , 优 先 数 的 值 为50与 运 行 时 间 的 差 值 , 即 P_TIME-process-needtime。进程每执行一次,优先数减 3,CPU 时间片数加 1,进程还需 要的时间片数减 1。在轮转算法中,
3、采用固定时间片(即:每执行一次进程,该进程的执 行时间片数为已执行了 2 个单位) ,这时,CPU 时间片数加 2,进程还需要的时间片数减 2, 并排列到就绪队列的尾上。 对于遇到优先数一致的情况,采用 FIFO 策略解决。 三设计过程三设计过程 1 1、 个人负责实现的功能:个人负责实现的功能: 2 2、 / /函数功能:优先级法调度将进程插入到就绪队列算法函数功能:优先级法调度将进程插入到就绪队列算法 3 3、 4 4、 void FirstInsert(PCB *q)void FirstInsert(PCB *q) 5 5、 6 6、 PCB *p,*s,*r; /*p,*rPCB *p
4、,*s,*r; /*p,*r 用来控制就绪队列滚动,用来控制就绪队列滚动,S S 指向插入的队列指向插入的队列*/*/ 7 7、 int b; /*bint b; /*b 作为插入控制标志的作为插入控制标志的*/ */ 8 8、 s=q;s=q; 2 9 9、 p=READY;p=READY; 1010、 r=p;r=p; 1111、 b=1;b=1; 1212、 if(sif(s- -PRIO=READYPRIO=READY- -PRIO)PRIO) 1313、 1414、 s s- -next=READY;next=READY; 1515、 READY=s; READY=s; 1616、 1717、 elseelse 1818、 1919、 while(p!=NULL)r=p; 2424、 p=pp=p-