本文主要是介绍geekos-project3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、设计目标
研究进程调度算法,掌握用信号量实现进程间同步的方法。为GeekOS扩充进程调度算法——基于时间片轮转的进程多级反馈调度算法,并能用信号量实现进程协作。
二、项目设计要求
1、实现src/geekos/syscall.c文件中的Sys_SetSchedulingPolicy系统调用,它的功能是设置系统采用的何种进程调度策略;
2、实现src/geekos/syscall.c文件中的Sys_GetTimeOfDay系统调用,它的功能是获取全局变量g_numTicks的值;
3、在kthread.c中添加函数Change_Scheduling_Policy(),具体实现不同调度算法的转换。
4、实现syscall.c中信号量有关的四个系统调用:sys_createsemaphore( )、sys_P( )、sys_V( )和sys_destroysemaphore( )。
三、 项目设计提示
(1)在kthread.c中添加函数Chang_Scheduling_Policy(int policy, int quantum),
policy是设置的调度策略,quantum是设置的时间片。
例如policy为 1 说明设置的是多级反馈队列调度算法,此时若g_SchedPolicy(为系统添加的标识算法的变量,初始化为0)为 0 ,说明当前的调度算法为轮转调度,要变成MLF(多级反馈队列调度算法)就必须把空闲线程放入3队列,若g_SchedPolicy为 1 ,说明当前是多级反馈队列调度算法,则返回;
如果policy为 0 ,则说明设置的是轮转调度,此时若g_SchedPolicy为 1 ,则必须把4个队列变成一个队列,即所有的线程都在队列0上了。若g_SchedPolicy为0,则返回。
(2)在系统调用Sys_GetTi
这篇关于geekos-project3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!