分为两类:
- 抢占式多任务
- 非抢占式多任务
进程可分为:IO消耗型、CPU消耗型。
调度方式
(1)优先级调度
- nice值(-20~19):值越大、优先级越低。
nice 值映射到时间片问题:(1)绝对时间片无法保证最优解;(2)nice值越靠近边界、波动越大;(3)定时器节拍问题
- 实时优先级。
(2)时间片
- CFS调度分配的是处理器使用比例、而非时间片。
Linux
进程切换大致由这几步组成:
- 进程的调度是由内核管理的,因此首先会进行用户态到内核态的切换。
- 保存被中断进程的上下文。
- 修改被中断进程的状态信息,并加入到相应的状态队列。
- 调度一个新的进程,加载其上下文。