操作系统 linux 内核的三种进程调度方法
1。SCHED_OTHER 分时调度策略;
2。SCHED_FIFO 实时调度策略。先到先服务;
3,SCHED_RR 实时调度策略,时间片轮转 。
实时进程将得到优先调用,实时进程依据实时优先级决定调度权值,分时进程则通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大。也就是以前使用了 cpu 最少的进程将会得到优先调度。
SHCED_RR 和 SCHED_FIFO 的不同:
当採用 SHCED_RR 策略的进程的时间片用完,系统将又一次分配时间片。并置于就绪队列尾。放在队列尾保证了全部具有同样优先级的RR任务的调度公平。
SCHED_FIFO 一旦占用 cpu 则一直执行。一直执行直到有更高优先级任务到达或自己放弃。
假设有同样优先级的实时进程(依据优先级计算的调度权值是一样的)已经准备好,FIFO时必须等待该进程主动放弃后才干够执行这个优先级同样的任务。
而RR能够让每一个任务都执行一段时间。
同样点:
RR 和 FIFO 都仅仅用于实时任务。
创建时优先级大于0(1-99)。
依照可抢占优先级调度算法进行。
就绪态的实时任务马上抢占非实时任务。
全部任务都採用Linux分时调度策略时,
1,创建任务指定採用分时调度策略。并指定优先级nice值(-20~19)。
2,将依据每一个任务的nice值确定在cpu上的运行时间(counter)。
3。假设没有等待资源,则将该任务增加到就绪队列中。
4。调度程序遍历就绪队列中的任务。通过对每一个任务动态优先级的计算(counter+20-nice)结果。选择计算结果最大的一个去执行,当这 个时间片用完后(counter减至0)或者主动放弃cpu时。该任务将被放在就绪队列末尾(时间片用完)或等待队列(因等待资源而放弃cpu)中。
5,此时调度程序反复上面计算过程,转到第4步。
6。当调度程序发现全部就绪任务计算所得的权值都为不大于0时,反复第2步。
全部任务都採用 FIFO 时
1。创建进程时指定採用 FIFO,并设置实时优先级 rt_priority(1-99)。
2,假设没有等待资源,则将该任务增加到就绪队列中。
3。调度程序遍历就绪队列。依据实时优先级计算调度权值(1000+rt_priority),选择权值最高的任务使用 cpu,该 FIFO 任务将一直占有 cpu 直到有优先级更高的任务就绪(即使优先级同样也不行)或者主动放弃(等待资源)。
4,调度程序发现有优先级更高的任务到达(高优先级任务可能被中断或定时器任务唤醒。再或被当前执行的任务唤醒,等等)。则调度程序马上在当前任务 堆栈中保存当前cpu寄存器的全部数据。又一次从高优先级任务的堆栈中载入寄存器数据到cpu。此时高优先级的任务開始执行。
反复第3步。
5,假设当前任务因等待资源而主动放弃cpu使用权。则该任务将从就绪队列中删除。增加等待队列。此时反复第3步。
全部任务都採用RR调度策略时
1。创建任务时指定调度參数为 RR,并设置任务的实时优先级和nice值(nice值将会转换为该任务的时间片的长度)。
2。假设没有等待资源。则将该任务增加到就绪队列中。
3,调度程序遍历就绪队列。依据实时优先级计算调度权值 (1000+rt_priority) ,选择权值最高的任务使用 cpu。
4,假设就绪队列中的 RR 任务时间片为0。则会依据 nice 值设置该任务的时间片,同一时候将该任务放入就绪队列的末尾。反复步骤3。
5,当前任务因为等待资源而主动退出 cpu,则其增加等待队列中。
反复步骤3。
系统中既有分时调度,又有时间片轮转调度和先进先出调度时
1,RR 调度和 FIFO 调度的进程属于实时进程,以分时调度的进程是非实时进程。
2。当实时进程准备就绪后,假设当前 cpu 正在执行非实时进程,则实时进程马上抢占非实时进程。
3。RR 进程和 FIFO 进程都採用实时优先级做为调度的权值标准,RR是FIFO的一个延伸。FIFO时,假设两个进程的优先级一样,则这两个优先 级一样的进程详细运行哪一个是由其在队列中的位置决定的,这样导致一些不公正性(优先级是一样的。为什么要让你一直运行?),假设将两个优先级一样的任务 的调度策略都设为RR,则保证了这两个任务能够循环运行,保证了公平。
操作系统 linux 内核的三种进程调度方法的更多相关文章
- Linux内核的三种调度策略
一 Linux内核的三种调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务.一旦占用cpu则一直运行.一直运行直到有更高优先级任务到达或自己放 ...
- linux内核的三种主要调度策略
linux内核的三种主要调度策略: 1,SCHED_OTHER 分时调度策略, 2,SCHED_FIFO实时调度策略,先到先服务 3,SCHED_RR实时调度策略,时间片轮转 实时进程将得到优先调用, ...
- (笔记)Linux内核学习(三)之进程调度
进程调度: 在可运行态进程之间分配有限处理器时间资源的内核子系统. 一 调度策略 1 进程类型 I/O消耗型进程:大部分时间用来提交I/O请求或是等待I/O请求,经常处于可运行状态,但运行时间短,等待 ...
- Liunx 环境下vsftpd的三种实现方法(超详细参数)
以下文章介绍Liunx 环境下vsftpd的三种实现方法 ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.tar.gz,目前已经到2.0.3版本.假 ...
- 成为Linux内核高手的四个方法
首页 最新文章 资讯 程序员 设计 IT技术 创业 在国外 营销 趣文 特别分享 更多 > - Navigation -首页最新文章资讯程序员设计IT技术- Java & Android ...
- VMware虚拟机的三种联网方法及原理
VMware虚拟机的三种联网方法及原理 博客分类: 操作系统 虚拟机Vmware互联网网络应用网络协议 一.Brigde——桥接 :默认使用VMnet0 1.原理: Bridge 桥"就 ...
- VMware虚拟机三种联网方法及原理
VMware虚拟机三种联网方法及原理 一.Brigde——桥接:默认使用VMnet0 1.原理: Bridge 桥"就是一个主机,这个机器拥有两块网卡,分别处于两个局域网中,同时 ...
- javase-常用三种遍历方法
javase-常用三种遍历方法 import java.util.ArrayList; import java.util.Iterator; import java.util.List; public ...
- JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
随机推荐
- hdoj--5562--Clarke and food(模拟)
Clarke and food Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- matplotlib 可视化 —— 定制画布风格 Customizing plots with style sheets(plt.style)
Customizing plots with style sheets - Matplotlib 1.5.1 documentation 1. 使用和显示其他画布风格 >> import ...
- 2.mongoDB 介绍(特点、优点、原理)
转自:https://www.cnblogs.com/hoojo/archive/2011/06/01/2066119.html 介绍:MongoDB是一个基于分布式文件存储的数据库.由C++语言编写 ...
- luogu 3393 逃离僵尸岛
题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被僵尸控制了,如果贸然闯入 ...
- Kali linux 2016.2(Rolling)里Metasploit的数据库
为什么要在Metasploit里提及到数据库? 大家都知道,这么多信息,我怎样才能把它们整理好并保存起来?怎么展现给老大看,最后怎么体现在要提交的渗透测试报告中呢? 你的担忧真的很有必要,因为啊, ...
- GPU开发笔记(一)
首先我想到的是把安装好的CUDA下的programdata里面的demo都找一找,看看有没有自己需要的demo程序. 然后去CSDN或者pudn上去找找开源的代码. 至于GITHUB还没找过. 其次是 ...
- Linux和Windows系统的远程桌面访问知识(转载)
为新手讲解Linux和Windows系统的远程桌面访问知识 很多新手都是使用Linux和Windows双系统的,它们之间的远程桌面访问是如何连接的,我们就为新手讲解Linux和Windows系统的 ...
- 统计 MapReduce 输出路径修改。
先在上一篇MR 的104 行加入代码.jobConf.setOutputFormat(MyMultipleFilesTextOutputFormat.class); 用意是自定义 job 的输出格式: ...
- Android活动状态和生存期
活动状态 1.运行状态(顶层的活动) 2.暂停状态(非顶层的,可见的活动) 3.停止状态(非顶层的,不可见的活动) 4.销毁状态(保证手机的内存充足) 活动的生存期 完整的生存期 onCreate活动 ...
- OpenCV与Socket实现树莓派获取摄像头视频至电脑
OpenCV能够为我们带来便捷的图像处理接口,但是其处理速度在一块树莓派上肯定是不尽如人意的.尤其当我们想要使用复杂的算法时,只能把算法托到服务器上才有可能.这里介绍了一种方法,实现树莓派传输Mat至 ...