如何在xv6中制作新的调度程序?

时间:2014-05-21 17:48:57

标签: xv6

我是XV6的新手所以请耐心等待我:D。 我想制作一个新的调度程序,它是两个调度程序的混合,多级反馈队列(MLFQ)和另一个调度程序。

基本思路很简单:构建一个两级调度程序,首先将作业放入高优先级队列。当作业在第一个队列上使用其时间片时,将其移动到优先级较低的队列;在放弃CPU之前,优先级较低的队列上的作业应该运行两个时间片。当队列中有多个作业时,每个作业应该与它拥有的票数成比例;进程拥有的票证越多,运行的就越多。每个时间片,随机抽奖确定抽奖的获胜者;获胜过程就是那个时间片的过程。

我需要几个新的系统调用来实现这个调度程序。

第一个是int settickets(int num),它设置调用进程的票数。默认情况下,每个进程都应该获得一张票;调用此例程使得进程可以增加它接收的票证数量,从而获得更高比例的CPU周期。如果成功,此例程应返回0,否则返回-1(例如,如果用户传入的数字小于1)。

第二个是int getpinfo(struct pstat *)。此例程返回有关每个正在运行的进程的一些基本信息,包括它被选择运行的次数及其进程ID,以及它所在的队列(高或低)。

任何帮助?任何帮助的人。

0 个答案:

没有答案