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
原文地址:https://blog.csdn.net/m0_61709053/article/details/137733639
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!