linux 线程优先级算法,能讲一下在Linux系统中时间片是怎么分配的还有优先级的具体算法是...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

图 1 RT-Linux结构

RT -Linux的关键技术是通过软件来模拟硬件的中断控制器。当Linux系统要封锁CPU的中断时时,RT-Linux中的实时子系统会截取到这个请求,把它记录下来,而实际上并不真正封锁硬件中断,这样就避免了由于封中断所造成的系统在一段时间没有响应的情况,从而提高了实时性。当有硬件中断到来时, RT-Linux截取该中断,并判断是否有实时子系统中的中断例程来处理还是传递给普通的Linux内核进行处理。另外,普通Linux系统中的最小定时精度由系统中的实时时钟的频率决定,一般Linux系统将该时钟设置为每秒来100个时钟中断,所以Linux系统中一般的定时精度为 10ms,即时钟周期是10ms,而RT-Linux通过将系统的实时时钟设置为单次触发状态,可以提供十几个微秒级的调度粒度。

RT-Linux实时子系统中的任务调度可以采用RM、EDF等优先级驱动的算法,也可以采用其他调度算法。

RT -Linux对于那些在重负荷下工作的专有系统来说,确实是一个不错的选择,但他仅仅提供了对于CPU资源的调度;并且实时系统和普通Linux系统关系不是十分密切,这样的话,开发人员不能充分利用Linux系统中已经实现的功能,如协议栈等。所以RT-Linux适合与工业控制等实时任务功能简单,并且有硬实时要求的环境中,但如果要应用与多媒体处理中还需要做大量的工作。

意大利的RTAI( Real-Time Application Interface )源于RT-Linux,它在设计思想上和RT-Linux完全相同。它当初设计目的是为了解决RT-Linux难于在不同Linux版本之间难于移植的问题,为此,RTAI在 Linux 上定义了一个实时硬件抽象层,实时任务通过这个抽象层提供的接口和Linux系统进行交互,这样在给Linux内核中增加实时支持时可以尽可能少地修改 Linux的内核源代码。

3.2. Kurt-Linux

Kurt -Linux由Kansas大学开发,它可以提供微秒级的实时精度[KurtWeb] [Srinivasan]。不同于RT-Linux单独实现一个实时内核的做法,Kurt -Linux是在通用Linux系统的基础上实现的,它也是第一个可以使用普通Linux系统调用的基于Linux的实时系统。

Kurt-Linux将系统分为三种状态:正常态、实时态和混合态,在正常态时它采用普通的Linux的调度策略,在实时态只运行实时任务,在混合态实时和非实时任务都可以执行;实时态可以用于对于实时性要求比较严格的情况。

为了提高Linux系统的实时特性,必须提高系统所支持的时钟精度。但如果仅仅简单地提高时钟频率,会引起调度负载的增加,从而严重降低系统的性能。为了解决这个矛盾, Kurt-Linux采用UTIME所使用的提高Linux系统中的时钟精度的方法[UTIMEWeb]:它将时钟芯片设置为单次触发状态(One shot mode),即每次给时钟芯片设置一个超时时间,然后到该超时事件发生时在时钟中断处理程序中再次根据需要给时钟芯片设置一个超时时间。它的基本思想是一个精确的定时意味着我们需要时钟中断在我们需要的一个比较精确的时间发生,但并非一定需要系统时钟频率达到此精度。它利用CPU的时钟计数器TSC (Time Stamp Counter)来提供精度可达CPU主频的时间精度。

对于实时任务的调度,Kurt-Linux采用基于时间(TD)的静态的实时CPU调度算法。实时任务在设计阶段就需要明确地说明它们实时事件要发生的时间。这种调度算法对于那些循环执行的任务能够取得较好的调度效果。

Kurt -Linux相对于RT-Linux的一个优点就是可以使用Linux系统自身的系统调用,它本来被设计用于提供对硬实时的支持,但由于它在实现上只是简单的将Linux调度器用一个简单的时间驱动的调度器所取代,所以它的实时进程的调度很容易受到其它非实时任务的影响,从而在有的情况下会发生实时任务的截止期限不能满足的情况,所以也被称作严格实时系统(Firm Real-time)。目前基于Kurt-Linux的应用有:ARTS(ATM Reference Traffic System)、多媒体播放软件等。另外Kurt-Linux所采用的这种方法需要频繁地对时钟芯片进行编程设置。

3.3. RED-Linux

RED -Linux是加州大学Irvine分校开发的实时Linux系统[REDWeb][ Wang99],它将对实时调度的支持和Linux很好地实现在同一个操作系统内核中。它同时支持三种类型的调度算法,即:Time-Driven、 Priority-Dirven、Share-Driven。

为了提高系统的调度粒度,RED-Linux从RT-Linux那儿借鉴了软件模拟中断管理器的机制,并且提高了时钟中断频率。当有硬件中断到来时,RED-Linux的中断模拟程序仅仅是简单地将到来的中断放到一个队列中进行排队,并不执行真正的中断处理程序。

另外为了解决Linux进程在内核态不能被抢占的问题, RED-Linux在Linux内核的很多函数中插入了抢占点原语,使得进程在内核态时,也可以在一定程度上被抢占。通过这种方法提高了内核的实时特性。

RED-Linux的设计目标就是提供一个可以支持各种调度算法的通用的调度框架,该系统给每个任务增加了如下几项属性,并将它们作为进程调度的依据:

Priority:作业的优先级;

Start-Time:作业的开始时间;

Finish-Time:作业的结束时间;

Budget:作业在运行期间所要使用的资源的多少;

通过调整这些属性的取值及调度程序按照什么样的优先顺序来使用这些属性值,几乎可以实现所有的调度算法。这样的话,可以将三种不同的调度算法无缝、统一地结合到了一起�

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python linux log,linux,python 常用的处理log的命令

一般的log文件都是需要过滤ps:管道符| 管道符前面的输出值grep 过滤查找将是error的log过滤显示grep 221.2.100.138 web.access.loggrep 221.2.100.138 web.access.logless web.access.log |grep "221.2.100.138"统计error行数grep 221.2.100.138 web.access.log |…

vue 图片自适应排列插件_将一堆图片自适应页面排列

最近在开发一个批量展示图片的页面,图片的自适应排列是一个无法避免的问题在付出了许多头发的代价之后,终于完成了图片排列,并封装成组件,最终效果如下一、设计思路为了使结构清晰,我将图片列表处理成了二维数组&#…

linux中vi基础知识,Vim入门基础知识集锦

想学习Vim,但是Vim官网的手册又太大而全,而网上各方资料要么不全面,要么不够基础。在网上搜集各方资料,按照自己的框架整理一份Vim入门基础教程,分享出来。特点是偏向基础,但对入门者来说足够全面&#xff…

60度斜坡怎么计算_坡度怎么计算

展开全部表示坡度最为常用的方法,即两点的高程差与其路程的百e69da5e6ba9062616964757a686964616f31333431356636分比,其计算公式如下:坡度 (高程差/路程)x100%。坡度的表示方法有百分比法、度数法、密位法和分数法四种,其中以百…

linux go missing git command,安装beego出现go: missing Git command

安装beego报下面的错误:go build -ldflags "-linkmode external -extldflags -static" -o go-admin main.gomain.go:5:2: cannot find package "github.com/astaxie/beego" in any of:D:\Go\src\github.com\astaxie\beego (from $GOROOT)F:\xia…

串口 多个activity 安卓_Android-EasySerialPort

Android-EasySerialPort非常好用、非常稳定的Android串口封装久经两年多项目考验,一直很稳定使用说明第一步,在gradle(Project)下添加allprojects {repositories {...maven { url https://www.jitpack.io }}}第二步,导入依赖dependencies {im…

linux bluez语音传输,Linux BlueZ PCM 音频播放器

自己写的简单的实验代码,贴上来看看,有兴趣的话,大家可以交流/******************************************************************************//** …

光纤收发器的原理及应用_光纤收发器的工作原理及使用方法介绍

关于光纤收发器的工作原理以及使用方法这块,在这里飞畅科技的小编做了专门的整理,首先,我们来了解下什么是光纤收发器,光纤收发器是一种将短距离的双绞线电信号和长距离的光信号进行互换的以太网传输媒体转换单元,在很…

变频器按启动没反应_ABB变频器启动无反应维修那些事

[标题]常州凌科自动化是电路板芯片级维修服务商,有健全的维修中心,致力于各类复杂工控电气设备修复工作。我们有十年变频器维修经验的技术工程师、安装人员组成的强大技术队伍;充分利用自己己有的人才、测试设备、试验平台、为企业提供先进、…

C语言编程序1到100的素数,c语言输出100以内素数 c语言编程输出1到100之间素数并求和,在线等,急?...

C语言,编写函数判断一个整数是否为素数,在主函数中调用该函数并输出100以内的全部素数?参考代码:#include &ltstdio.h&gtint is_prime_number(int n){int iint result 1if(n1)return 0for(i2i&ltni ){if(n%i0){resul…

用jsonserve和axios做交互_详解解决使用axios发送json后台接收不到的问题

问题描述按照axios官网例子发起请求传递json,后台接受到的数据为空,一直卡在options阶段。尝试的方法开始以为是接口有问题,使用postman测试下,一切正常,百思不得其解,看了好多issue也解决不了,…

2020国开c语言程序设计1075,代号1253国开点大2017年6月春季学期本科期末考试《C语言程序设计》试题及答案.pdf...

试卷代号:1253座位号rn国家开放大学(中央广播电视大学)2017 年春季学期"开放本科"期末考试C 语言程序设计试题2017 年 6 月E自一、单项选择题(把合适的选项编号填写在括号内。每小题 2 分,共28 分)l. C 语言中的选择类语句有两条,它们是( )。A…

c语言内容逆置程序设计,C语言程序设计练习题含程序及参考答案.docx

C语言练习题(所提供的源程序均采用自定义函数方式解决,如不采用函数方式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能一一—验证,仅供参考使用)1定义一个函数intfun(inta,intb,intc),它的…

一阶系统单位阶跃响应的特点_一阶系统的阶跃响应有什么特点

一、一阶系统  用一阶微分方程描述的系统。二、一阶系统典型的数学模型   三、典型输入响应1。单位阶跃响应  。  y(t)的特点:  (1)由动态分量和稳态分量两部分组成。  (2)是一单调上升的指数曲线。  (3)当tT时,y0。632。(4)曲线的初始斜…

数学式子对应的c语言表达式是,把数学式写成C语言表达式

(1) 3.26*exp(x)1.0/3.0*pow((ab), 4)(2) 2*sqrt(x)(ab)/(3.0*sin(x))(3) g*m1*m2/(r*r)(4) double pi 3.142.0*pi*r pi*r*r cos(45.0*pi / 180.0 )(5) loan * rate * pow( (1rate) , month ) / ( pow( (1rate) , month) - 1)扩展资料:指针:如果一个变…

pandas 每一列相加_Python3 numpy amp; pandas 学习笔记

写在前面在用python做一些ML和DL的工作前,先看莫烦大佬的视频学习一下numpy和pandas这两个数据处理包,学习中记了一些笔记,便于自己日后查阅,同时发布到知乎希望能够帮助到其他小伙伴!视频如下:Numpy &…

c语言学生成绩查询系统2018,南昊网上阅卷学生成绩查询系统

2018南昊网上阅卷学生成绩查询系统开放了,这是面向南昊当地的中小学生们的一款优质的查询学习成绩的平台,只要登录自己的账号就能查询自己的成绩排名情况。对于老师来说这也是一款网上阅卷系统,是一个非常幼稚的学习平台。家长也可以登录本平…

python3 批量定义多个变量_Python3 基本数据类型详解

文章来源:加米谷大数据Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。等号…

控制cpu_I/O控制器及控制方式,了解一下

1、什么是I/O控制器由于CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制,这个电子部件就是I/O控制器,又称为设备控制器。I/O控制器是控制计算机输…

图形化c语言编程,「分享」C语言如何编写图形界面

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼贴吧内经常有人问C语言是不是只能用于字符终端界面开发,不能用于图形界面。大家也都有回答,需要其他的库。MFC,GTK,QT。本人近期刚用GTK库加上纯C写成了第一个LINUX实用程序。现在与大…