Minix进程调度
Minix的进程调度也和任何多道程序操作系统的调度基本相同,也是主要运用轮转调度原理。Minix分成16个优先级队列,驱动程序进程,服务器程序进程优先级排在前面,然后是用户进程,优先级最低的是idle列,调度顺序当然是先调度优先级高的队列。当然也可以使用Nice系统调用修改进程的优先级。
调度过程中除了优先级是调度决定因素,还有时间片也是调度决定因素。一般驱动程序进程,服务器进程的时间片都分配得很多,通常这些高优先级进程由于时间片都用不完,导致它们常常处于阻塞状态;而用户进程的时间片都分配得很少,当一个进程的时间片使用完成将被移动到队列尾部。当一个时钟中断来临,内核检查那些进程时间片使用完,或处于阻塞状态,然后把这些进程转移到队列尾部。
Minix也是一个抢占式操作系统,当内核发现一个进程用完了时间片,上次运行的进程仍然是此进程,系统可认为这个进程卡在循环里面了,重而导致低优先级的进程无法运行征兆,系统将降低它的优先级。总之系统认为你卡在循环里,影响其它优先级较低的进程,系统就会降低你的优先级。反之,当一个进程时间片运行完了,但没有妨碍其它进程,系统将提高它的优先级。当一个进程没有用完时间片就变为阻塞,系统认为此进程进入了I/O阻塞,系统把此进程移到对尾,当此进程转为就绪状态,系统直接把此进程移动到对列首部,并分配上次所剩余时间片,这样做主要是为了立即响应用户,还有就是I/O操作因读写操作占用内存过多,系统想此进程使用完早点释放大量内存。
posted on 2008-12-28 20:14 john.huang 阅读(1214) 评论(0) 编辑 收藏 举报