欢迎来到天天文库
浏览记录
ID:21697097
大小:77.00 KB
页数:10页
时间:2018-10-23
《minix3 project2 文档》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Minix3project2开发文档F07030315070309764姜骥川目录1ProjectRequirement21.1增加系统调用chrt21.2实现EDF(Earliest-Deadline-First)实时调度算法21.3请自行编写带有以下功能的测试程序22实现思路22.1整体思路:22.2具体实现:32.2.1系统调用chrt()的实现32.2.2修改Minix进程调度算法72.3测试程序的设计71ProjectRequirement1.1增加系统调用chrtl函数格式s=chrt(longdeadline)l函数功能设置进程为实时进程并在deadline秒后结束
2、。如果deadline为0,则将进程设置为非实时进程。设置成功返回0,否则返回1.1.2实现EDF(Earliest-Deadline-First)实时调度算法lEDFdeadline越近的进程越先执行l实时调度设置进程的优先级,保证进程的优先级高于其他用户进程,以保证它的实时性。但要考虑不会影响系统进程的执行。1.3请自行编写带有以下功能的测试程序ldeadline到达时进程结束ldeadline设为0时,进程转变为非实时进程l若有多个实时进程,deadline早的先执行2实现思路2.1整体思路:首先仿照其他的系统调用(如fork),增加一个名为chrt的系统调用。这个系统调用
3、的作用是为调用chrt的进程设置一个闹钟。设置闹钟的方法是利用内核中的时钟任务所提供的set_timer定时功能。同时,这个系统调用还要为该进程的proc结构里新添加的项:p_deadline赋值。下一步是修改Minix的调度算法。将调用chrt的进程的优先级设为7,表示它是实时进程。在每次进程调度pick_proc时,如果遍历的是优先级为7的进程队列,则挑出其中deadline最近的那个进程。2.2具体实现:2.2.1系统调用chrt()的实现第一层:添加用户库函数1、在/usr/src/lib/posix/下添加文件_chrt.c#include#definec
4、hrt_chrt#includePUBLICintchrt(longdeadline){messagem;m.m2_l1=deadline;alarm((unsignedint)deadline);return(_syscall(MM,CHRT,&m));}2、修改/usr/src/lib/posix/下的Makefile.in3、修改/usr/src/lib/syscall/下的Makefle.in4、在/usr/src/include/unistd.h中添加chrt()的声明_PROTOTYPE(intchrt,(longdeadline));5、在/us
5、r/src/include/minix/callnr.h中添加系统调用号#defineCHRT70/*toPM*/第二层:添加pm的系统调用1、在/usr/src/servers/pm/table.C中添加系统调用号do_chrt,/*70=chrt*/2、在/usr/src/servers/pm/proto.h中声明系统调用do_chrt()函数_PROTOTYPE(intdo_chrt,(void));3、在/usr/src/servers/pm/misc.c中实现系统调用do_chrt()函数PUBLICintdo_chrt(){sys_chrt(who_p,m_in.m2
6、_l1);returnOK;}第三层:实现内核库函数1、在/usr/src/include/minix/com.h中添加内核调用号#defineSYS_CHRT(KERNEL_CALL+50)/*sys_shrt()*/#defineNR_SYS_CALLS51/*numberofsystemcalls*/2、在/usr/src/include/minix/syslib.h中声明内核调用库函数_PROTOTYPE(intsys_chrt,(endpoint_tproc_ep,longdeadline));3、在/usr/src/lib/syslib/下添加sys_chrt.c#i
7、nclude"syslib.h"PUBLICintsys_chrt(proc_ep,deadline)endpoint_tproc_ep;longdeadline;{messagem;m.m2_i1=proc_ep;m.m2_l1=deadline;return(_taskcall(SYSTASK,SYS_CHRT,&m));}4、在/usr/src/lib/syslib/下修改Makefile.in第四层:添加内核调用1、在/usr/src/kernel/system.C中添加
此文档下载收益归作者所有