精华内容
下载资源
问答
  • linux实时系统还是分时操作系统

    万次阅读 2017-07-11 16:25:15
     实时操作系统(RTOS)是指当外界事件或数据产生,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。...
    实时操作系统  实时操作系统
      英文称Real Time Operating System,简称RTOS。
      1.实时操作系统定义
      实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。因而,提供及时响应和高可靠性是其主要特点。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。我们通常使用的操作系统在经过一定改变之后就可以变成实时操作系统。
      实时操作系统是保证在一定时间限制内完成特定功能的操作系统。例如,可以为确保生产线上的机器人能获取某个物体而设计一个操作系统。在“硬”实时操作系统中,如果不能在允许时间内完成使物体可达的计算,操作系统将因错误结束。在“软”实时操作系统中,生产线仍然能继续工作,但产品的输出会因产品不能在允许时间内到达而减慢,这使机器人有短暂的不生产现象。一些实时操作系统是为特定的应用设计的,另一些是通用的。一些通用目的的操作系统称自己为实时操作系统。但某种程度上,大部分通用目的的操作系统,如微软的Windows NT或IBM的OS/390有实时系统的特征。这就是说,即使一个操作系统不是严格的实时系统,它们也能解决一部分实时应用问题。
      2.实时操作系统的特征
      1)多任务;
      2)有线程优先级
      3)多种中断级别
      小的嵌入式操作系统经常需要实时操作系统,内核要满足实时操作系统的要求。
      3.实时操作系统的相关概念
      (1)基本概念
      代码临界段:指处理时不可分割的代码。一旦这部分代码开始执行则不允许中断打入;
      资源:任何为任务所占用的实体;
      共享资源:可以被一个以上任务使用的资源;
      任务:也称作一个线程,是一个简单的程序。每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。典型地,每个任务都是一个无限的循环,每个任务都处在以下五个状态下:休眠态,就绪态,运行态,挂起态,被中断态;
      任务切换:将正在运行任务的当前状态(CPU寄存器中的全部内容)保存在任务自己的栈区,然后把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行;
      内核:负责管理各个任务,为每个任务分配CPU时间,并负责任务之间通讯。分为不可剥夺型内核于可剥夺型内核;
      调度:内核的主要职责之一,决定轮到哪个任务运行。一般基于优先级调度法;
      (2)关于优先级的问题
      任务优先级:分为优先级不可改变的静态优先级和优先级可改变的动态优先级;
      优先级反转:优先级反转问题是实时系统中出现最多的问题。共享资源的分配可导致优先级低的任务先运行,优先级高的任务后运行。解决的办法是使用“优先级继承”算法来临时改变任务优先级,以遏制优先级反转。
      (3)互斥
      虽然共享数据区简化了任务之间的信息交换,但是必须保证每个任务在处理共享共享数据时的排他性。使之满足互斥条件的一般方法有:关中断,使用测试并置位指令(TAS),禁止做任务切换,利用信号量。
      因为采用实时操作系统的意义就在于能够及时处理各种突发的事件,即处理各种中断,因而衡量嵌入式实时操作系统的最主要、最具有代表性的性能指标参数无疑应该是中断响应时间了。中断响应时间通常被定义为:
      中断响应时间=中断延迟时间+保存CPU状态的时间+该内核的ISR进入函数的执行时间[2]。
      中断延迟时间=MAX(关中断的最长时间,最长指令时间) + 开始执行ISR的第一条指令的时间[2]。
    
    --------------------------------------------------------------------------------------------------------------------------
    
    分时操作系统  【词语】:分时操作系统
      【注音】:fēn shí cāo zuò xì tǒng
      【英文】:Time-sharing Operating System
      【释义】:使一台计算机同时为几个、几十个甚至几百个用户服务的一种操作系统。把计算机与许多终端用户连接起来,分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的使用率。例如UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。
      产生分时系统是为了满足用户需求所形成的一种新型 OS 。它与多道批处理系统之间,有着截然不同的性能差别。用户的需求具体表现在以下几个方面: 人—机交互 共享主机 便于用户上机 
      分时系统的基本思想 
      时间片 :是把计算机的系统资源(尤其是 CPU时间)进行时间上的分割,每个时间段称为一个时间片,每个用户依次轮流使用时间片。 
      分时技术:把处理机的运行时间分为很短的时间片,按时间片轮流把处理机分给各联机作业使用。 
      分时操作系统:是一种联机的多用户交互式的操作系统。一般采用时间片轮转的方式使一台计算机为多个终端服务。对每个用户能保证足够快的响应时间,并提供交互会话能力。 
      设计目标: 对用户的请求及时响应,并在可能条件下尽量提高系统资源的利用率。 
      适合办公自动化、教学及事务处理等要求人机会话的场合。 
      工作方式: 
      一台主机连接了若干个终端;每个终端有一个用户在使用;交互式地向系统提出命令请求;系统接受每个用户的命令;采用时间片轮转方式处理服务请求;并通过交互方式在终端上向用户显示结果;用户根据上步结果发出下道命令 
      分时系统实现中的关键问题:及时接收。及时处理。 
      特征: 
      交互性:用户与系统进行人机对话。 
      多路性:多用户同时在各自终端上使用同一CPU。 
      独立性:用户可彼此独立操作,互不干扰,互不混淆。 
      及时性:用户在短时间内可得到系统的及时回答。 
      影响响应时间的因素:终端数目多少、时间片的大小、信息交换量、信息交换速度。
    
    ------------------------------------------------------------------------------------------------------------
    
    例子:
    
    分时——现在流行的PC,服务器都是采用这种运行模式,即把CPU的运行分成若干时间片分别处理不同的运算请求
    实时——一般用于单片机上,比如电梯的上下控制中,对于按键等动作要求进行实时处理
    
    
    
    **linux是分时系统,不过可以改成实时的如:UCOS就是linux修改而来的实时系统,至于他们的区别,下以引用百度中的类似回答,个人感觉简单明了:“分时系统是 一个系统可以同时为两个或两个以上的账户服务!
    实时系统 是能立即对指令做出反应的操作系统!微软的常见系统不能吧!而且还死机!战斗机中的操作系统就是实时的系统,想想如果别人打仗时战斗机中的电脑反应的是飞行员上一条指令或死机了,谁还敢开这架飞机呢?”**
    展开全文
  • Linux分时操作系统,不是实时

    千次阅读 2012-09-06 09:43:00
    linux是很典型的分时系统。 但是在一些特殊领域。 也可以把linux做成实时系统的   分时系统是指,在一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享...

    linux是很典型的分时系统。 但是在一些特殊领域。 也可以把linux做成实时系统的

     

    分时系统是指,在一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源
    分时操作系统具有以下几个优点: 
    同时性,独立性,及时性,交互性.

     

    1.实时操作系统定义
      实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。因而,提供及时响应和高可靠性是其主要特点。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。我们通常使用的操作系统在经过一定改变之后就可以变成实时操作系统。
      实时操作系统是保证在一定时间限制内完成特定功能的操作系统。例如,可以为确保生产线上的机器人能获取某个物体而设计一个操作系统。在“硬”实时操作系统中,如果不能在允许时间内完成使物体可达的计算,操作系统将因错误结束。在“软”实时操作系统中,生产线仍然能继续工作,但产品的输出会因产品不能在允许时间内到达而减慢,这使机器人有短暂的不生产现象。一些实时操作系统是为特定的应用设计的,另一些是通用的。一些通用目的的操作系统称自己为实时操作系统。但某种程度上,大部分通用目的的操作系统,如微软的Windows NT或IBM的OS/390有实时系统的特征。这就是说,即使一个操作系统不是严格的实时系统,它们也能解决一部分实时应用问题。
      2.实时操作系统的特征
      1)多任务;
      2)有线程优先级
      3)多种中断级别
      小的嵌入式操作系统经常需要实时操作系统,内核要满足实时操作系统的要求。
      3.实时操作系统的相关概念
      (1)基本概念
      代码临界段:指处理时不可分割的代码。一旦这部分代码开始执行则不允许中断打入;
      资源:任何为任务所占用的实体;
      共享资源:可以被一个以上任务使用的资源;
      任务:也称作一个线程,是一个简单的程序。每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。典型地,每个任务都是一个无限的循环,每个任务都处在以下五个状态下:休眠态,就绪态,运行态,挂起态,被中断态;
      任务切换:将正在运行任务的当前状态(CPU寄存器中的全部内容)保存在任务自己的栈区,然后把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行;
      内核:负责管理各个任务,为每个任务分配CPU时间,并负责任务之间通讯。分为不可剥夺型内核于可剥夺型内核;
      调度:内核的主要职责之一,决定轮到哪个任务运行。一般基于优先级调度法;
      (2)关于优先级的问题
      任务优先级:分为优先级不可改变的静态优先级和优先级可改变的动态优先级;
      优先级反转:优先级反转问题是实时系统中出现最多的问题。共享资源的分配可导致优先级低的任务先运行,优先级高的任务后运行。解决的办法是使用“优先级继承”算法来临时改变任务优先级,以遏制优先级反转。
      (3)互斥
      虽然共享数据区简化了任务之间的信息交换,但是必须保证每个任务在处理共享共享数据时的排他性。使之满足互斥条件的一般方法有:关中断,使用测试并置位指令(TAS),禁止做任务切换,利用信号量。
      因为采用实时操作系统的意义就在于能够及时处理各种突发的事件,即处理各种中断,因而衡量嵌入式实时操作系统的最主要、最具有代表性的性能指标参数无疑应该是中断响应时间了。中断响应时间通常被定义为:
      中断响应时间=中断延迟时间+保存CPU状态的时间+该内核的ISR进入函数的执行时间[2]。
      中断延迟时间=MAX(关中断的最长时间,最长指令时间) + 开始执行ISR的第一条指令的时间[2]。

     

    分时操作系统  【词语】:分时操作系统
      【注音】:fēn shí cāo zuò xì tǒng
      【英文】:Time-sharing Operating System
      【释义】:使一台计算机同时为几个、几十个甚至几百个用户服务的一种操作系统。把计算机与许多终端用户连接起来,分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的使用率。例如UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。
      产生分时系统是为了满足用户需求所形成的一种新型 OS 。它与多道批处理系统之间,有着截然不同的性能差别。用户的需求具体表现在以下几个方面: 人—机交互 共享主机 便于用户上机 
      分时系统的基本思想 
      时间片 :是把计算机的系统资源(尤其是 CPU时间)进行时间上的分割,每个时间段称为一个时间片,每个用户依次轮流使用时间片。 
      分时技术:把处理机的运行时间分为很短的时间片,按时间片轮流把处理机分给各联机作业使用。 
      分时操作系统:是一种联机的多用户交互式的操作系统。一般采用时间片轮转的方式使一台计算机为多个终端服务。对每个用户能保证足够快的响应时间,并提供交互会话能力。 
      设计目标: 对用户的请求及时响应,并在可能条件下尽量提高系统资源的利用率。 
      适合办公自动化、教学及事务处理等要求人机会话的场合。 
      工作方式: 
      一台主机连接了若干个终端;每个终端有一个用户在使用;交互式地向系统提出命令请求;系统接受每个用户的命令;采用时间片轮转方式处理服务请求;并通过交互方式在终端上向用户显示结果;用户根据上步结果发出下道命令 
      分时系统实现中的关键问题:及时接收。及时处理。 
      特征: 
      交互性:用户与系统进行人机对话。 
      多路性:多用户同时在各自终端上使用同一CPU。 
      独立性:用户可彼此独立操作,互不干扰,互不混淆。 
      及时性:用户在短时间内可得到系统的及时回答。 
      影响响应时间的因素:终端数目多少、时间片的大小、信息交换量、信息交换速度

     

    inux是分时系统,不过可以改成实时的如:UCOS就是linux修改而来的实时系统

     

    http://wenwen.soso.com/z/q170987868.htm

     

    http://linux.sheup.com/linux/linux5163.htm

    • 实时操作系统 (Real-time OS) 是相对于分时操作系统 (Time-Sharing OS) 的一个 概念。在一个分时操作系统中,计算机系统的资料会被平均的分配给系统内所有的工作。对于这些工作而言,它们似乎是在一个速度较慢、资源较少的虚拟系统上工作。 而这个虚拟系统所拥有的资源会和真实系统内等待执行的工作数有关。简单的说,如 果有 n 个工作要做,每一个工作就会分到 n 分之一的资源。 

      然而在一个实时操作系统之中,系统内有多少工作并不是那么重要。我们关心的 事一个工作在多少的时间内可以被完成。和分时操作系统最大的不同之处在于 “时限(deadline)”这个概念,实时操作系统通常会要求每一个工作在交付给系 统的时候同时也给定一个时限。实时操作系统的任务不只是要求完成每一个工作, 并且要按时给定的时限完成每一个工作。 

      所以我们可以看出这二个概念的不同之处,分时操作系统的重点在于”公平”, 而实时操作系统的重点在于”时限(timing constraint)”“。 

      任何时候。我不是开玩笑,当一个实时操作系统中的每一个工作都有相同的时限时, 它应该和分时操作系统用相同的方式工作。分时操作系统和实时操作系统的分野在于工作的特性而非操作系统工作的模式。 

      在很多的书及文献上我们可能会看到”硬实时(hard real-time)”和”软实时 ( soft real-time)”这二个名词。不同的人会给它们不同的意义,但大致来说它们是一组相对的概念。硬实时对满足时限的要求会比软实时来的严格。有些人会从 工作的特性上来分,硬实时工作 (hard real-time task) 通常指不能有任何差 错的工作而软实时则是指比较容许差错的工作。例如我们常会用核能电厂和看 VCD 为例,用在核能电厂的实时操作系统如果出了差错可能会导致严重的损害,然而 VCD Player 出了些差错不过是让使用者认清他所用的程序不够好而已。所以前者 是硬实时,后者是软实时。 

      但在大多数的状况下,分野并不是如此的清楚。做 VCD Player 的厂商当然不 希望它的 Player 老是出错,它也会希望 Player 用一个硬实时操作系统来驱动。 所以硬实时和软实时的差别可能只是分类学上的问题而已。 

      然而对于一般的应用而言,实时操作系统的意义在那里呢? 我们使用流览器看一 个网站时,如果结果在 0.5 秒内出现,我们可能会觉得非常舒服。如果结果在 2 秒才出现,可能会觉得有些延迟。但如果花上 30 秒才出现,那可能就没有人会等 到结果出现了。 

      对于我们而言,等个 3,5 秒可能觉得没什么。但也许 Bill Gates 不这么想, 他会算给你听他的一秒值多少钱! 所以不同的人可能会对延迟有不同的看法。即 时操作系统最大的优势就在于他可以为不同的工作提供”不同等级的服务( differentiated service)”。 

      一个对实时系统常有的误解是实时系统是一个高效率 (high performance) 的 系统,它会跑得比一般操作系统来的快,overhead 来得小。这其实是市场策略宣 传造成的影响。一大堆非常小的操作系统宣称它们是嵌入式实时操作系统 (embedded real-time OS),这么一来”嵌入”、”实时”和”小”就被莫名其 妙的连起来了。实事上这三个是完全不相干的概念。”嵌入”指的是操作系统可 以在一些资源受限的环境,例如没有 disk,的情况下工作。”小”是指因为功能 简单,要求不多,所以操作系统可以写的很小,减少不必要的额外负担。这些都 和”实时”的概念完全没有关系。不幸的是,即使是学有专精的计算机工程师也常 把它们混为一谈。 

      为什么不用? 实时操作系统和分时操作系统并不是完全互斥的概念,我前面说过如 果一个实时操作系统中所有的工作都有相同的时限,那它应该会制造出和分时作业 系统相同的结果。 

      所以一个系统可以同时执行分时和实时的工作另一个常有的误解是实时的工作 应该比分时的工作先执行。这其实是不对的,实时的工作只是要求在时限内完成 而已,一个时限在 10 秒之后的工作没有道理一定要在现在立刻执行。太早完成 它没有任何好处,有时还会造成系统不必要的负担。 

      实时操作系统的优势在于它知道目前系统资源使用的状况,它能比起分时作业 系统更精准的控制系统资源的使用。对于分时操作系统而言,它无法预测一个工 作到底还须要花多少时间才能完成。因此对于比较重要的工作,唯一的方法就是 尽快的完成它。而实时操作系统可以预测工作完成的时间,因此它可以轻易的决 定工作要在什么时间被执行。 

      所以实时操作系统所做的事,不过就是一个更强大的 renice 指令而已。在 renice 中,你只能指定一个叫优先权 (priority) 的值。优先权越高的工作 在分时系统中会分到更多的时间,但多多少呢? 没人能回答这个问题,因为在 分时操作系统中不把它视为一个重要的事。 

      而实时操作系统的 renice 指定可以指定一大堆的参数,你可以指定前述的 时限 (deadline),优先权 (priority)。还可以指定工作在单工状态下执行所 需的时间 (execution time)、工作应该在什么时候允许开始执行 (start time) 、什么时候就不应该再继续下去了(finish time)。当然过去二十年来在实时作 业系统理论上的发展使得我们还有更多更多的可能性来实作实时操作系统的 renice 指令。但简单的说,我们得到的是一个更强大的 renice 指令。它可以被用来更 精准的调整系统的整体效能。这也就是我为什么会认为,为什么不用实时作业系 统。 

      我的看法是,在将来的操作系统,实时会是一个和网络一样、是系统标准的功能。 

      和 Linux 其它领域一般,有一大堆的人都试图为 Linux 加上实时的功能。每个人 都有不同的看法,每个人看的角度也不相同,所以产生了各式各样的”real-time Linux OS”。在这里,我们看到了开放原始码 (open source) 在这个领域优势所 在。我们可以想见在不久的将来,这些各有专精的系统会自然的合并成一套非常好 用的实时操作系统。而不是相互用市场的策略恶性竞争。所以 open source 可以 提供我们一套更新、更好、更实用的实时操作系统。 

      接下来,我们先简介一下现存的各种 real-time Linux OS。 


        NMT RT-Linux 
        NMT 是新墨西哥科技大学(New Mexico Technology) 的缩写。这一套系统可以说是 所有 Real-time Linux 的鼻祖。它目前已经发展到 3.0 版。这个系统是由 Victor Yodaiken 和它的学生 Michael Barabanov 所完成。这个系统的概念是”架空” Linux kernel,使得它的 real-time 行程得以尽快的被执行。下面的图例说明了 NMT RT-Linux 和其它类似产品的系统架构。 

      你可以看到基本上RT-Linux 中的实时工作(realtime task) 其实并不是 一个 Linux 的行程,而是一个 Linux 的可加载式核心模块( loadable kernel module)。 


      之所以要如此做的原因在于 Linux 是一个很大的系统,且在设计的时候并没 有考虑 real-time 的需求。举个例说,单一个 Linux 系统呼叫可能会花上超过 10ms 的时间。对有些像工业控制的应用而言,它们对时间的要求通常在 1ms 的 等级上,Linux 根本无法满足这种需求。所以 NMT RT-Linux 采用一个比较简单 的做法,它干脆不用直接 Linux 的任何功能,而把需要高度时间精确度的工作 写成一个驱动程序的型式,然后直接用 PC 时序芯片 (timer chip) 所产生的中 断呼叫这个驱动程序。如此一来,不管 Linux 系统呼叫的时间有多长都没有关系 了。 

      从这个角度看,NMT RT-Linux 其实是一个实时驱动程序的架构,算不上是真 正的 real-time Linux. 但由于它出现的早,且其架构很符合自动控制的需求。 使用者非常的多,且多半是有关自动控制的应用。 


        RTAI 
        RTAI 是 Real-Time Application Interface 的缩写。顾名思义知道它是一套可 以用来写实时应用程序的界面。大致而言,RTAI 和 NMT RT-Linux 是相同的东西。 它同样的架空了 Linux,而直接用可加载式核心模块( loadable kernel module) 实作 real-time process。每一个实时行程实际上就是一个可加载式核心模块。 

      RTAI 和 NMT RT-Linux 最大的不同地方在于它非常小心的在 Linux 上定义了 一组 RTHAL (Real-Time Hardware Abstraction Layer)。RTHAL 将 RTAI 需要 在 Linux 中修改的部份定义成一组程序界面,RTAI 只使用这组界面和 Linux 沟通。这样做的好处在于我们可以将直接修改 Linux 核心的程序代码减至最小, 这使得将 RTHAL 移植到新版 Linux 的工作量减至最低。 

      RTAI 采取这种途径最大的原因在于 NMT RT-Linux 在由 2.0 版移植至 2.2 版 的过程序遇到问题,使得基于 2.2 版核心的 NMT RT-Linux 一直无法完成。所以 在 Dipartimento di Ingegneria Aerospaziale Politecnico di Milano 的 Paolo Mantegazza 和他的同事们就决定自行做移植的工作,但由 NMT RT-Linux 的困境他们体认到必须采取上述的途径以解决将来可能再度面临的兼容性问题。 

      于是 RTAI 便诞生了,它是一个比 NMT RT-Linux 更好的 NMT RT-Linux,虽 然后来 NMT RT-Linux 也随后完成移植的工作,但那已经是 RTAI 诞生半年以 后的事了。 


        LXRT 
        由于 RTAI 无法直接使用 Linux 的系统呼叫,解决的方法是使用 RT-FIFO 将一个 RTAI real-time kernel module 和真正的 Linux 行程连接在一起,由这个行程做 代理人的工作为其呼叫 Linux 系统呼叫。下图说明了 LXRT proxy 行程的概念 


      红色的部份表示一组 RTAI 的实时行程和它在使用者模式 (user space) 的 伙伴。你可以了解,当 proxy 激活后,它不再可以被任何的抢先 (preempt), 所以原本有的优势就不再保有了。 


        KURT 
        KURT 是由 kansas 大学所创造的系统,它和 NMT RT-Linux 及 RTAI 有很大的不同。KURT 是第一个可以使用系统呼叫的 real-time Linux。由于 KURT只是简单的将 Linux 的排程器用一个很简单的时间驱动式(time driven)排程器加以取代,实时行程的执行很容易很其它非实时行程的影响。 


        RED-Linux 
        这是小弟在下不才我在加州大学 Irvine 分校所做的系统,它和 KURT 类似,是一个 可以使用所以 Linux 系统呼叫的 real-time Linux。它的特点是使用”抢先检查点 (preemption point)”改善系统的反应速度。前面说过 KURT 的最大问题在于它受 限于原有的 Linux 架构,使得系统的反应时间很难控制。然而在 RED-Linux 这一 点已经被大大的改善,由在 2.0 版的经验得知其反应延迟约在 100 us 左右。 

      RED-Linux 非常有弹性的排程器架构也是其特点之一,这部份基本上就是我博士 论文的主轴。它使得 RED-Linux 可以符合各种不同复杂度系统的需求。基本上,它将排程器分成 dispartcher 和 allocator 二部份,dispatcher 在核心中执行而 allocator 在使用者模式执行。allocator 可以是应用程序的一部份,也可以是一个独立的单位。通常它可能是 middleware 的一部份,负责将应用程序的 resource request 转换成 kerner 可以了解的格式。 

      RED-Linux 目前正在进行 POSIX 兼容模式的移植工作,所有 POSIX 中的实时 排程、定时器、sporadic server 等都将会被实作出来。 

      所有这些有关 real-time Linux 的计画都是在 open source 的情况下发展,所以 我们可以预期在将来它们会有某些程度上截长补短的情况出现。前面说过,real-time Linux 主要有二个大类。第一种是 NMT RT-Linux 和 RTAI,它们的实时行程实际上 是一个核心模块。所以它们事实上是一种 real-time 驱动程序,RTAI 和档案系统 及网络系统其实有很相似的结构,差别只是在于其驱动的硬件类别不同而已。 

      而另一方面,如 KURT, Linux/RK 及 RED-Linux 之类的系统则受限于能达到的时 间分辨率。虽然 RED-Linux 已经把这个极限推到 1ms 左右,但我们可以预期在 PC 的架构下要达到 100us 以下是很困难的。也就是说,对于要求 10K 以上频率的应用 是不可能使用这种架构来达成。 

      但这其实是一个很合理的限制,我们可以将二种架构整合成一个系统来满足 所有的需求。LXRT 是一个正确的方向,但如果使用 RED-Linux 和 RTAI 整合 可能更能达成需求。RED-Linux 非常弹性的排程器架构使得整合更行简单。我 希望能在未来半年内推出这个产品,以成为一个终极的 real-time Linux。并 思考如何使整个系统正式的和 Linux 整合以利未来的发展。 
    展开全文
  • 实时进程将得到优先调用,实时进程根据实时优先级决定调度权值,分时进程则通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大,也就是曾经使用了cpu最少的进程将会得到优先

    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可以让每个任务都执行一段时间。

    SHCED_RR和SCHED_FIFO的相同点:

    SHCED_RR和SHCED_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,则保证了这两个任务可以循环执行,保证了公平。
    展开全文
  • 对于实时操作系统(RTOS)和非实时操作系统,你...实时操作系统:uCOS/VxWorks/RTLinux实时操作系统:Linux/Windows/OSX 我也只能列举出来这么多了。 重点不在这里,重点在于他们之间的区别,详见下图: ...

    转自:http://blog.csdn.net/u013752202/article/details/53649047

    实时操作系统的相关介绍请查看一下文章,持续更新中

    对于实时操作系统(RTOS)和非实时操作系统,你能分别列举出来多少?

    实时操作系统:uCOS/VxWorks/RTLinux

    非实时操作系统:Linux/Windows/OSX

    我也只能列举出来这么多了。

    重点不在这里,重点在于他们之间的区别,详见下图:

     

    在上面的图中右边的任务优先级高于左边的任务,先看实时操作系统的,当优先级更高的任务2就绪的时候,即便任务1正在运行中,也必须立刻交出CPU的使用权,就跟中断一样,先执行任务2,等任务2执行完或者主动挂起(sleep)让出CPU的时候,任务1才能接着运行。

    uCOS就是这样的实时操作系统,它是可抢占性的内核。我曾跟很多同事争辩过uCOS高优先级任务就绪而低优先级任务正在执行没有sleep的时候,高优先级任务能否打断低优先级任务而立即得到执行,遗憾的是很多人仍然坚持必须要sleep才能切换任务,每次我都只能无奈的用实验来证明这个本来不应该争辩的东西。

    再看看我们的Linux/Windows/OSX这些基于时间片轮转的操作系统遇到这种问题的时候会怎么样呢,毫无疑问它们都是非实时的操作系统,CPU是不可抢占的,从上图可以看到,即便高优先级的任务就绪了,也不能马上中断低优先级任务而得到执行,必须要等到低优先级任务主动挂起(sleep)或者时间片结束才能得到执行。所以我们在使用PC的时候经常会遇到应用程序无响应的问题。即硬件资源被其他任务占用,本任务得不到立即执行。

    我们平常娱乐办公用的都是非实时的操作系统,那么什么时候该使用实时操作系统呢?试想一下,一个射出的导弹如果要执行一个调整姿态的任务,这个时候刚好有其他无关紧要的任务在执行,如果是非实时操作系统,那么可能会等一会儿然后弹个窗告诉你应用程序无响应(如果它有窗可弹的话),那完了等弹窗出来导弹都射到外太空去了!毫无疑问这种高优先级任务片刻都不能等的设备就必须上实时操作系统,如果你不想你的导弹射到外太空去的话。

    展开全文
  • Linux操作系统实时性分析

    万次阅读 2016-12-11 13:02:46
    如果你想开发的嵌入式设备是一个和网络应用密切相关或者就是一个网络设备,那么你应该选择用嵌入式Linux或者uCLinux,而不是uC/OS-II。  第二是实时性。没有一个绝对的数字可以告诉你什么是硬实时,什么是软实时,...
  • 分时操作系统与实时操作系统

    万次阅读 多人点赞 2017-09-05 22:16:33
    计算机操作系统从20世纪50年代...但人们对人机交互的需求却一直未能得到有效解决,因此一种新型OS——分时OS就应运而生了,紧接着实时OS也在工业、军事等领域的需求下也随之诞生。现在我们所使用的操作系统都属于这...
  • 浅谈实时操作系统和分时操作系统

    千次阅读 2017-06-29 11:33:25
    什么是实时操作系统?参见 Donal Gillies 在 ...一个实时操作系统面对变化的负载(从最小到最坏的情况)必须确定性地保证满足时间要求。请注意,必须要满足确定性,而不是要求速度足够快!例如,如果使用足够强大的C
  • Linux查看实时带宽流量情况

    千次阅读 2016-09-01 19:48:01
    Linux中查看网卡流量工具有iptraf、iftop以及nethogs等,iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。
  • 教你如何把Linux变为实时操作系统   过去很多嵌入式系统不是一个操作系统,或者是提供商的专有核心,或者是DOS操作系统的扩展。显然这些方法并不能适应今天嵌入式系统开发的要求!现有的一些商业实时操作系统,...
  • Linux面试题(2020最新版)

    万次阅读 多人点赞 2020-03-01 11:14:38
    文章目录Linux 概述什么是LinuxUnix和Linux有什么区别?什么是 Linux 内核?Linux的基本组件是什么?Linux 的体系结构BASH和DOS之间的基本区别是什么?Linux 开机启动过程?Linux系统缺省的运行级别?Linux 使用的...
  • 基于Linux实时系统

    千次阅读 2005-09-29 09:05:00
    内容: ...第一部分: 实时调度算法介绍 ...1. 实时CPU调度算法分类 ...2. 通用Linux系统中的CPU调度 ...4. 实时Linux实现方案的总结 参考资料 关于作者 对本文的评价
  • Linux实现强实时性的需求与方法

    千次阅读 2016-09-09 11:25:39
    过去很多嵌入式系统不是一个操作系统,或者是提供商的专有核心,或者是DOS操作系统的扩展... 因此,人们把目光投向了通用操作系统(例如Windows、Solaris、linux),希望把它们“改造”为实时操作系统。通常这些操作系
  • 实时系统跟分时系统

    万次阅读 2016-12-05 12:12:44
     实时操作系统(RTOS)是指当外界事件或数据产生,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。...
  • Linux操作系统基础

    万次阅读 多人点赞 2018-05-27 12:16:53
    Linux简介 Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机 Linux介绍 Linux出现...
  • 安装Ubuntu Linux系统硬盘分区最合理的方法

    万次阅读 多人点赞 2017-08-13 15:36:20
    无论是安装Windows还是Linux操作系统,硬盘分区都是整个系统安装过程中最为棘手的环节,网上的一些Ubuntu Linux安装教程一般都是自动分区,给初学者带来很大的不便,下面我就根据多年来在装系统的经验谈谈安装Ubuntu...
  • Linux实时补丁的思想和方式

    千次阅读 2010-02-09 20:34:00
    CONFIG_PREEMPT_RT的引入意味着linux内核拥有了实时性,虽然还远远达不到硬实时,可是基本的实时还是挺不错的,这又一次说明了linux内核的灵活性,想加入什么新特性很简单而且很直接。 这个实时性补丁主要考虑了几...
  • linux中用户的分类

    千次阅读 2013-06-07 23:01:03
    linux中用户的分类 在linux中用户分为三类: 超级用户:(root,UID=0),UID为0的用户就是超级...例如:yuanhong:x:3:3:root:/root:/bin/bash,如果我们把UID 3 改为0,那么下次我们登陆yuanhong这个用户,就是
  • 实时Linux (RT-Linux)

    万次阅读 2012-04-28 22:47:54
    这篇文章讲述了实时Linux(RT)的基本概念。以及使用RT-Linux的硬实时。 _________________ _________________ _________________   “实时”是什么? 在介绍RT-Linux之前我们有必要先来大体看一下一些...
  • 最近在看《深入理解Linux内核》进程调度,以前一些混淆的有关进程调度的概念也渐渐清晰起来,特此记录下来算是进程调度的开篇,本文不涉及代码分析。...Linux的进程普通进程和实时进程,普通进程即非实时进程SCHE
  • Linux的进程普通进程和实时进程,而实时进程又SCHED_FIFO与SCHED_RR,它们都比普通进程的优先级高。对于SCHED_FIFO进程,它就一直运行直到退出,除非它阻塞才会释放CPU, 或被更高优先级的实时进 程抢占。对于...
  • 过去很多嵌入式系统不是一个操作系统,或者是提供商的专有核心,或者是DOS操作系统的 扩展。... 因此,人们把目光投向了通用操作系统(例如Windows、Solaris、linux),希望把它们“ 改造”为实时
  • Linux

    千次阅读 多人点赞 2020-03-25 10:17:45
    一、Linux简介 Linux是一类Unix计算机操作系统的统称。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。严格来讲,Linux这个词本身只表示Linux内核,但在实际上...
  • 特别是在运行内核线程时,Linux关闭中断,别的问题包括分时的调度,虚拟文件系统的时间不确定性,缺乏高精度的计时器。所以要对现有的Linux进行改造,即要对Linux进行实时化,这一章将介绍RTLinux的结构和如何对RT...
  • Linux从青铜到王者】第一篇:Linux常见指令

    万次阅读 多人点赞 2021-05-24 16:24:09
    文章目录系列文章目录前言一、Linux是什么二、Linux下基本指令1.ls指令2.pwd指令3.cd指令4.touch指令5.mkdir指令6.rmdir指令7.rm指令8.man指令9.echo指令10.cp指令2.读入数据总结 前言 一、Linux是什么 Linux是...
  • Linux系统中设备分类

    千次阅读 2018-04-24 18:02:33
    一般来说,Linux把设备驱动程序分为4种:字符设备,块设备,网络设备及其他设备。其中字符设备和块设备可以像文件一样被访问。例如:驱动程序通常会实现open, close, write, read, seek等操作。网络设备在Linux系统...
  • linux操作系统的分类及解释

    万次阅读 2016-07-27 14:13:38
    什么是Linux?    也许很多人会不屑的说,Linux不就是个操作系统么。错!Linux不是一个操作系统,严格来讲,Linux只是一个操作系统中的内核。内核是什么?内核建立了计算机软件与硬件之间通讯的平台,内核提供...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 486,979
精华内容 194,791
关键字:

linux是实时还是分时

linux 订阅