Linux内核CPU调度域内容讲解

本文详细介绍了Linux内核的CPU调度,包括上下文切换、调度策略、调度算法如FCFS、SPN/SJF、HRRN、轮循等,并探讨了实时调度和多处理器调度中的优先级反转问题,旨在帮助读者深入理解Linux内核的调度原理和实践。
摘要由CSDN通过智能技术生成

一、背景知识

1. 上下文切换:

切换CPU的当前任务,从一个进程/线程转换到另一个进程/线程;

但是切换之前要保护现场,保存当前进程/线程在PCB/TCP中的执行上下文(也就是CPU的状态);

切换任务,当然要读取下一个进程/线程的上下文。

2. CPU调度:

从就绪队列中挑选一个进程/线程作为CPU将要运行的下一个进程/线程;

需要调度程序(挑选进程/线程的内核函数);

需要考虑的问题是 调度的时机(从一个状态到另一个状态的时候会发生调度 )。

3. 内核运行调度程序的条件(满足其一即可)

一个进程从运行状态切换到等待状态

一个进程被终结了

4. CPU调度方式(一般指用户态;内核态也可能涉及到是否抢占)

不可抢占

调度程序必须等待事件结束(效率低,不采用);

可以抢占

调度程序在中断被响应后执行;

当前的进程从运行切换到就绪,或者一个进程从等待切换到就绪;

当前运行的进程可以被换出。

二、调度原则

1. 调度策略

2. 执行模型:程序在CPU突发和I/O中交替

每个调度决定都是关于在下一个CPU突发时将哪个工作交给CPU;

在时间分片机制下,线程可能在结束当前CPU突发前被迫放弃CPU 。

3. 调度算法的评价指标

CPU使用率:CPU处于忙状态所占时间的百分比,利用率越高,效率越高;

吞吐量:在单位时间内完成的进程数量,吞吐量越高,效率越高;

周转时间:一个进程从初始化到结束,包括所有等待时间所花费的时间;

等待时间:进程在就绪队列中的总时间;

响应时间:从一个请求(来自用户/外设)被提交到产生第一次响应所花费的时间。

4. 人们要求“更快”的服务

“更快”的概念:(这两个因素是独立的)

传输文件的高带宽

玩游戏时的低延迟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值