您的位置:首页 > 运维架构 > Linux

《Linux内核的设计与实现》读书笔记(四)---进程调度

2016-11-25 21:57 330 查看

进程调度

Linux进程调度原理

多任务

多任务操作系统指能同时并发地交互执行多个进程的操作系统。主要分为两类:

非抢占式多任务

抢占式多任务

Linux提供了抢占式的多任务模式,有调度程序决定进程的运行和停止。

调度程序

调度程序主要的工作:

决定进程的运行和停止

决定进程的运行时间

Linux内核在2.6.23后采用“完全公平调度算法”简称CFS

Linux调度策略及算法

策略

策略就是决定调度程序在何时让什么进程运行。而进程可以被划分为I/O消耗型处理器消耗型

I/O消耗型进程:经常处于可运行状态,因为运行时间短、响应时间快。

处理器消耗型进程:尽量降低调度频率,延长运行时间。

进程优先级

Linux采用两种不同的优先级范围,一种是nice值,一种是实时优先级。

nice值:范围-20~+19,值越大优先级越低。

实时优先级:范围0~99,值越大优先级越高。

-任何实时进程的优先级都高于普通进程,所以抢占一般进程。

ps:一个进程不会同时拥有两种优先级。

时间片与CPU使用比

时间片是一个数值,表明进程在被抢占前所能持续运行的时间。

时间片调度策略实现原理

1.确定每个进程占用多少时间
2.选择占用CPU时间最多的进程执行
3.时间片用完后,再次统计每个进程的占用时间,以此类推


CPU使用比是指分配给每个进程的CUP时间,时间的分配不是绝对的。

Linux的CFS调度算法才用的就是处理器使用比,而不是时间片。

CFS算法的调度策略

1.计算每个进程的vruntime,通过update_curr()函数更新进程的vruntime。
2.选择具有最小vruntime的进程投入运行。
3.进程运行完后,更新进程的vruntime,转入步骤2


实时调度策略

Linux提供两种实时调度策略:SCHED_FIFO和SCHED_RR。

Linux提供的非实时调度策略:SCHED_NORMAL。

Linux调度的实现

进程调度与系统调用

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  读书笔记