所谓嵌入式系统是指为特定应用而设计的专用电脑系统,通常执行的是带有特定要求的预先定义的任务。说到嵌入式系统上的 *** 作系统,人们首先想到的是各种经过裁剪的Linux以及WinCE。但是Linux和WinCE本身作为单内核(monolithickernel) *** 作系统,内核部分过于复杂,并不适用于嵌入式平台。而μC/Os-II和eCos等又过于简单,不能提供完整的功能。而随着微内核(microkernel) *** 作系统的理论和实现越来越成熟,微内核 *** 作系统开始成为嵌入式平台一个很好的选择。
图1 嵌入式平台 *** 作系统占有率比较图
嵌入式平台对 *** 作系统的需求
嵌入式平台上运行的 *** 作系统一方面会根据嵌入式平台所执行的功能对内核组件进行裁剪,在满足系统的应用功能的基础上去除不必要的部分;另一方面,嵌入式平台对 *** 作系统的可靠性,实时性和安全性特性有很高的要求。
可靠性是指嵌入式设备特别是工业设备中的嵌入式系统经常需要连续运行数以年计的时间而不出差错。可以想像如果飞机中的嵌入式系统在飞机飞行时崩溃重启,会造成多么大的危害。这就要求嵌入式系统上的 *** 作系统的运行完全没有错误,或者在错误出现的时候可以快速自动复位,并且避免在 *** 作系统中使用不稳定的模块。
实时性是指系统能在确定的时间内执行 *** 作并对外部的异步事件做出响应,比如汽车发生车祸时安全气囊必须在极短的时间内打开。一次正确的 *** 作不仅要求逻辑功能上的正确,而且要求完成这些 *** 作所花费的时间在限定之内。实时又分成硬实时和软实时,硬实时要求任务在规定时间内必须完成,这由 *** 作系统来保证;而软实时要求事件响应是实时的,并按照任务的优先级,尽可能在短时间内完成任务。实时 *** 作系统需要调度一切可利用的资源完成有实时性要求的任务,其次才着考虑提高 *** 作系统的整体效率。
随着嵌入式系统越来越多得与外部连接,甚至是通过互联网连接,其安全性也越来越受到关注。比如用掌上电脑进行网上购物的时候,用户的银行帐号信息必须得到严格的保护。安全性具体是指要求嵌入式设备在与外部连接的过程中,其内部的数据不会偶然或被恶意地破坏、更改或者泄露,维持嵌入式系统中信息的保密性和完整性。
微内核 *** 作系统
所谓微内核是一种最小的的计算机 *** 作系统内核,其设计思想是内核本身不提供 *** 作系统的相关服务,而是提供实现这些服务的机制,诸如底层的地址空间管理,线程调度以及进程间通信。一般的硬件都有执行权限级别,比如IntelIA32架构有Ring0到Ring3的特权级,而一般的 *** 作系统至少会用到两个,称之为内核态和用户态。而对于微内核 *** 作系统来说,并非 *** 作系统服务都运行于内核态,而是提供服务实现的机制部分运行于内核态;而 *** 作系统的服务,包括设备驱动,文件系统和用户界面等则作为用户态的服务应用程序运行。
图2 单内核 *** 作系统(左)和微内核 *** 作系统结构比较图
如图2所示,左边的是单内核 *** 作系统的结构示意图。我们常用的Windows *** 作系统和Linux *** 作系统都属于这个类型。单内核 *** 作系统的内核提供完整的 *** 作系统服务,比如图中所示的文件系统,进程间通信,进程调度器,内存管理,设备驱动程序等等。而应用程序则运行在用户态,应用程序想要使用 *** 作系统提供的服务,需要通过内核提供的接口,我们称之为系统调用。当应用程序进程执行系统调用时,会陷入到内核的代码去执行,进程此时运行于内核态,处理器处于特权级最高的Ring0状态执行。当应用程序需要的 *** 作系统服务调用完成,进程回到原本的应用程序代码中继续执行,也同时回到了用户态,在Ring3的特权级上运行。
而对于右边的微内核 *** 作系统, *** 作系统的内核部分被大大简化,只包括基本的IPC机制,虚拟内存映射和调度机制,这些仅仅是用于实现 *** 作系统服务的基本机制。真正的 *** 作系统服务,比如设备驱动,文件系统,应用程序间通信等,通过用户态服务程序的方式实现。当普通的应用程序需要 *** 作系统的相关服务时,通过发送IPC消息给这个服务程序,这些服务程序进行相关的 *** 作,必要时也会通过内核提供的系统调用陷入到内核态去执行基本的 *** 作,并把结果再通过IPC返回给请求服务的应用程序。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)