实时系统和非实时系统的区别

嵌入式操作系统分为实时系统和非实时系统两类,常见的实时系统有:ThreadX、FreeRTOS、ucOS;常见的非实时系统有:windows、linux、Android。两类操作系统的主要区别在于任务调度处理方式不同,具体说明如下。
非实时系统
任务调度使用如下两种方式:
1. 非抢占式:一旦内核把资源分配给某进程后,便让该进程一直执行,直到该进程完成或发生某事件而被阻塞,才再把处理机分配给其他进程,抢占不被允许。
2. 基于时间片原则的抢占式:当内核给该进程分配的时间片结束后,内核会停止正在执行的这个进程,下一个时间片分配给其他进程执行。
实时系统
没有时间片的概念,完全基于优先权原则,优先级高的进程可以无条件的,抢占任何正在执行的,低于自己优先级的进程,无论正在运行的进程是否已经进入内核调度。
系统中每个任务都有一个介于最高0到最低255之间的优先级。任一时刻,系统内核一旦发现一个优先级更高的任务转变为就绪态,内核就保存当前任务的上下文并把当前任务状态转换为阻塞态,同时切换到这个高优先级任务的上下文执行。
补充说明
有些非实时系统也有优先级的概念,如果非实时系统也定义了优先级和实时操作系统的任务调度方式也是有区别的具体如下:
 任务调度原则不同:
前提Task2 优先级大于Task1
Task1先准备就绪并且已经开始运行:对于非实时系统,当Task2准备就绪是,不会马上切换到Task2,要等待Task1的时间片结束或者Task1主动挂起后,Task2才开始运行,然后一直运行,直到结束,系统才会再次给低优先级的Task1分配时间片。
Task1先准备就绪并且已经开始运行:对于实时系统,当Task2准备就绪的那一刻开始,Task1直接就被内核挂起,Task2开始执行,直到结束,系统才会再次给低优先级的Task1分配时间片。
 任务调度的时间不同:
非实时系统任务调度不是严格实时的,如linux调度时间的最小单位为10ms,windows系统时间片也只是ms级别。而实时系统的调度时间是us级的,而且一般小于10us。
 任务调度算法不同:
实时系统包含专有的任务调度算法,而且这也是实时系统的核心所在。而非实时系统无论是linux还是windows,都缺乏有效的实时任务的调度机制和调度算法。

猜你喜欢

转载自blog.csdn.net/beauytlife_1985/article/details/82115522
今日推荐