三言两语说说进程调度
时间片是一个数值,它表明进程在被抢占之前可以持续运行的时间。
调度程序总是选择时间片未用尽而且优先级最高的进程运行。
进程不一定一次就用完所有的时间片,可以分几次通过多次调度用完。
进程时间片用尽后在本论调度中不会再被运行,直到等待其他所有进程的时间片耗尽,在那个时候,所以进程的时间片将被重新计算。
一个CPU有一个可执行队列,一个可执行队列有两个优先级数组。活动优先级数组和过期优先级数组。
进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进程的优先级变化。
一个CPU有多个等待队列,根据不同的事件类型进行划分,当一个进程由于等待某一个事件而进入睡眠时,即被加入到该事件的等待队列中,如果当某个事件的等待队列的条件到达时,所有的进程都被移动到可执行队列等待调度。
可执行队列把处于TASK_RUNNING状态的所有进程组织在一起。 TASK_STOPPED或 TASK_ZOMBIE状态的进程不链接在专门的链表中,也没必要把它们分组,因为父进程可以通过进程的PID,或进程间的亲属关系检索到子进程。把TASK_INTERRUPTIBLE 或 TASK_UNINTERRUPTIBLE状态的进程再分成很多类,其每一类对应一个特定的事件。在这种情况下,进程状态提供的信息满足不了快速检索进程,因此,有必要引入另外的进程链表。这些链表叫等待队列。等待队列在内核中有很多用途,尤其对中断处理、进程同步及定时用处更大。