说到嵌入式操作系统之前,先介绍一下操作系统。操作系统是硬件与用户之间的中介,用来管理系统资源和控制应用程序运行的计算机程序。
1)嵌入式系统的特点
相对于操作系统,嵌入式操作系统不要求全能,但必须能够有效率的发挥硬件最大的能力,使产品获得最高的性价比,嵌入式操作系统的特点如下:
- 代码量小,能够在嵌入式系统有效的存储空间内运行;
- 统一的API;
- 模块间解耦,可拆卸;
- 强实时性,可应用于各种实时控制;
- 可靠性高,无需人工干预独立运行,并能及时处理各类事件和故障。
2)内核
嵌入式系统分为宏内核与微内核:
- 典型的微内核有μCOS、Uitron这些内核小很多,只有最基本的进程管理、进程通信、内存管理组成,其他部分和内核分开。内核本身只负责客户进程和服务进程之间的消息传递;
- 典型的宏内核有Linux、Unix,这些内核相对比较庞大,内核设计者从效率的角度把基本的操作系统内核和设备驱动、文件系统、网络等统一安排编译,它的移植能力较弱。
3)操作系统基本组件
无论是宏内核还是微内核都有进程管理、内存管理、中断管理以及API。
- 进程管理:操作系统为进程分配资源,实现进程间共享和交换信息,保护进程资源以及实现进程间同步。在多线程系统中,进程变成了资源管理器,线程成为了程序的基本执行单元。进程管理包括进程的创建与维护、进程的调度切换、多处理器的进程管理;
- 内存管理:虚存管理技术广泛应用于系统管理。它可以使每个程序都有一个独立的虚拟存储空间,使应用程序获得比实际内存更大的编址空间;
- 中断管理:中断管理为了提高系统效率,确保关键的功能及时执行;
- API:包括人机界面以及操作系统提供给用户开发的应用程序API函数。
4)嵌入式实时操作系统(RTOS)
在介绍之前先介绍个概念:任务调度方式。
5)任务调度
在嵌入式操作系统中,任务调度方式有三种:不可抢占式调度、可抢占调度、时间片轮转调度
- 不可抢占式调度:一个任务一旦或者处理器资源就独占处理器运行,直至该任务结束进入等待状态;
- 可抢占调度:基于任务优先级,当前任务必须随时让位于优先级更高且处于就绪状态的任务;
- 时间片轮转调度:当两个或两个以上任务有相同优先级时,某个任务运行事先规定的时间,然后切换时另外的任务。
嵌入式操作系统分为嵌入式操作系统和嵌入式实时操作系统(RTOS),两者的主要区别是任务调度方式不同。
嵌入式实时操作系统的任务调度方法基于可抢占调度法,它真的具有实时性。
6)实时性
实时也就是操作系统的计算结果不仅依赖于计算的逻辑结果,也依赖于结果产生的时间,RTOS不见要求产生正确的结果,还要求结果产生的足够快。“快”是一个相对的概念,性能很强大的操作系统不一定是实时系统。
而实时性又分为硬实时和软实时:
- 硬实时:必须在恰当的时间里完成相应的任务;
- 软实时:要求系统以最快的速度执行,运行时间超时是可以容忍的。
7)嵌入式实时操作系统
RTOS是一段嵌入在目标代码中的程序,系统复位后首先执行,相当于用户的主程序,用户的其他程序都建立在RTOS之上;此外RTOS是一个标准的内核,CPU将时间、中断、IO、定时器等资源都包装起来,留给用户一个标准API,并根据各个任务的优先级,合理的在不同任务之间分配CPU时间。
此外RTOS最关键的部分就是实时多任务内核,包括任务管理、消息管理、存储管理、事件管理;这些管理功能是通过RTOS的API给用户调用的,跨平台移植程序修改的很少。
8)嵌入式实时操作系统特点
- 微内核设计;
- 系统能够快速进行任务切换、保证任务抢先和dedline的完成;
- 尽量减少禁止中断的时间;
- 提供固定或者可变的内存管理机制;
- 提供一个能够满足应用要求的实时时钟;
- 必须提供合适的进程任务调度方法;
- 允许应用程序自己修改内核。
9)常见的RTOS
本文由 @无脚鸟 原创发布于人人都是产品经理,未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。