调度器简介

内核中用来安排进程执行的模块称为调度器(scheduler),它可以切换进程状态(process state)。例如执行、可中断睡眠、不可中断睡眠、退出、暂停等。

调度器是CPU中央处理器的管理员,主要负责完成做两件事情:

一、选择某些就绪进程来执行,

二是打断某些执行的进程让它们变为就绪状态。调度器分配CPU时间的基本依据就是进程的优先级。上下文 切换(context switch):将进程在CPU中切换执行的过程,内核承担 此任务,负责重建和存储被切换掉之前的CPU状态。

调度优先级

linux采用next记录调度优先级,共有40个,每个nice相差10%,意思是高一位的优先级比低一位优先级多执行10%的时间,

如果上升1级,CPU使用率为-10%,如果下降1级 CPU使用率为+10%。

为了实现这一点,我们使用了1.25的乘数。 如果一项任务上升约10%,

而另一项任务下降约10%,则 它们之间的相对距离约为25%。

linux调度器以模块的方式提供,允许不同类型进程可以又在针对性选择调度算法。这种模块称为调度器类,每个调度器类都有一个优先级,他会按照优先级顺序遍历调度器类,拥有一个可执行进程的最高优先级的调度器类胜出,去选择下面要执行的那一个程序。

sched_class结构体表示调度类,定义在kernel/sched/sched.h。

Linux 调度类:dl_sched_class 、rt_sched_class 、fair_sched_class 及idle_sched_class 等。

本图的调度器类优先级从上到下降序。每个进程都有一个调度策略,每个调度策略对应一个调度类(每个调度类可以对应多个策略)。

调度策略

rt_sched_class 实时调度器

调度策略 SCHED_FIFO 先进先出

SCHED_RR 增加了时间片的先进先出

fair_sched_class 类 完全按公平调度器

_SCHED_NORMAL :用于普通进程通过CFS调度器实现。
_

SCHED_IDLE:优先级最低,在系统空闲时才执行这类进程。

SCHED_BATCH 用于非交互处理器消耗型进程

实时进程永远比普通进程先运行。

Original: https://www.cnblogs.com/thotf/p/16262991.html
Author: thotf
Title: 调度器简介

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582268/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 搭建ES集群

    添加以下elasticsearch用户: bash;gutter:true; 1 useradd elasticsearch 2 passwd elasticsearch</…

    Linux 2023年6月8日
    084
  • PYTORCH: 60分钟

    什么是PyTorch? PyTorch 是一个基于Python的科学计算包,有两大用途: NumPy的替代品,可使用GPUs和其它加速器的强大功能 一个用于实现神经网络的自动微分库…

    Linux 2023年6月16日
    0169
  • JS 模块化- 05 ES Module & 4 大规范总结

    1 ES Module 规范 ES Module 是目前使用较多的模块化规范,在 Vue、React 中大量使用,大家应该非常熟悉。TypeScript 中的模块化与 ES 类似。…

    Linux 2023年6月6日
    0131
  • deepin安装Redis步骤以及简单配置

    一、安装Redis 安装完成之后,Redis服务器会自动启动 二、检查Redis服务器系统进程(非必要) 三、查看Redis端口状态(非必要) 四、输入redis-cli进入命令模…

    Linux 2023年5月28日
    0107
  • 剑指offer计划19( 搜索与回溯算法中等)—java

    1.1、题目1 剑指 Offer 64. 求1+2+…+n 1.2、解法 这题看评论区真的绝了,都是人才,各个说话都好听,我看到个还有用异常来结束的就离谱。这题用了&a…

    Linux 2023年6月11日
    093
  • rm命令弱爆了!

    大家好,我是良许。 创建、删除和修改文件是用户在 Linux 系统中执行的非常常见操作。大家都知道,在 Linux 系统里使用 rm 命令删除单个文件时,几乎一瞬间就完成了。但是如…

    Linux 2023年6月14日
    096
  • Java动态脚本Groovy获取Bean(奇淫技巧操作)

    前言:请各大网友尊重本人原创知识分享,谨记本人博客: 南国以南i 背景: 在Java代码中当我们需要一个Bean对象,通常会使用spring中@Autowired注解,用来自动装配…

    Linux 2023年6月14日
    0104
  • 【转】认识长轮询:配置中心是如何实现推送的?

    一 前言 传统的静态配置方式想要修改某个配置时,必须重新启动一次应用,如果是数据库连接串的变更,那可能还容易接受一些,但如果变更的是一些运行时实时感知的配置,如某个功能项的开关,重…

    Linux 2023年6月16日
    0119
  • POJ3368(Frequent values)–线段树

    题目在这里3368Accepted 7312K 1829MSC++ 6936B 题意为给你一组数据,再给定一组区间,问你这个区间内出现次数最多的元素的次数是多少。 我还记得这题是学…

    Linux 2023年6月7日
    0112
  • redis分享PPT材料

    上次在公司类做了一个redis分享,特别想把ppt上传上来,好像博客园不支持,那就截图把 1.简介 redis是什么: redis是一个nosql(not only sql不仅仅只…

    Linux 2023年5月28日
    076
  • 消息中间件MQ的学习境界和路线

    在《深入理解Java类加载机制,再也不用死记硬背了》里我提到了对于一门语言的”会”的三个层次。本篇将以知识地图的形式展现学习消息中间件MQ各个层次要掌握的内…

    Linux 2023年6月14日
    0112
  • cpu idle 状态查看【原创】

    查看cpu idle的类型 cat /sys/devices/system/cpu/cpu0/cpuidle/state0/desc ARM WFI 查看cpu idle进入的次数…

    Linux 2023年6月8日
    0109
  • Ubuntu系统中防火墙的使用和开放端口

    sudo sudo apt-get install ufw sudo ufw status inactive: 不活跃,未开启 active:开启 sudo ufw enable …

    Linux 2023年5月27日
    084
  • Linux系统卡死后紧急处理

    前言:Linux系统卡死了的情况有很多,最常见的是系统负载过高导致的。还可以运行内存耗用极大的程序(如虚拟机),也会迅速提升系统负载。注意:不能再试图依赖任何图形界面的东西,如 G…

    Linux 2023年6月7日
    0101
  • python串口助手

    最近项目中要使用模拟数据源通过向外发送数据,以前都是用C#编写,最近在研究python,所以就用python写了一个串口助手,方便以后的测试。 在电脑上通过虚拟串口助手产生两个虚拟…

    Linux 2023年6月14日
    0101
  • 最新超详细VMware下CentOS系统安装

    一、了解CentOS系统 CentOS是免费的、开源的、可以重新分发的开源操作系统,CentOS(Community Enterprise Operating System,中文意…

    Linux 2023年6月15日
    0138
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球