我是XV6的新手所以请耐心等待我:D。 我想制作一个新的调度程序,它是两个调度程序的混合,多级反馈队列(MLFQ)和另一个调度程序。
基本思路很简单:构建一个两级调度程序,首先将作业放入高优先级队列。当作业在第一个队列上使用其时间片时,将其移动到优先级较低的队列;在放弃CPU之前,优先级较低的队列上的作业应该运行两个时间片。当队列中有多个作业时,每个作业应该与它拥有的票数成比例;进程拥有的票证越多,运行的就越多。每个时间片,随机抽奖确定抽奖的获胜者;获胜过程就是那个时间片的过程。
我需要几个新的系统调用来实现这个调度程序。
第一个是int settickets(int num),它设置调用进程的票数。默认情况下,每个进程都应该获得一张票;调用此例程使得进程可以增加它接收的票证数量,从而获得更高比例的CPU周期。如果成功,此例程应返回0,否则返回-1(例如,如果用户传入的数字小于1)。
第二个是int getpinfo(struct pstat *)。此例程返回有关每个正在运行的进程的一些基本信息,包括它被选择运行的次数及其进程ID,以及它所在的队列(高或低)。
任何帮助?任何帮助的人。