一、基本概念

  1. 抢占
    • Linux提供抢占式多任务,基于时间片和优先级对进程进行强制挂起
    • 非抢占的系统需要进程自己让步(yielding)
  2. 进程类型
    • IO消耗型
      • 经常处于可运行态,等待IO操作过程会阻塞
      • 提高调度频率,缩短运行时间
    • CPU消耗型
      • cpu时间用于计算
      • 降低调度频率,延长运行时间
    • Linux优先保证响应性能,倾向于优化IO消耗型
  3. 进程优先级

    • 内核的优先级

      • 静态优先级:

        static_prio = MAX_RT_PRIO + nice + 20  [100, 139]
      • 实时优先级 —— 值越大优先级越高

        rt_prio = 99(High) ~ 0(Low)
      • 动态优先级 —— 值越小优先级越高

        • rt

          prio = MAX_RT_PRIO - 1 - rt_prio    [0, 99]    用于实时进程
        • 普通

          prio = static_prio            [100, 139] 用于普通进程
      • normal优先级

        normal_prio = MAX_PRIO - 20        [120]    默认进程优先级,nice = 0
    • 常量

      MAX_RT_PRIO = 100
      MAX_PRIO = 140
      nice = [-20, 19]
    • 关系图

      (High)    0  1 ...    98  99  100 101    ...         120 ...        138 139  (Low)
      |__|_____________|___|___|___|____________|______________|___|
       (High)    99 98 ...     1   0  100 101    ...         120 ...        138 139  (Low)
|__|_____________|___| |___|____________|______________|___|
rt_prio static_prio -20 -19 ... 0 ... 18 19
|___|____________|______________|___|
nice 120
|
normal_prio RT RT ... RT RT 0 1 ... 20 ... 38 39 (Low)
大专栏  Linux内核初探 之 进程(三) —— 进程调度算法top(PR) |__|_____________|___|___|___|____________|______________|___|
  1. 时间片
    • IO消耗型需要短时间片提高系统响应,CPU需要长时间片减小切换消耗以及提高cache命中
    • Linux默认时间片较短,且不是直接分配到进程,CFS分配处理器使用比,当新任务的使用比小于当前进程的时候,可以抢占当前任务
      • 比如响应界面输入的处理器时间小于执行复杂计算,则前者可以抢占后者,使用户输入迅速得到响应
    • nice值作为权重调整处理器使用比

二、Linux调度算法

  1. 调度器类schedular class
    • schedular class以模块方式提供调度器,可动态添加,按优先级选取
  2. 完全公平调度CFS
    • Linux默认SCHED_OTHER策略
  3. 按优先级分配时间片的问题
    • 将nice值映射到绝对时间片,nice值差异越大,时间片差异越大。没有按照整个可用时间片的比例分配,导致优先级低的时候,时间片少,进程切换频繁
      • 如nice值-20时间片100ms,20时间片5ms,则即使系统只有两个时间片20的进程,也各只有5ms
      • 往往低优先级(高nice值)需要更长时间片,与策略相反
    • 相对nice值的差异
      • nice值1代表5ms处理器时间
        • 为0和1,时间片为100和95,为19和20,时间片为10和5
      • nice值加减1的效果取决于初始值
    • 系统定时器决定了
      • 时间片必需是定时器节拍的整数倍
      • 两个时间片之间的差异
      • 时间片会随定时器节拍改变
  4. 完全公平调度CFS
    • 基于概念:将处理器时间平均分配给系统中的所有进程,每个进程的运行时间相当,运行时100%占有处理器
    • 允许每个进程运行一段时间,选择运行最少的运行
    • 按处理器使用比,nice值作为权重
    • 小的调度周期交互性更好,但切换代价高,影响系统吞吐,被限制为1ms以避免切换消耗
    • 进程所获得的处理器时间为其它可运行进程nice值的相对差

Linux内核初探 之 进程(三) —— 进程调度算法的更多相关文章

  1. 《Linux内核分析》 第八节 进程的切换和一般的执行过程

    张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核分析 第八 ...

  2. Linux内核设计第六周 ——进程的描述和创建

    Linux内核设计第六周 ——进程的描述和创建 第一部分 知识点总结 一.进程描述符task_struct数据结构 1.操作系统的三大功能: 进程管理.内存管理.文件系统 2.进程的作用: 将信号.进 ...

  3. Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介

    原文:Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介 Linux内核分析(四) 两天没有更新了,上次博文我们分析了linux的内存管理子系统,本来我不想对接下来的进程管理 ...

  4. Linux内核分析第八周——进程的切换和系统的一般执行过程

    Linux内核分析第八周--进程的切换和系统的一般执行过程 李雪琦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/cou ...

  5. Linux内核设计第八周 ——进程的切换和系统的一般执行过程

    Linux内核设计第八周 ——进程的切换和系统的一般执行过程 第一部分 知识点总结 第二部分 实验部分 1.配置实验环境,确保menu内核可以正常启动 2.进入gdb调试,在shedule和conte ...

  6. 《Linux内核分析》第三周学习报告

    <Linux内核分析>第三周学习报告                                    ——构造一个简单的Linux系统MenuOS 姓名:王玮怡  学号:201351 ...

  7. 《Linux内核分析》第三周学习笔记

    <Linux内核分析>第三周学习笔记 构造一个简单的Linux系统MenuOS 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.stud ...

  8. Linux内核中影响tcp三次握手的一些协议配置

    在Linux的发行版本中,都存在一个/proc/目录,有的也称它为Proc文件系统.在 /proc 虚拟文件系统中存在一些可调节的内核参数.这个文件系统中的每个文件都表示一个或多个参数,它们可以通过 ...

  9. 【读书笔记】《Linux内核设计与实现》进程管理与进程调度

    大学跟老师做嵌入式项目,写过I2C的设备驱动,但对Linux内核的了解也仅限于此.Android系统许多导致root的漏洞都是内核中的,研究起来很有趣,但看相关的分析文章总感觉隔着一层窗户纸,不能完全 ...

随机推荐

  1. 大言不惭 swank? talk about sth or speak too confidently cán,意思是指说大话而毫不感到难为情。出自《论语·宪问》:“子曰:‘其言之不怍,则为之也难。’”宋·朱熹注:“大言不惭,则无必为之志,而不自度其能否也。欲践其言,其不难哉!” 是不是类似于 swank?

    大言不惭 swank? talk about sth or speak too confidently cán,意思是指说大话而毫不感到难为情.出自<论语·宪问>:“子曰:‘其言之不怍,则 ...

  2. java中 Spring 定时器定时任务Quartz的正确使用方法集配置

    定时任务我想大家都不默认,现在流行的框架spring就带了定时任何 我的个人网站(http://www.yzcopen.com)上用户上传的文件都是用这套定时任务执行定时清除 第一步:在applica ...

  3. Drools规则引擎详解-常用的drl实例

    package droolsDemo //说明:每个 drl 都必须声明一个包名,这个包名与 Java 里面的不同,它不需要与文件夹的层次结构一致, //主要用于可以根据kmodule.xml中不同的 ...

  4. PCA|factor extraction|CA

    PCA:主成分分析 相关矩阵,找特征值,找每个特征值对应特征向量,即组成主组成式子: 每个式子指向一个结果y,找一条线将这些y分开.有11个变量就有11个新坐标轴,通过点到直线距离来区分. 信息必须集 ...

  5. 解决 WinForm 重写 CreateParams 隐藏窗口以后的显示问题

    WinForm 启动时隐藏窗体最简单有效的办法是重写 CreateParams protected override CreateParams CreateParams { get { base.Vi ...

  6. git commit撤回操作

    git commit 之后没有push,怎么回撤commit操作呢? $ git reset HEAD~

  7. Python_实战爬虫

    # -*- coding: utf-8 -*-__auther__ = "jiachaojun"__time__ = '2020/1/12 11:03'import request ...

  8. C - Line-line Intersection Gym - 102220C(线段相交)

    There are n lines l1,l2,…,ln on the 2D-plane. Staring at these lines, Calabash is wondering how many ...

  9. PAT甲级——1025 PAT Ranking

    1025 PAT Ranking Programming Ability Test (PAT) is organized by the College of Computer Science and ...

  10. The equal-likelihood model|event|experiment|probability model

    5.1Probability Basics uncertainty is inherent in inferential statistics,因为总是需要样本估计总体,The science of ...