实时操作系统与分时操作系统(或称非实时操作系统)的区别

1. 什么是实时操作系统?

      实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。其特点是及时响应和高可靠性。实时系统又分为硬实时系统和软实时系统,硬实时系统要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。

2. 什么是分时操作系统?

使一台计算机同时为几个、几十个甚至几百个用户服务的一种操作系统。把计算机与许多终端用户连接起来,分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用(时间片的概念)。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。

3. 实时操作系统需要满足哪些特征?

多任务:由于真实世界的事件的异步性,能够运行许多并发进程或任务是很重要的。多任务提供了一个较好的对真实世界的匹配,因为它允许对应于许多外部事件的多线程执行。系统内核分配CPU给这些任务来获得并发性。
抢占调度:真实世界的事件具有继承的优先级,在分配CPU的时候要注意到这些优先级。基于优先级的抢占调度,任务都被指定了优先级,在能够执行的任务(没有被挂起或正在等待资源)中,优先级最高的任务被分配CPU资源。换句话说,当一个高优先级的任务变为可执行态,它会立即抢占当前正在运行的较低优先级的任务。
任务间的通讯与同步:在一个实时系统中,可能有许多任务作为一个应用的一部分执行。系统必须提供这些任务间的快速且功能强大的通信机制。内核也要提供为了有效地共享不可抢占的资源或临界区所需的同步机制。
任务与中断之间的通信:尽管真实世界的事件通常作为中断方式到来,但为了提供有效的排队、优先化和减少中断延时,我们通常希望在任务级处理相应的工作。所以需要在任务级和中断级之间存在通信。

4. 分时操作系统需要满足哪些特征?

   交互性:用户与系统进行人机对话。 
   多路性:多用户同时在各自终端上使用同一CPU。 
   独立性:用户可彼此独立操作,互不干扰,互不混淆。 
   及时性:用户在短时间内可得到系统的及时回答。 

5. 实时操作系统主要应用领域

主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。例如:机器人的运动控制、无人驾驶等。

6. 分时操作系统主要应用领域

现在流行的PC,服务器都是采用这种运行模式,即把CPU的运行分成若干时间片分别处理不同的运算请求。

在介绍这两个概念之前要先介绍一下操作系统内核中的“线程调度器”

这里就拿Linux内核来做举列
在Linux内核中有一个scheduler线程调度器,有特殊的算法来挑选线程,专门用来给运行在虚拟内存管理模式下的线程分配CPU控制权的
那么先来介绍一下介绍一下scheduler是如何调度线程的
在目前的Linux内核(包括以往的历史版本)中scheduler使用的是时间片轮转的方法来调度线程的。
时间片轮转:
假如我们内存中加载了三个进程且在单核CPU的情况下,分别是两个进程,四个线程
在这里插入图片描述
当进程被加载到内存中时会有一个PCB控制块里面这个进程控制块是一个结构体,存在与该进程空间下
进程控制块里有一个成员变量用来表示该进程的优先级,scheduler会根据优先级优先选择优先级较高的进程挑选进程下的线程获得CPU控制权,0为最高优先级,Upper limit(该值可在Linux内核的宏定义中修改)为最低,但是在时间片轮转调度机制下的Linux内核这个优先级是无效的,因为如果优先级过高那些优先级较低的程序永远也别想被执行到,这就不符合多任务的概念了。
所以在基于时间片轮转的调度机制下的Linux内核在进程被加载时会给PCB控制块的优先级成员变量分配一个值0,这样优先级就都平等了,基于算法根据进程运行状态挑选出合适的进程在通过进程控制块得到该进程下有多少个线程,并通过线程控制块(TCB)得出每个线程的运行状态,在通过特殊算法为线程分配时间,假如说进程A下的线程B获取到了CPU的控制权,那么scheduler会通过特殊算法给它分配一定的时间一般为10毫秒,这是linux为了确保不会影响其它线程的执行而分配的最合理的时间。
在这里插入图片描述
当该线程在执行的同时scheduler也不会闲它会去计算下需要调度的线程,当线程A的时间到了的时候scheduler会强行将该线程的控制权夺回来,假如说scheduler计算的下一个需要调度的线程是进程B下的线程B那么scheduler会把优先权给进程B下的线程B,以此循环,scheduler不会直接中断会记录一个数据知道该线程执行到那一步了,当又轮到该线程执行时scheduler会读取该线程上一次的执行状态并调整CPU代码寄存器的指向!
在这里插入图片描述
不仅Linux是这样包括Windows和Mac操作系统下的线程调度器均采用时间片轮转的方法,由于Linux内核是公开的,可以被修改发行,新墨西哥矿业及科技学院的V. Yodaiken对Linux进行修改使它关闭了为每个进程的优先级都分配0的方法,并且关闭了调度算法,直接根据优先级来选择CPU的控制权,这样会大大提升电脑运行速度,提升操作系统内核运行速度,因为线程调度需要大量的计算(如果很多个进程那么会更加繁琐)线程执行状态保存等等,会极其繁琐,这种基于优先级的叫做优先级调度。优先级调度没有时间限制,假如说A进程下的A线程的优先级高其它进程下的线程那么除非这个线程执行完毕否则会一直占用着CPU的控制权,等该线程结束之后在把CPU控制权分配给优先级较高的线程!

这样的操作系统内核一般只用在专用机上,曾经就有一个操作系统比较出名,VXWORKS该操作系统内核不大,几十个文件,实现了:
多任务调度(采用基于优先级抢占方式,同时支持同优先级任务间的分时间片调度)
任务间的同步
进程间通讯机制
中断处理
定时器和内存管理机制
适合一开始研究操作系统内核人员研究,因为这个文件不大结构比较简单,不像Linux内核动不动几十万个.h/.c文件根本没办法梳理思路。
还有一种是先来先服务的调度方式,那个线程先被加载就先执行那个,以此执行。也属于实时操作系统。
一般实时操作系统用于专业领域,医疗,军事,研究等领域。

图解实时操作系统和非实时操作系统的区别

对于实时操作系统(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的时候经常会遇到应用程序无响应的问题。即硬件资源被其他任务占用,本任务得不到立即执行。

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

  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值