实现一个进程管理子系统
【问题描述】
在Ubuntu下编制一个程序,模拟实现一个简单的进程管理子系统,它由进程建立模块、进程撤消模块、进程控制表组成,并包括进程切换和调度模块。
【设计要求1】
该子系统接收新进程建立请求的方式是循环显示“请输入新命令行”,然后根据用户键入内容启动相应进程,其后不等待子进程结束,马上显示下一个“请输入新命令行”如此循环往复。
当建立进程时,相应读写进程控制表,然后借助底层环境OS中象fork和exec这样的函数将新进程投入运行(这与底层环境的实际OS不同,实际OS将新进程投入运行时要布置现场,最后时程序技术器寄存器)。进程撤消时,利用底层OS的wait( )从子进程回到本子系统,相应修改PCB。
比较该子系统与实际系统中的相应功能的异同与差距,尤其在现场保存与恢复方面的比较。
【设计要求2】
在上题的基础上,进一步模拟实现进程切换。希望能实现时间片满或接到sleep调用(或信号时)进行进程切换(选择其一即可)。
若要实现时间片,假设时间片为1秒钟,设定底层环境OS每个1秒向该系统发一个信号,本子系统将本子系统的进程切换和调度模块设定为该信号的处理程序。或者每当接到子进程发出的的sleep调用(或信号)时进行进程切换,这里子进程发出的sleep调用(或信号)代表实际系统中可能发生的sleep( )调用、等待某一时间发生等情况,进程调度采用简单的FIFO算法。