《Linux内核设计与实现》读书笔记 第四章 进程调度
第四章进程调度
进程调度程序可看做在可运行太进程之间分配有限的处理器时间资源的内核子系统。调度程序是多任务操作系统的基础。通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发执行的效果。
最大限度地利用处理器时间的原则是,只要有可以执行的进程,那么总会有进程在执行。
4.1多任务
多任务操作系统就是能同时并发地交互执行多个进程的操作系统。多任务能使多个进程处于堵塞或者睡眠状态。就是任务位于内存内但是不被执行,直到某一事件发生。
分类:
l 非抢占式:除非进程自己主动停止运行,否则就一直执行。进程主动挂起自己的操作叫让步。缺点:进程独占的时间可能超乎想想。绝不让步的进程会崩溃。
l 抢占式:(Linux提供)由调度程序来决定什么时候停止一个进程,以便其他进程能够得到执行。进程在被抢占之前能够运行的时间是固定的,叫时间片。有效管理时间片能使调度程序从系统全局的角度做出调度决定,可以避免个别进程独占系统资源。
4.2 Linux的进程调度
版本2.4之前,Linux调度程序相当简陋。2.5开发系列的内核中,开始采用O(1)调度程序。O(1)对时间敏感的程序却有先天不足。O(1)调度程序虽然对于大服务器的工作负载很理想,但是在有很多交互程序要运行的桌面交互程序的调度性能引入了新的进程调度算法。为了提高交互程序调度,该算法吸取队列理论,将公平调度的概念引入了Linux调度程序。“完全公平调度算法”,简称CFS。
4.3策略
I/O消耗和处理器消耗型的进程:前者指进程大部分时间用来提交I/O请求,或等待I/O请求。后者进程把时间大多用在执行代码上,除非被抢占,否则一直运行。对于这类进程,调度策略是尽量降低它们的调度频率。调度策略通常要在两个矛盾的目标中寻找平衡。
进程优先级:调度算法中最基本的一类是基于优先级的调度。Linux采用了两种不同的优先级范围。第一种用nice值(-20~+19),越大的nice值意味更低的优先级(反比)。第二种范围是实时优先级(默认0~99),其值可配置,值与优先级成正比。
时间片:表明进程在被抢占前所能持续运行的时间。调度策略必须规定一个默认时间片。时间片过长会导致系统对交互的响应表现欠佳,太短会明显增大进程切换带来的处理器消耗。I/O消耗性不需要长时间片,处理去则需要越长越好。
调度策略活动:理想情况下,调度程序应该给予文编编辑程序相比视频编码程序更多的处理器时间。需要依靠系统分配给文本编辑器比视频解码程序更高的优先级和更多的时间片。
4.4 Linux调度算法
调度器类:Linux是以模块方式提供的,目的是允许不同类型的进程可以针对性地选择调度算法。完全公平调度(CFS)是一个针对普通进程的调度类。
Unix系统中的进程调度:具有高优先级的进程将运行得更频繁,也会被赋予更多时间片,UNxi上优先级以nice值形式输出给用户空间,这样会导致进程切换无法最优化进行。相对nice值,nice值得变化带来的效果很大取决于nice的初始值。如果执行nice值到时间片的映射,我们需要能分配一个绝对的时间片,这要求时间片必须是定时器节拍的整数倍,这样。
公平调度:CFS出发的理念:进程调度的效果应如同系统具有一个理想中的完美多任务处理器。每个进程能获得1/n的处理器时间。但这只是理想状态。但还是需要周期尽量小。CFS的做法是允许每个进程运行一段时间、循环论转、选择运行最少的进程作为下一个运行进程。当进程数量趋于无限,周期则趋于零那么切换消耗则无法接说,所以有最小粒度,就是最小时间片,默认是1ms。
4.5Linux调度的实现
相关代码在kernel/sched_fair.c,有四个组成部分:时间记账,进程选择,调度器入口,睡眠和唤醒。
时间记账:所有调度器都必须对进程运行时间做记账。CFS以此保证公平。
进程选择:CFS会挑具有最小vruntime的进程。CFS用红黑树(自平衡二叉树)来组织可运行进程队列,并在其中迅速找到vruntime最小的进程。
调度器入口:进程调度的主要入口是函数schedule()。
睡眠和唤醒:进程休眠机制,进程标记为休眠,就会从红黑树中移出。唤醒则相反。
4.6抢占和上下文切换
上下文切换:从一个可执行进程切换到另一个可执行进程。
用户抢占:内核即将返回用户空间的时候,如果need_resched标志被设置,会导致schedule()被调用,此时就会发生用户抢占。在以下情况下产生,从系统调返回用户空间时,从中断处理程序返回用户空间时。
内核抢占:Linux完整地支持内核抢占。只要重新调度室安全的,内核就可以在任何时间抢占正在执行的任务。如何是安全:只要没有持有锁就行。
《Linux内核设计与实现》读书笔记 第四章 进程调度的更多相关文章
- Linux内核设计与实现 读书笔记 转
Linux内核设计与实现 读书笔记: http://www.cnblogs.com/wang_yb/tag/linux-kernel/ <深入理解LINUX内存管理> http://bl ...
- 《Linux内核设计与实现》第八周读书笔记——第四章 进程调度
<Linux内核设计与实现>第八周读书笔记——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配 ...
- 《Linux内核设计与实现》 第八周读书笔记 第四章 进程调度
20135307 张嘉琪 第八周读书笔记 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有 ...
- 《Linux内核设计与实现》课本第四章自学笔记——20135203齐岳
<Linux内核设计与实现>课本第四章自学笔记 进程调度 By20135203齐岳 4.1 多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统.多任务操作系统使多个进程处于堵 ...
- Linux内核设计与实现 读书笔记
第三章 进程管理 1. fork系统调用从内核返回两次: 一次返回到子进程,一次返回到父进程 2. task_struct结构是用slab分配器分配的,2.6以前的是放在内核栈的栈底的:所有进程的ta ...
- Linux内核设计与实现 总结笔记(第二章)
一.Linux内核中的一些基本概念 内核空间:内核可独立于普通应用程序,它一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限.这种系统态和被保护起来的内存空间,称为内核空间. 进程上下文:当 ...
- 《Linux内核设计与实现》课本第四章学习总结
进程调度 4.1 多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统. 多任务系统分为两种: 抢占式多任务:Linux提供了抢占式的多任务模式,由调度程序来决定什么时候停止一个进程的运行 ...
- Linux内核设计与实现读书笔记(8)-内核同步方法【转】
转自:http://blog.chinaunix.net/uid-10469829-id-2953001.html 1.原子操作可以保证指令以原子的方式执行——执行过程不被打断.内核提供了两组原子操作 ...
- Linux内核设计与实现——读书笔记2:进程管理
1.进程: (1)处于执行期的程序,但不止是代码,还包括各种程序运行时所需的资源,实际上进程是正在执行的 程序的实时结果. (2)程序的本身并不是进程,进程是处于执行期的程序及其相关资源的总称. (3 ...
随机推荐
- EF多对多更新报错(TableNoTracking引发的bug)
实体映射关系如下,SISTUser和SISTUserRoles存在多对多的关系,生成中间表 public partial class SISTUserMap: EntityTypeConfigurat ...
- Vs2012 创建项目失败 未找到与约束ContractName
刚开始使用vs2012的时候,创建项目失败,后来找到原因 ,是KB2840642V2的原因,于是 卸载之.vs正常
- display用法:
用法: 1.display:fixed: 存在于position定位top,left,right,bottom,fixed:脱离文档流的针对于浏览器窗口大小定位,可以更好的解决"缩小浏览器窗 ...
- 基于Netty与RabbitMQ的消息服务
Netty作为一个高性能的异步网络开发框架,可以作为各种服务的开发框架. 前段时间的一个项目涉及到硬件设备实时数据的采集,采用Netty作为采集服务的实现框架,同时使用RabbitMQ作为采集服务和各 ...
- UWP Composition API - GroupListView(二)
还是先上效果图: 看完了上一篇UWP Composition API - GroupListView(一)的童鞋会问,这不是跟上一篇一样的吗??? 骗点击的?? No,No,其实相对上一个有更简单粗暴 ...
- QT操作EXCEL
介绍一下最基本的QT对EXCEL的读写操作. 声明:转载于:http://blog.csdn.net/czyt1988/article/details/52121360 在使用QT的操作数据库的时候, ...
- PDA固定资产条码管理系统软件-解决固定资产实物清查的瓶颈问题,大大提高清查效率
固定资产管理系统是企业信息化管理中的一个重要组成部分,固定资产具有价值高,使用周期长.使用地点分散.管理难度大等特点.一个企业的良性发展,避免不了的要涉及到企业资产的有效管理.对于那些技术装备密集型的 ...
- Haxe是何物?
最近对haxe很感兴趣,用一种语言统一所有的语言和平台,野心很大. 详细的介绍园子里已有大神发过,地址在这里:http://www.cnblogs.com/xiaotie/archive/2012/0 ...
- 【历史】JavaScript和Java没啥关系!————JavaScript简史
文章的开始先上张图: 图片拍摄自北京图书大厦,代表着现在国内应该是绝大部分书店的现状--Javascript书籍放在Java类当中.甚至很多业内人也一直认为Javascript是Java语言在浏览器内 ...
- 苹果safari浏览器window.open问题
现象:在做项目的过程中,使用window.open打开新窗口,在windows系统的ie,firefox,chrome浏览器上测试均没有问题,在苹果系统的safari浏览器上发现有些window.op ...