一、实时系统基本概念

什么是实时系统,POSIX作了这样的定义:指能够在限定的响应时间内提供所需水平服务的系统。另个一被Donald Gillies提出定义为:一个实时系统是指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间,如果系统的时间约束条件得不到满足,将会发生系统出错。实时系统对响应时间有严格要求。

实时操作系统(RTOS,RealTime Operation System)是指能够在给定的截止时间前对内部或者外部的异常事件做出正确响应的操作系统。在实时操作系统中,进程的执行结果的正确与否不仅与逻辑运算或数学计算结果的正确性相关,还与进程运行结束得出结果的时间有关,也就是说,如果一个进程的运算结果是正确的,但是由于它完成时间已经超出了系统给定的最后期限,在实时系统中,这个结果就是毫无意义的。

根据系统对响应时间约束条件的强弱可将实时操作系统分为两大类:硬实时系统(HRT,HardReal-Time System)和软实时系统(SRT,SoftReal-Time System)。

软实时操作系统:软实时操作系统对时间的限制不是十分苛刻,响应的时间可以相对延迟,即未超过最后规定时间太多的范围内,其结果都是可以接受的,不会产生严重的后果。硬实时操作系统:对于硬实时操作系统而言,不仅要求各个任务能够运行得到正确的结果,同时还必须在限定的时间内完成,这个时间是由系统本身确定的,这比软实时操作系统的时间约束条件严格了许多。例如,在航天领域的嵌入式实时操作系统中,如果在规定的时间内未能得出所希望的运算结果,其产生的后果将是十分严重的。

二、Linux操作系统实时性

1、Linux系统框架

宏观上,Linux的框架如图1:

为了更加直观,更加便于理解,Linux框架图1,可以抽象成下图2。

2、标准Linux内核制约实时性的因素

Linux中有大量不可抢占的区域

在Linux2.6中,内核己经可以抢占,因而实时性得到了加强"但是内核中仍有大量的不可抢占区域,如由自旋锁(SPinlock)保护的临界区。

时钟粒度粗糙

Linux2.6内核虽然把时钟频率提高到1000 赫兹,定时精度达到了1ms,但远不能满足实时系统要求的微秒级定时精度,如数控系统要求50us 的定时精度。

关闭中断

系统调用和中断服务程序中,为了保护临界区资源,Linux会长时间关闭中断"有些系统调用和中断服务程序的时间还很长,这样会加大中断延迟时间。

缺乏有效的实时任务调度机制和调度算法

Linux系统是按照分时系统的目标设计的,以达到系统较好的平均性能,强调平衡各进程之间的响应时间来保证公平的CPU时间占用。通常采用固定时间片的分时调度算法,内核不能抢占,而实时系统的行为更多的取决于复杂的不可预知的情况。这些原则不能满足实时系统短的响应时间和确定的执行行为的要求。

优先级反转的问题

当一个低优先级的进程占用了某种资源,导致同样需要这个资源的高级进程无法运行,并且此时有一个优先级在他们之间的就绪进程获得了CPU 的控制权,这样就使得高级别的任务需要等待比他优先级别低的任务,这种现象就叫做优先级反转。在Linux中,由于资源是不可抢占的,并且不支持优先级继承等策略,所以优先级反转现象可能会发生,这影响了系统的实时性能。

3、改进Linux实时性的方案

从前文可以看出,标准Linux内核有许多制约实时性的因素,要将Linux系统用于实时环境,必须对其进行改进。目前改进Linux实时性的方案有两种:直接修改内核法、双内核法。

直接修改内核法,通过对Linux 原理与源代码的分析,通过对内核的进程调度、中断服务程序等代码进行修改与优化,提高系统的实时性能,并且为了保证系统的通用性,需要按照POSIX

的相关标准来进行改动。利用这种方法可以获得较好的性能提升,并且因为与标准的Linux 内核使用相同的应用程序接口,所以有良好的兼容性。目前,采用修改内核方法改进Linux 实时性的产品很多,如 Kurt-Linux、TimesysLinux 和 Ingo's RT patch 等。

双内核法,通过在Linux 内核与硬件中断之间增加一个可抢先的实时内核,把标准的Linux 内核作为该实时内核的一个优先级最低的进程来调度,它可以被实时进程抢断,正常的

Linux 进程仍可以在 Linux 内核上运行,这样既可以使用标准分时操作系统即Linux 的各种服务,又能提供低延时的实时环境。RT-Linux 是采用双内核法改造Linux 实时性的典型代表。

linux系统的实时性,Linux操作系统实时性相关推荐

  1. 熟悉linux操作系统的使用实验报告,Linux系统的熟悉与使用操作系统实验报告

    Linux系统的熟悉与使用操作系统实验报告 实验一 Linux系统熟悉与使用 Linux有两种不同的含义.从严格的技术定义讲,Linux指的是开放源代码的Unix类操作系统的内核.然而,目前大多数人用 ...

  2. git 的安装以及使用:是一个开源的分布式版本控制系统,可以对项目进行版本管理。 早期是linux之父用来管理linux系统源代码的(linux是和windows一样操作系统 开源免费的操作...

    ## 总结 - 学会使用基本的git命令 管理源代码 - 学会去github创建仓库 并将代码上传到github的仓库 (有待完成 回家有网再push) - 了解本地的.git和服务器github的. ...

  3. Linux系统磁状态检测,检测Linux硬件状态

    计算机系统是由软件系统和硬件系统共同组成的.检测硬件状态对于保障整个系统的稳定是非常重要的.不论操作系统是使用Linux.还是Windows,一旦硬件出现故障,那么整个系统的安全就严重了.这里我们主要 ...

  4. 如何查看linux系统的存储空间大小,linux 如何查看硬盘大小,存储空间大小等系统信息及硬件信息...

    一.linux CPU大小 [root@idc ~]# cat /proc/cpuinfo |grep "model name" && cat /proc/cpui ...

  5. php 登录 linux服务器,如何实现linux系统远程登录到linux服务器

    linux系统登录到远程linux服务器: 有多种不同的协议可供选择,也许SSH是"最好"的.SSH是secure shell的简写,意为"安全的shell". ...

  6. 如何制作linux系统硬盘,手把手带你自制Linux系统之二 简易Linux的制作

    手把手带你自制Linux系统之二 简易Linux的制作 本文利用CentOS5.5自带内核制作一个可以正常启动的Mini Linux. 打开上一篇准备工作中创建的CentOS虚拟机,为另一台虚拟机Mi ...

  7. Linux系统-小倒腾之Linux DIY定制裁剪(New kernel+Busybox)o_o(二)

    在前面的<Linux系统-小倒腾之Linux DIY定制裁剪(附带简单网络功能)o_o(一)>博文中,我通过对一个Linux系统的裁剪,最终制作出来了一个带有网络功能的微型Linux系统; ...

  8. linux设置sfq队列参数,Linux系统运维之Linux高级流量控制工具TC使用方法

    Linux系统运维之Linux高级流量控制工具TC使用方法 本文标签: 运维 流量劫持 Linux系统运维之Linux高级流量控制工具TC使用方法, 在做MHA测试的时候,有一个重要的环节就是测试MH ...

  9. linux系统查看串口占用,Linux 系统串口信息查看

    先确认系统启动的时候串口的信息. ECM_5412@chenfl:~$ dmesg | grep tty [ 0.000000] console [tty0] enabled [ 2.511678] ...

  10. linux系统有哪些版本 linux系统哪个版本好用

    l   inux最早由Linus Benedict Torvalds在1991年开始编写.在这之前,RichardStallman创建了Free SoftwareFoundation(FSF)组织以及 ...

最新文章

  1. 谷歌对2021年的六个预测:数据和云技术的革命即将到来
  2. kafka的一些常用命令
  3. JSP proxool+mysql数据库连接池配置
  4. Microsoft Speech SDK 编程入门
  5. 史上最硬核的Linux依赖问题解决方案
  6. 大规模知识图谱的构建
  7. 软考-信息系统项目管理师-信息系统综合测试与管理
  8. linux6.5声卡驱动安装,详解CentOS 6.5如何安装Realtek无线网卡驱动
  9. html css加载不了_CSS加载会阻塞页面显示?
  10. java 拆箱_Java自动装箱拆箱
  11. 搜索引擎技术之网络爬虫
  12. 面试官 | SpringBoot 中如何实现异步请求和异步调用?
  13. zigzag模式提取矩阵元素
  14. ubuntu display
  15. 【原】GitHub使用教程
  16. 中标麒麟服务器中安装达梦数据库(DM7)的具体步骤
  17. STM32驱动0.96寸OLED屏幕
  18. 流行的权限管理 gem devise的定制
  19. 转:钉钉群直播提取视频文件-电脑版
  20. 安装步骤_Saber 2016 安装步骤

热门文章

  1. linux初级:用useradd SB2,来建立新账户时,显示 bash:useradd:command not found的解决方法
  2. 深入浅出Dubbo剖析出视频教程了!!!
  3. android加载海康威视(萤石sdk)摄像头
  4. Java实现复杂邮件发送(支持附件、支持多收件人、多抄送人、多密送人)
  5. 【解决方案】ArcGIS License Manager启动失败
  6. android微信群视频,10. 搞定微信群聊的神器——录屏软件集合
  7. 使用git管理工具sourcetree拉取代码
  8. php企业微信扫码登录
  9. 在三维坐标中给出三个点,求三个点所在平面的圆心和圆心坐标
  10. Java进行音视频转码