Linux进程调度策略有哪几种,Linux 进程调度的主要策略

1、Linux 下进程分为5种类别,分别是停止类、截止类、实时类、公平类、空闲类,

每种类别都有一个运行队列,每次调度时,就是先按照类别优先级排序,再按照每个类别内的最高优先级任务调度运行。

e2bbae69f1a11ce6092db00c4836afc6.png

文件:core.c (linux-4.6\kernel\sched)

4d3c53767df90e2544a167eb58394bf0.png

解读:先看下面的for循环,可以看到实现思路是,遍历每种类别,选择下一个可运行的任务。由于大部分任务都属于公平队列,所以,绝大部分情况下,都在公平队列中进行选择,所以,内核开发者在上面的代码中加了likely()提高性能。

62897bd5d23d2abfa73d85cf8160c882.png

5a16df670b006a396e2f50caa33e5158.png

a0ff2fcc9254d32565e5e73a188642cb.png

e21aa15ab92b136d1003f533146abd9c.png

e43e0999d7a920769792eb99253e728e.png

3b069d527e73a13b6051b34fc0f36ffe.png

2、调度程序schedule()的调用次序。

schedule() --- > __schedule () --- > pick_next_task()

文件:core.c (linux-4.6\kernel\sched)

d877692c9b212ebfa3463124c5a7303c.png

6bd65dde8ecbb837aa7df35590dec096.png

。。。。。。(中间有省略)

ebf8fee650eb6922338b8c0e7f65b411.png

linux进程调度之 FIFO 和 RR 调度策略

转载 http://blog.chinaunix.net/uid-24774106-id-3379478.html    linux进程调度之 FIFO 和 RR 调度策略 2012-10-19 18 ...

Linux进程调度(3):进程切换分析

3.调度函数schedule()分析 当kernel/sched.c:sched_tick()执行完,并且时钟中断返回时,就会调用kernel/sched.c:schedule()完成进程切换.我们 ...

深度讲解Linux内存管理和Linux进程调度-打通任督二脉

我在多年的工程生涯中发现很多工程师碰到一个共性的问题:Linux工程师很多,甚至有很多有多年工作经验,但是对一些关键概念的理解非常模糊,比如不理解CPU.内存资源等的真正分布,具体的工作机制,这使得他 ...

Linux进程调度原理

Linux进程调度原理 Linux进程调度机制 Linux进程调度的目标 1.高效性:高效意味着在相同的时间下要完成更多的任务.调度程序会被频繁的执行,所以调度程序要尽可能的高效: 2.加强交互性能: ...

Linux进程调度原理【转】

转自:http://www.cnblogs.com/zhaoyl/archive/2012/09/04/2671156.html Linux进程调度的目标 1.高效性:高效意味着在相同的时间下要完成更 ...

Linux进程调度与源码分析(二)——进程生命周期与task_struct进程结构体

1.进程生命周期 Linux操作系统属于多任务操作系统,系统中的每个进程能够分时复用CPU时间片,通过有效的进程调度策略实现多任务并行执行.而进程在被CPU调度运行,等待CPU资源分配以及等待外部事件 ...

Linux进程调度与源码分析(一)——简介

本系列文章主要是近期针对Linux进程调度源码进行阅读与分析后的经验总结,分析过程中可能结合部分Linux网络编程的相关知识以便于理解,加深对Linux进程调度的理解和知识分享. 本系列文章主要结合L ...

[转载]Linux进程调度原理

[转载]Linux进程调度原理 Linux进程调度原理 Linux进程调度的目标 1.高效性:高效意味着在相同的时间下要完成更多的任务.调度程序会被频繁的执行,所以调度程序要尽可能的高效: 2.加强交 ...

【原创】(五)Linux进程调度-CFS调度器

背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

随机推荐

robots.txt文件没错,为何总提示封禁

大家好,我的robots.txt文件没错,为何百度总提示封禁,哪位高人帮我看看原因,在此谢过. 我的站点www.haokda.com,robots.txt如下: ## robots.txt for P ...

Visual Studio最常用、最高效的快捷键

查了一些VS编程的快捷键,大家共同学习,共同进步! 1.强迫智能感知:Ctrl+J.智能感知是Visual Studio最大的亮点之一,选择Visual Studio恐怕不会没有这个原因. 2.强迫显 ...

redis报错Windows error 0x70(a large memory)

redis报错Windows error 0x70 redis 嫌弃你内存不够了,就给你不开第二个实例. The Windows version of Redis allocates a large ...

dual

1. dual 确实是一张表.是一张只有一个字段,一行记录的表. 2.习惯上,我们称之为'伪表'.因为他不存储主题数据.3. 他的存在,是为了操作上的方便.因为select 都是要有特定对象的.如:s ...

QT Creator 代码自动补全快捷键设置

在QT Creater界面点Tools再进Options...(找到environment->Keyboard)在里面找到FakeVim目录下的,发现默认快捷键就是CTRL+SPACE,把它删除 ...

Linux编程遇到的问题汇集(持续更新中)

1.源代码编译redis报告错误: undefined reference to `__sync_add_and_fetch_4' 最近项目组在实验Redis,源代码编译的时候,遇到了错误:undef ...

freemind中内容变成html转义字符解决方法

在使用freemind的时候,没有正常关闭,导致原来的内容变成下面这样:

查询所有 &lt ...

n个并发进程共用一个公共变量Q,写出用信号灯实现n个进程互斥的程序描述,给出信号灯值得取值范围,并说明每个取值范围的物理意义。

答: var mutex: semaphore:=1; begin cobegin process i : begin   // i = 1,2,……,n repeat P(mutex); 对公共变量 ...

Docker教程:docker远程repository和自建本地registry

http://blog.csdn.net/pipisorry/article/details/50814307 Docker有一个类似版本管理仓库(Repositry)的东西,有docker.io提供 ...

oracle dblink的创建与使用

一.什么是DBLINK dblink,顾名思义就是数据库的链接. 当我们要跨本地数据库访问另一个数据库中的表的数据时,在本地数据库中就必须要创建远程数据库的dblink,通过该dblink就可以达到访 ...

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值