操作系统|Linux是实时系统还是分时操作系统?

操作系统|Linux是实时系统还是分时操作系统?

我们平时分享的μC/OS、FreeRTOS、RT-Thread、ThreadX这些都是实时操作系统(RTOS) , 那么有读者问:什么是分时操作系统 , Linux属于实时操作系统吗?
实时操作系统(RTOS)
RTOS , 英文全称Real Time Operating System , 即实时操作系统 。
1.实时操作系统定义
实时操作系统(RTOS)是指当外界事件或数据产生时 , 能够接受并以足够快的速度予以处理 , 其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应 , 并控制所有实时任务协调一致运行的操作系统 。
因而 , 提供及时响应和高可靠性是其主要特点 。
实时操作系统有硬实时和软实时之分 , 硬实时要求在规定的时间内必须完成操作 , 这是在操作系统设计时保证的 。
软实时则只要按照任务的优先级 , 尽可能快地完成操作即可 。 我们通常使用的操作系统在经过一定改变之后就可以变成实时操作系统 。

实时操作系统是保证在一定时间限制内完成特定功能的操作系统 。 例如 , 可以为确保生产线上的机器人能获取某个物体而设计一个操作系统 。 在“硬”实时操作系统中 , 如果不能在允许时间内完成使物体可达的计算 , 操作系统将因错误结束 。
在“软”实时操作系统中 , 生产线仍然能继续工作 , 但产品的输出会因产品不能在允许时间内到达而减慢 , 这使机器人有短暂的不生产现象 。 一些实时操作系统是为特定的应用设计的 , 另一些是通用的 。
一些通用目的的操作系统称自己为实时操作系统 。 但某种程度上 , 大部分通用目的的操作系统 , 如微软的Windows NT或IBM的OS/390有实时系统的特征 。 这就是说 , 即使一个操作系统不是严格的实时系统 , 它们也能解决一部分实时应用问题 。


2.实时操作系统的特征
1)多任务;
2)有线程优先级
3)多种中断级别

小的嵌入式操作系统经常需要实时操作系统 , 内核要满足实时操作系统的要求 。
3.实时操作系统的相关概念
(1)基本概念
代码临界段:指处理时不可分割的代码 。 一旦这部分代码开始执行则不允许中断打入;

资源:任何为任务所占用的实体;

共享资源:可以被一个以上任务使用的资源;

任务:也称作一个线程 , 是一个简单的程序 。 每个任务被赋予一定的优先级 , 有它自己的一套CPU寄存器和自己的栈空间 。 典型地 , 每个任务都是一个无限的循环 , 每个任务都处在以下五个状态下:休眠态 , 就绪态 , 运行态 , 挂起态 , 被中断态;
任务切换:将正在运行任务的当前状态(CPU寄存器中的全部内容)保存在任务自己的栈区 , 然后把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU的寄存器 , 并开始下一个任务的运行;

内核:负责管理各个任务 , 为每个任务分配CPU时间 , 并负责任务之间通讯 。 分为不可剥夺型内核于可剥夺型内核;

调度:内核的主要职责之一 , 决定轮到哪个任务运行 。 一般基于优先级调度法;


(2)关于优先级的问题
任务优先级:分为优先级不可改变的静态优先级和优先级可改变的动态优先级;

优先级反转:优先级反转问题是实时系统中出现最多的问题 。 共享资源的分配可导致优先级低的任务先运行 , 优先级高的任务后运行 。 解决的办法是使用“优先级继承”算法来临时改变任务优先级 , 以遏制优先级反转 。