嵌入式操作系统漫议:功能与特点
何为操作系统?
在手机、PC等个人计算系统中,操作系统是不可或缺的存在,其重要性如同空气和水对人而言一样。随着手机的普及,安卓、iOS等操作系统也变得广为人知。其实个人计算系统的操作系统是由内核、各种运行库、中间件和部分应用程序构成的一个庞大系统。图 1是安卓系统的构成图。
图 1 安卓系统的构成
最下面的部分是Linux内核,包括各种驱动程序,主要负责系统的启动和各种硬件设备(相机、WiFi等)的管理;在其上的部分是各种运行库,提供应用程序与内核之间交互的接口及基本的库函数;运行库之上是各种中间件,在安卓系统中称为应用框架(Application Framework),这是为了应用程序开发的便利而提供的各种支持软件;应用框架之上就是各种应用程序,如浏览器、电话、短信、联系人等,也包括用户安装的各种各样的App。
在各种操作系统中,内核部分是其核心,是保证系统正常、高效运行的关键。内核最主要的功能是管理各种硬件资源,并通过运行库为各种应用程序提供方便易用的统一接口。管理的硬件资源包括:计算资源(CPU)、内部存储资源(RAM)、外部存储资源(Flash/硬盘)、显示资源(显卡)、外部接口资源(USB、Ethernet、UART)等。在个人计算系统中,由于各种应用程序的存在,操作系统还管理各种应用程序:包括应用程序的存储、载入、运行和结束,也提供多个应用程序运行时的计算资源分配、优先级管理、相互之间的通信、以及冲突仲裁。因此一个标准的操作系统内核必须具有以下功能:
- 进程和线程管理(Process&Thread management)
- 内存管理(Memory management)
- 文件系统(File system)
- 网络通信(Networking)
- 安全机制(Security)
- 驱动程序(Device drivers)
嵌入式操作系统的构成
嵌入式操作系统也属于操作系统,但并不具有上述个人计算系统的操作系统所具有的完整功能,只是一个简化了的内核。嵌入式操作系统运行在嵌入式设备中,嵌入式设备一般资源有限,功能也比较明确和固定,因此嵌入式操作系统是上述个人设备操作系统的一个子集,而且一般根据所需实现的功能不同进行相应的裁剪。这种裁剪既包括某些功能的整体删除,如文件系统、安全机制在绝大部分嵌入式系统中并不需要,因此可以整体删除;也包括采用一些大大简化的实现,如内存管理、网络通信等,在嵌入式系统中往往根据设备的功能实现一个简化的版本。图 2是FreeRTOS系统的构成,与个人设备的操作系统相比,大大简化了。
图 2 FreeRTOS系统的构成
在图 2中,白底的部分由FreeRTOS操作系统提供,包括内核和附加功能。附加功能根据项目的要求,可以使用,也可以不使用。内核部分包括任务管理和调度、定时器管理、动态内存管理、队列管理、事件管理、排他访问和同步等。与Linux等的内核相比,有了很大的简化。而且FreeRTOS(其他嵌入式操作系统基本类似)提供了灵活的配置功能,内核的几乎所有功能都是可裁剪的。比如如果不需要动态内存分配(这在嵌入式系统中很常见),则可以去掉堆管理(Heap Management)。上图中灰底的部分是由用户开发的部分,包括驱动和应用程序。
嵌入式操作系统包括以下一些主要功能:
- 硬件初始化
- 任务管理与调度
- 任务间通信服务
- 定时服务:时间精度问题
- 内存管理
- TCP/IP通信协议栈
- 外设驱动
嵌入式操作系统的特点
与个人设备的操作系统相比,嵌入式操作系统有它自己的特点:
- 嵌入式操作系统更小,往往与应用程序编译在一起运行。由于嵌入式设备功能明确,不需要支持使用时的应用程序安装与卸载,因此操作系统和应用程序一般做成一个运行包,在生产过程中下载到设备中,在出厂后的使用过程中不再更新。为了方便与应用程序一起运行,嵌入式操作系统与个人设备的操作系统不同,往往以源代码,或者源代码+运行库的形式提供。
- 嵌入式操作系统往往是实时操作系统。有的嵌入式设备对处理的实时性有严格要求,比如一个电机控制系统,当检出动作异常时必须在规定的时间内迅速处理。这种实时性是通过操作系统层面的任务调度机制、任务优先级的设定和应用程序的快速处理来达到的。详细介绍将在后面的章节中进行。
- 可移植性。由于嵌入式设备的应用场景多样,复杂程度千差万别,应用程序的大小各不相同。因此为了优化性价比,各个芯片厂家提供了种类繁多、配置各异的处理芯片。但其不利之处是不可避免地导致需要将嵌入式程序的一部分或全部在各种不同的芯片之间进行移植。这有可能是在产品升级换代时,原有MCU的资源不足导致的;也可能是在新产品中想重用原有产品的成果导致的。总之,这种移植的需求频繁发生。
一个设计良好的系统,在不同的硬件之间移植时,应该将修改控制在最小范围。由于与硬件的交互与操作系统密切相关,因此可移植性成为评价操作系统性能的一个主要指标。各种主流的操作系统不但提供了对庞大的芯片族的支持,在可移植性上也作了良好的设计,并且提供了详细的移植指南。例如FreeRTOS将移植时需要修改的操作系统文件只有5个(不使用动态内存分配时),修改的代码量在数百行。当然BSP(板级支持程序)是需要额外提供的,而编写BSP需要仔细阅读芯片手册,对芯片有详细了解,是系统移植的关键。但好消息是芯片厂商都会提供相应的BSP源代码,基本上不需修改,直接可用的。因此,在需要自己做系统移植时,最简单的做法是参照包含在操作系统中的类似芯片的BSP代码。
- 可裁剪性。嵌入式设备为了达到最优性价比,所拥有的存储、计算等资源有限,因此必须保证系统中所包含的功能模块都是必须的。而操作系统为了对应各种各样的设备,其中包含了很多功能模块,因此必须根据具体的设备进行裁剪。一个具有良好可裁剪性的操作系统提供各种方便的配置工具,以利于功能模块的裁剪。通过简单的配置,可以包含或删除各种功能模块,从而满足不同系统的要求。在FreeRTOS中,提供了一个FreeRTOSConfig.h文件,用于配置需要的功能。在该文件中提供了一系列宏开关,用于指定是否包含某个功能。各个功能模块的详细介绍参照操作系统的文档。裁剪操作系统时,除了解各个功能模块,更重要的是明确自己系统的需求及采用的实现方式。当然由于裁剪本身比较简单,在开发的过程中修改也是很方便的。在最小配置之下,FreeRTOS只占用6K的代码空间和1K的数据空间,非常精炼。
- 可靠性。有的嵌入式系统运行在非常关键的位置,比如汽车控制,有的甚至是运行在卫星、火箭这样容不得一点差错的关键场合。即便是如家用电器等普通的应用场景,由于嵌入式软件一般不能简单地更新版本,因此对软件可靠性的要求也高于PC等个人设备上的软件。而操作系统作为嵌入式系统的基础,对可靠性的要求更高。当然,系统的可靠性不但依赖于操作系统,也依赖于应用程序。关于怎样提高应用程序的可靠性,将在相关的章节中介绍。
嵌入式操作系统漫议:功能与特点相关推荐
- 嵌入式操作系统漫议:操作系统or裸跑?
在嵌入式软件开发中,可以使用操作系统,也可以不使用操作系统,这取决于系统的复杂程度.如果是功能比较单一的系统,如没有联网功能的刷卡机.简单的家电监控系统,没有操作系统完全没有问题.但如果符合以下几种情 ...
- 嵌入式操作系统风云录:历史演进与物联网未来Chapter3 第3章
Chapter3 第3章 开源的嵌入式操作系统 今天开源软件正大行其道,从服务器.云计算.桌面到手机和嵌入式设备,到处都可以见到开源软件和开源的操作系统.本章介绍对嵌入式系统发展具有重要影响的几种开源 ...
- 本科生学习fpga,dsp,嵌入式操作系统哪个好
本科生的话,建议做软件方向的嵌入式系统,即利用现有的芯片和操作系统(开源的非开源的都可以)进行开发.嵌入式没有竞争相对小的方向,不管你搞什么,今天无限风光,明天就有可能寄人篱下.希望楼主在选择之前首先 ...
- 优先级调度算法实现_一篇讲透嵌入式操作系统任务调度
进互联网公司操作系统和网络库是基础技能,面试过不去的看,这里基于嵌入式操作系统分几章来总结一下任务调度.内存分配和网络协议栈的基础原理和代码实现. 处理器上电时会产生一个复位中断,接下来会执行复位中断 ...
- 国产嵌入式操作系统发展思考
点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 作者 | 何小庆 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 嵌入 ...
- [渝粤教育] 中国地质大学 嵌入式操作系统 复习题 (2)
<嵌入式操作系统>模拟题 一.单选题 1./babys目录属于project群组(group)并设置了1770的访问权限.而project群组的成员如下: #group dog cat f ...
- 嵌入式操作系统_航天科工海鹰翼辉嵌入式操作系统获自主原创“身份证”
日前,由中国航天科工集团三院三部研发的海鹰翼辉嵌入式操作系统顺利通过中国信息安全评测中心的自主原创评测,成为国内首个具有自主原创"身份证"的嵌入式操作系统. 随着物联网和人工智能技 ...
- 深入解析物联网操作系统(架构/功能/实例分析)
深入解析物联网操作系统(架构/功能/实例分析) 物联网的主要特点 i. 连接 所谓连接,指的是各种各样的终端设备,都能够通过某种网络技术,连接到一个统一的网络上.任何终端之间都可以相互访问.下一 ...
- IOT(29)---深入解析物联网操作系统(架构/功能/实例分析)
深入解析物联网操作系统(架构/功能/实例分析) 1. 物联网的主要特点 i. 连接 所谓连接,指的是各种各样的终端设备,都能够通过某种网络技术,连接到一个统一 ...
最新文章
- Hexo博客NexT主题美化之评论系统
- java 找不到工程文件_类加载器找不到文件求帮助
- 反思快速完成功能代码
- 国科大prml14-独立于算法的机器学习(boosting/
- 挺起基础软件自主创新的脊梁 锐易特软件荣获2008中国软件信息化创新奖
- 什么是分布式系统,如何学习分布式系统
- 网上购物系统数据库分析
- 答题微信小程序实现(5):大功告成,整个模板,题库导入/切换/积分/选择对错判断/闯关成功
- 毁灭战士 DOOM 3DO 源代码公开
- macbookair有没有touchbar_高配MacBook Air和低配MacBook Pro选哪个?
- WPS服务器维护,wps卸载云服务器
- 安全教育平台登录显示服务器繁忙,安全教育平台登录失败是怎么回事 解决方法...
- 碰到ConvergenceWarning的情况
- 计算机夏令营英语自我介绍,保研夏令营英文自我介绍3篇
- css3上箭头怎么写,纯css作箭头
- 计算机机房网络维护日志,机房网络设备维护方案.doc
- matlab 求其骨架,数字图像处理图像的骨架生成和提取(Matlab)三种方法
- iOS Charles捉取正式环境上的数据
- 如何在Android/data文件夹下面出现包路径
- mysql聚合函数bit_and,聚合函数