一、Linux内核的调度器框架
概况地说,进程调度包括调度策略(task_struct::policy)和进程切换(比如选择某些就绪的进程来执行、打断某些执行的程序让它们变成就绪态或者阻塞态等)二个重要话题。
调度核心选择下一个合适的task运行时,会按照优先级顺序遍历调度类的pick_next_task成员函数。
其他诸如负载均衡(多处理器系统中用于避免一个处理器过于繁忙而另一个处理器过于空闲的机制)、进程迁移等的话题则是调度核心和调度类协同操作的结果。
1)进程分类
内核中用来安排进程执行的模块称为调度器,它是CPU的管理员,控制着进程对CPU的访问操作,可以让进程更好地分时复用CPU资源。 从调度器的角度,可以将进程分为以下三类:
交互式进程:此类进程有大量的人机交互,因此进程不断得处于睡眠状态,等待用户输入。典型的应用如编辑器。此类进程对系统响应时间要求比较高,否则用户会感觉系统反应迟钝)、
批处理进程:此类进程不需要人机交互,在后台运行,需要占用大量的系统资源。但