Linux内核原理之进程调度

文章目录第4章 进程调度4.1 多任务4.2 Linux的进程调度4.3 策略4.3.1 I/O消耗型和CPU消耗型的进程4.3.2 进程优先级4.3.3 时间片4.4 Linux调度算法4.4.1 调度器类4.4.2 Unix系统中的进程调度4.4.3 公平调度4.5 Linux调度的实现4.5.1 时间记账4.5.2 进程选择4.5.3 调度器入口4.5.4 睡眠和唤醒4.6 抢占和上下文切换4.6.1 用户抢占4.6.2 内核抢占4.7 实时调度策略第4章 进程调度进程调度程序:在可运行态进程
摘要由CSDN通过智能技术生成

进程调度

进程调度程序:在可运行态进程之间分配有限处理器时间资源的内核子系统

多任务

多任务操作系统是同时并发地交互执行多个进程的操作系统,能使多个进程处于阻塞或者睡眠状态,这些任务位于内存中,但是并不处于可运行状态,他们利用内核阻塞自己,直到某一时间(键盘输入、网络数据等)发生。

多任务系统分为两类:

  • 非抢占式多任务
  • 抢占式多任务

Linux提供了抢占式的多任务模式,由调度程序决定什么时候停止一个进程的运行,以便其他进程得到运行机会,这个强制的挂起动作叫做抢占。

时间片:可运行进程在被抢占之前预先设置好的处理器时间段。

非抢占任务模式下,除非进程自己主动停止运行,否则他会一直运行。进程主动挂起自己的操作称为让步(yielding)

非抢占任务模式的缺点:调度程序无法对每个进程该执行多长时间做出统一规定,进程独占的CPU时间可能超出预期,另外,一个绝不做出让步的悬挂进程就能使系统崩溃

Linux的进程调度

2.6内核系统开发初期,为了提供对交互程序的调度性能,引入新的调度算法,最为著名的是反转电梯最后期限调度算法(RSDL),在2.6.3版本替代了O(1)调度算法,最后被称为完全公平调度算法(CFS)

策略

I/O消耗型和CPU消耗型的进程

CPU消耗型进程把时间大多用在了执行代码上,不属于I/O驱动类型,从系统响应速度考虑,调度策略往往是降低它们的调度频率,而延长其运行时间

调度策略的主要矛盾是:进程响应迅速和最大系统利用率(高吞吐量)

Unix系统的调度程序更倾向于I/O消耗型程序,以提供更好的响应速度。Linux为了保证交互式应用和桌面系统的性能,对进程的响应做了优化(缩短响应时间),更倾向于调度I/O消耗型进程。

进程优先级

调度程序总是选择时间片为用尽而且优先级最高的进程运行

Linux采用了两种不同的优先级范围:

  • 第一种用nice值,范围-20~+19,默认值0;越大的nice值优先级越低。相比高nice值(低优先级)的进程,低nice值(高优先级)的进程可以获得更多的处理器时间
  • 第二种是实时优先级,数值可配置,默认范围是0~99,数值越大优先级越高。任何实时进程的优先级都比普通进程高,实时优先级和nice优先级处于互不相交的范畴
时间片

调度策略选择合适的时间片并不简单,时间片太短会增加进程切换的处理器消耗,太长会导致系统的交互响应变差

Linux的CFS调度器没有直接分配时间片到进程,它是将处理器的使用比划分给进程,所以进程所获得的时间片时间是和**系统负载(系统活跃的进程数)**密切相关的

Linux中新的CFS调度器,它的进程抢占时机取决于新的可运行程序消耗了多少处理器使用比。如果消耗的处理器使用比比当前进程小,则新进程投入运行(当前进程被强占),否则,推迟运行。

总而言之,CFS会先根据进程的nice值预期设定每个进程的cpu使用比,而在进程调度时,需要将新的被唤醒进程实际消耗的cpu使用比和当前进程比较,如果更小,则抢占当前进程,投入运行,否则,推迟运行

Linux调度算法

调度器类

Linux调度器以模块提供,允许不同类型的进程针对性地选择调度算法,这种模块化结构成为调度器类,它允许多种不同的可动态添加的调度算法并存,调度属于自己范畴的进程。

完全公平调度(CFS)是一个针对普通进程的调度类,称为SCHED_NORMAL,具体算法实现定义在文件kernel/sched_fair.c中

Unix系统中的进程调度

传统Unix系统调度:进程启动会有默认的时间片,具有高优先级的进程将运行的更频繁,而且被赋予更多的时间片。存在的问题如下:

  • nice映射到时间片,就会将n
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值