电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

操作系统时间片轮转法调度

操作系统时间片轮转法调度_第1页
1/8
操作系统时间片轮转法调度_第2页
2/8
操作系统时间片轮转法调度_第3页
3/8
时间片轮转法模拟进程调度 一、基本原理 在时间片轮转法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把 CPU 分配给队首进程,并令其执行一个时间片。当执行的时间片用完时,中断请求,将该程序送往就绪队列的队尾,并把处理机分配给新的队首进程,同时让它也执行一个时间片。这样就保证就绪队列中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。 二、设计思路 首先,创建进程3-5,置低优先级,并依次插入低优先级队列,每次调度时,把处理器分配给队首进程,并给其一个随机数作为时间片的大小,当随机数小于 300 时令其等待,插入等待队列。当随机数大于 300 时,进程执行,并令其执行五个时间片。时间片耗尽时由一个计时器发出时钟中断请求,该进程转为低优先级就绪状态,插入到低优先级就绪队列的队尾,并将处理器分配给下一个进程。当高优先级队列和低优先级队列都为空时,则循环执行进程唤醒,执行等待队列里的进程。 三、运行结果(不唯一) 在运行结果中,按进程插入就绪队列的先后顺序进行调度,进程3 先运行,其时间片耗尽后让其插入低优先级就绪队列的队尾,然后进程4 开始运行,时间片耗尽后进程5 开始运行,在进程5 运行完第四个时间片后,分配给它的第五个时间片大小小于 300,所以进程5等待,插入等待队列。继续调度进程 3 ,直到就绪队列里的进程都由于时间片大小小于 3 0 0 被插入等待队列后,开始唤醒进程 5 ,并将其插入高优先级就绪队列,分配两个时间片,如此循环。 三、源代码: #include #include #include /*********************以下是全局数据结构和变量***********************/ /*PCB 结构*/ struct PCB{ int pname; int pri; int runtime; int waittime; struct PCB *next; }pcb[7]; /* 运行指针*/ struct PCB *running; /*高优先级就绪队列头指针*/ struct PCB *Hready; /*低优先级队列头指针*/ struct PCB *Lready; /*等待队列头指针*/ struct PCB*wait; int A=0; /**************************以下是函数说明****************************/ /*利用循环实现延迟*/ void delay(); /*模拟进程 3-9*/ void proc(struct PCB *running); /*将 node 插入到 head 所指示的队列的尾部*/ void InsertIntoQueueTail(struct PCB **head,struct PCB *node); /*进程...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

操作系统时间片轮转法调度

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部