【嵌入式软件系统—学习笔记】RTOS(实时操作系统)

一、RTOS中的基本概念

  • 背景

OS(操作系统,operating system),是嵌入式系统中的灵魂,是其软件系统中的重要组成部分。

目前,嵌入式系统的智能化程度越来越高,而智能化主要是靠软件部分实现,其中,OS部分则起到关键、重要作用。

取决于嵌入式系统的应用领域,其操作系统可以分为实时操作系统(RTOS)和非实时操作系统(NRTOS)。

例如,用于航空航天的机载设备,鉴于实时性要求非常严格,大都属于实时操作系统(Real Time OperatingSystem,即RTOS)。

既然 RTOS 对实时性有特别的要求,那RTOS是怎么保证其实时性?

    ① 调度 一切可以利用的资源完成实时任务

    ② 着眼于提高计算机系统的使用效率,同时满足对时间的限制和关键要求。

通过uC/OS-II 微内核、嵌入式 Linux 内核,这两种开源的嵌入式OS,可以帮助我们理解和掌握嵌入式系统中RTOS的基本原理和设计方法。

  • RTOS具有的功能

RTOS具有的功能

RTOS具有的功能

描述

1) 任务管理

包含多任务和基于优先级的任务调度

2) 任务间的同步和通信

基于Semaphore  、MailBox等

3) 优化的内存管理单元 (MMU)

负责处理中央处理器(CPU)的内存访问请求

4) 实时时钟服务

用以设置相应的寄存器来控制实时时钟的状态

5) 中断管理服务

处理器处理“急件”的服务

Semaphore:信号量 。又被称为信号灯,用信号量进行通信就像我们只拨通别人的手机而不与之通话。 

MailBox:邮箱。用邮箱进行通信则可达到既拨通别人的手机又与之通话的效果。换句话说,消息队列和邮箱可以及时传送事件的内容。

MMU:Memory Management Unit

RTC:Real Time Clock,可以。这些状态包括使实时时钟开始工作,也包括使实时时钟停止工作。

 

  • 操作系统中的进程与线程

RTOS中,内核(Kernel)是核心,其基本功能是多任务的切换和调度。

1、进程和线程在运行上的区别

操作系统中的进程(Process)和线程(Thread)有本质性的区别,主要表现在使用计算机系统的资源上。

创建一个进程与线程所使用计算机系统资源的区别
进程 地址空间、全局变量、打开文件、子进程、创建信号量(semaphore)、创建邮箱 (Mailbox)等
线程 只需要程序计数器(Program Counter-PC)、寄存 器(Registers)、堆栈(Stack)这三类资源

进程很常见,比如:一个跑起来运行的C语言程序则成为进程(Process),该进程只有一个线程即单线程;而多线程机制中,就能在一个进程中跑多个线程。如下图,左图表示有三个进程(process),每个进程中各有一个线程; 而右图则只有一个进程(process),只不过在该进程中含有三个线程。

进程与线程运行的区别

图中,线程用线条表示,进程用圆圈表示。

 

2、进程与线程在实现上的区别

比如一个C语言实验,为完成一个任务需要 p1、p2、p3 三个进程,如下图最常规的做法如下:

先做完 p1(实现 c1=a+b)-----> 再做 p2(实现 c2=a-b)----->最后再做 p3(实现 c3=a*b)。

进程运行及其实现代码示例

需要注意的是:p1、p2、p3 不能同时运行,只有 p1 运行完后 p2 运行,最后 p3 运行, 可以理解它们是顺序进行的。

而在 Linux 和其他网络编程环境下,OS(操作系统)提供了一种多线程的机制,pthread_create( )、pthread_join( )、pthread_exit( )函数分别提供多线程的创建、加入和退出功能(以Linux为例), 从而实现多线程并发处理。


二、嵌入式操作系统的主要种类

目前市场上的嵌入式操作系统有几十种,中国近年出现了不少国产嵌入式操作系统,如 HopenOs、DeltaOs 等。国际上嵌入式操作系统种类更多,除了最常用的 uC/OS-II、嵌入式 Linux、 Vxworks 和 WinCE 外,还包括 QNX、PSOS 等。

1、uC/OS-II 

uC/OS-II ,一个实时多任务的微内核,为 Jean J. Labrosse 在 1992 年编写的一个开源代码。由于内核小(仅由十几个 C 语言和汇编文件构成),应用范围宽,目前可应用在许多工业控制器、通信设备和交换机中。它既是实时多任务的微内核,又是开源的代码。

2、Linux 操作系统

Linux 操作系统,有强大的网络功能及其代码的开源性, 但其内核具有不可剥夺特点,其实时性受到一定的限制。因此,为改善其实时性,人们提出了各种嵌入式 Linux 操作系统,如:RT-Linux、Kurt-Linux 和 Red-Linux。

三个线程运行及其代码(Linux操作系统示例)

3、Vxworks

Vxworks,作为一种商用的嵌入式操作系统,具有优秀的实时性和稳定性,其代码是不公开的, 而且价格昂贵。Vxworks 主要用于对实时性和稳定性有严格要求的航空航天项目中。

例如:美国 的 F16 战斗机,1997 年 4 月美国的火星表面登录的火星探路者上,用的均是 Vxworks 嵌入式操作系统。

4、 WinCE

WinCE(Window Compact Edition),由美国微软公司设计的,也可用于手持设备的操作系统中, 其主要特点是用户界面非常漂亮,但由于其针对不同种类的手持设备,导致生成的目标代码“超长”(redundant codes)。

 

 

发布了60 篇原创文章 · 获赞 16 · 访问量 7299

猜你喜欢

转载自blog.csdn.net/qq_42605300/article/details/105215866
今日推荐