《嵌入式系统高级部分-嵌入式操作系统导论》由会员分享,可在线阅读,更多相关《嵌入式系统高级部分-嵌入式操作系统导论(110页珍藏版)》请在金锄头文库上搜索。
1、嵌入式系统原理与应用信息安全工程学院上海交通大学操作系统基础内核内核(kernel)是操作系统的内部核心程序,它向外部提供了对计算机系统资源进行请求和管理的调用接口和服务 内核可以将操作系统的代码分成两部分:内核所在的地址空间称为内核空间;而在内核以外,剩下的程序统称为外部管理程序,它们大部分是对外围设备的管理和界面操作,外部管理程序与用户进程所占据的地址空间称为外部空间。通常,一个程序会跨越两个空间。当执行到内核空间的一段代码时,称程序处于内核态当程序执行到外部空间代码时,称程序处于用户态。操作系统分类1按照操作系统的内核模式可以分为:微内核大内核混合式内核微内核模式微内核Mach 首先使用
2、微内核结构通过划分系统程序和用户程序,把所有不必要的部件移出内核,形成一个小内核微内核提供最少量的进程管理、存储管理,以及通信功能微内核特点接口一致(Uniform interface):所有进程请求使用统一的接口,进程不需要区分内核模式和用户模式服务,由于这些服务全部通过消息传递提供。微内核特点扩展性(Extensibility):由于新型硬件设备和新型软件技术不断发展,任何操作系统不可避免地需要修改,微内核结构允许加入新的服务,支持在同一功能区内提供多重服务。使用微内核结构,加入一个新特点仅仅需要修改或者加入被选择的服务,新的或者修改的服务影响限制在系统的一个子集,进一步地,修改不需要建立
3、一个新的内核。微内核特点移植性(Portability):在微内核结构中,所有与特定处理机的代码仅仅存在微内核中,因此,需要将这个系统移植到新的处理机需要作的变化可以尽可能地少。微内核特点可靠性(Reliability):软件规模越大,确保可靠性越难。尽管模块化设计帮助我们增强了可靠性,但是微内核结构带来了更多的收益。一个小型微内核可以严格地进行测试,它使用少量的应用程序接口有助于内核模式之外的操作系统服务代码提高质量。系统只需要掌握一个有限数量的(API),程序员之间的相互交互也有限,因而对于系统其它组件的影响最小。微内核特点分布系统支持(Distributed system support
4、):微内核适合于由分布操作系统控制的群集系统。当一个消息从客户发到服务器进程,该消息必须包含请求服务的标识符。当一个分布系统(如群集系统)被配置为所有的进程和服务有唯一的标识符,那么似乎在内核模式下存在单一的系统映象,一个进程能够在不知道目标服务驻留在哪台机器情况下发送消息。微内核特点面向对象操作系统(Object-oriented operating system):微内核结构非常适合面向对象操作系统的要求,一个面向对象的方法有助于一个微内核的设计和操作系统的模块化扩充。将微内核结构和面向对象操作系统原理结合起来的例子是组件的使用,组件是清楚定义了接口的对象,它们能够互连起来以预制建筑块的方
5、式形成软件,使用组件之间的接口实现组件之间的全部相互作用。大内核模式Windows内核Windows内核变化Windows号称内核版本7将走向小内核模式混合式内核模式混合式内核Linux内核属于混合式内核参与Linux系统开发的程序员大多数为世界各地的黑客们。比起结构的清晰,他们更加注重功能的强大和高效率的代码。他们将大量的精力花在优化代码上,而这样的全局性优化必然以损失结构精炼作为代价,导致Linux中的每个部件都不能被轻易拆出,否则必然破坏整体效率。 Linux内核虽然Linux是一个混合式内核操作系统,但它与传统的UNIX操作系统不同。在普通单一内核系统中,所有内核代码都是被静态编译和链
6、接的。而在Linux中,可以动态装入和卸载内核中的部分代码。Linux中将这样的代码段称做模块(module),并对模块给予了强有力的支持。在Linux中,可以在需要时自动装入和卸载模块。 Linux内核的结构LINUX操作系统的结构2.4 vs. 2.6内核的实时性比较Linux 内核Linux 内核主要由5 个模块构成,它们分别是:进程调度模块:控制进程对CPU 资源的使用 内存管理模块:确保所有进程能够安全地共享机器主内存区;虚拟内存管理 文件系统模块:支持对外部设备的驱动和存储 进程间通信模块:支持多种进程间的信息交换方式 网络接口模块:提供对多种网络通信标准的访问并支持许多网络硬件
7、内核模块之间的依赖关系 内核模块之间的依赖关系 所有的模块都与进程调度模块存在依赖关系。因为它们都需要依靠进程调度程序来挂起(暂停)或重新运行它们的进程。通常,一个模块会在等待硬件操作期间被挂起,而在操作完成后才可继续运行。内核模块之间的依赖关系进程调度子系统需要使用内存管理器来调整一特定进程所使用的物理内存空间。进程间通信子系统则需要依靠内存管理器来支持共享内存通信机制。虚拟文件系统也会使用网络接口来支持网络文件系统(NFS),同样也能使用内存管理子系统来提供内存虚拟盘(ramdisk)设备。而内存管理子系统也会使用文件系统来支持内存数据块的交换操作。操作系统分类2按照操作系统的架构可以分为
8、:整体 OS分层 OS客户机/服务器 OS虚拟机OS整体式操作系统整体式/单块式操作系统Monolithic OS操作系统是包含了不同模块的一整块代码集难于调试任何一处修改都可能影响其他模块Bug的修正可能带来其他Bug的出现任何过程可以调用其它任何过程,没有考虑过程相互之间的依赖性和互操作性整体式操作系统结构硬硬 件件系统服务系统服务用户态用户态核心态核心态应用程序应用程序应用程序应用程序整体式结构整体式结构分层操作系统分层操作系统Layered OS比Monolithic OS好,如OSI Layer操作系统划分为若干层,在低层上构建高层。底层(0层)为硬件;最高层( N层)为用户层考虑模
9、块化,层的选择是每层只使用低层次的功能和服务缺点有时操作系统很难按照OSI进行分层层次结构内核用户模式用户模式内核模式内核模式层次结构层次结构系统结构 - 简单结构MS-DOS-以最小的空间提供最多的功能不划分模块尽管MS-DOS有某种结构,其接口和功能层没有划分清楚 MS-DOSUNIXUNIX - 受硬件功能限制,早期UNIX只是有限的结构化。 UNIX包括2个分离的部分系统程序内核包括了在物理硬件之上,系统调用之下的一切提供文件系统, CPU调度,存储管理,和其他操作系统功能 ;每一层有大量的功能UNIX系统结构操作系统层 THE OS的层次化结构THE操作系统首先使用层次化设计。有如下
10、六层: OS/2层次化结构DeltaCORE的体系结构:层次模块结构应用程序应用程序任务管理任务管理硬硬 件件用户扩展处理用户扩展处理调度管理调度管理硬件抽象层硬件抽象层应用编程接口应用编程接口内存管理内存管理中断管理中断管理时钟时钟/ /定时器管理定时器管理I/OI/O管理管理出错处理出错处理同步、通信管理(消息队列,信号量,事件,同步、通信管理(消息队列,信号量,事件,异步信号异步信号) ))分分层层次次模模块块化化客户机/服务器操作系统客户机/服务器操作系统Client-Server OS最新的模型最小的有限的操作系统功能 (scheduler and synchronization p
11、rimitive)其他所有功能当做系统任务运行应用软件作为客户机通过系统调用要求服务器服务软件提供服务。客户机/服务器操作系统优点易于调试将任务分配多个微处理器上非常简单。可以动态装载或卸载各种模块。缺点由于内存保护,系统消耗较大必须保护系统进程当应用软件切换到服务器内存空间时需要消耗时间。客户/服务器结构硬硬 件件进程服务进程服务用户态用户态核心态核心态应用程序客户应用程序客户内存服务内存服务微内核微内核文件服务文件服务网络服务网络服务显示服务显示服务发送发送应答应答客户客户/服务器结构(微内核结构)服务器结构(微内核结构)QNX4.25的体系结构用户模式用户模式应用应用应用应用应用应用网络
12、管理器网络管理器图形管理器图形管理器设备管理器设备管理器文件系统管理器文件系统管理器网络驱动网络驱动图形驱动图形驱动设备驱动设备驱动文件系统驱动文件系统驱动硬硬件件内核模式内核模式 内核(微内核)内核(微内核)QNX4.25的体系结构:客户的体系结构:客户/服务器结构服务器结构Windows 客户机/服务器结构虚拟机系统例如:windowsNT下的MS-dos方式操作系统分类3操作系统按照调度方式区分可剥夺型内核不剥夺型内核不可剥夺型内核不可剥夺型内核(或非抢占式内核,Non-Preemptive Kernel)每个任务自我放弃CPU的所有权。各个任务彼此合作共享一个CPU。异步事件还是由中断
13、服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。不可剥夺型内核优点响应中断快。在任务级,允许使用不可重入函数。每个任务都可以调用非可重入性函数,而不必担心其它任务可能正在使用该函数,从而造成数据的破坏。因为每个任务要运行到完成时才释放CPU的控制权。当然该不可重入型函数本身不得有放弃CPU控制权的企图。几乎不需要使用信号量保护共享数据。运行着的任务占有CPU,而不必担心被别的任务抢占。但这也不是绝对的,在某种情况下,信号量还是用得着的。处理共享I
14、/O设备时仍需要使用互斥型信号量。例如,在打印机的使用上,仍需要满足互斥条件。 不可剥夺型内核缺点最大缺陷在于其响应时间。高优先级的任务已经进入就绪态,但还不能运行,要等,也许要等很长时间,直到当前运行着的任务释放CPU。与前后系统一样,不可剥夺型内核的任务级响应时间是不确定的,不知道什么时候最高优先级的任务才能拿到CPU的控制权,完全取决于应用程序什么时候释放CPU。 不可剥夺型内核允许每个任务运行,直到该任务自愿放弃CPU的控制权。中断可以打入运行着的任务。中断服务完成以后将CPU控制权还给被中断了的任务。任务级响应时间要大大好于前后系统,但仍是不可知的,商业软件几乎没有不可剥夺型内核。
15、不可剥夺型内核运行原理任务正在运行中断到来,中断原来任务执行中断服务子程序,使一个 高优先级任务进入就绪状态 由于是不可剥夺型内核,低优 先级任务未执行完毕,高优 先级任务不能立即执行中断返回继续执行原来任务任务执行完毕,控制权交给 高优先级、已就绪任务高优先级任务开始执行可剥夺型内核当系统响应时间很重要时,要使用可剥夺型内核(或抢占式内核,Preemptive Kernel)。 最高优先级的任务一旦就绪,总能得到CPU的控制权。 当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。 如果是中断服
16、务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。 可剥夺型内核最高优先级的任务什么时候可以执行,可以得到CPU的控制权是可知的。 任务级响应时间得以最优化。使用可剥夺型内核时,应用程序不应直接使用不可重入型函数。调用不可重入型函数时,要满足互斥条件,这一点可以用互斥型信号量来实现。如果调用不可重入型函数时,低优先级的任务CPU的使用权被高优先级任务剥夺,不可重入型函数中数据有可能被破坏。 可剥夺型内核总是让就绪态的高优先级的任务先运行,中断服务程序可以抢占CPU,到中断服务完成时,内核让此时优先级最高的任务运行(不一定是那个被中断了的任务)。
17、任务级系统响应时间得到了最优化,且是可知的。 可剥夺型内核运行原理低优先级任务正在运行中断到来,中断当前任务中断服务完成,退出中断 进入新的优先级更高的任务新任务执行新任务执行完毕, 控制权还给原来的任务继续执行原来的任务执行中断服务,把另一个任务 置为高优先级、就绪状态区别应用内核插入中断应用内核ISR内核ISR退出ISR中断任务响应中断延时时间重新安排延时时间任务抢占式内核非抢占式内核操作系统分类4顺序执行系统分时操作系统实时操作系统顺序执行系统顺序执行系统系统内只含有一个程序,独占CPU的运行时间,按语句顺序执行该程序,直至执行完毕,另一程序才能启动运行。如DOS操作系统。分时操作系统分
18、时操作系统软件的执行在时间上的要求,并不严格,时间上的错误,一般不会造成灾难性的后果。系统内同时可以有多个程序运行,把CPU的时间分按顺序分成若干片,每个时间片内执行不同的程序。如UNIX实时操作系统实时操作系统系统内有多个程序运行,每个程序有不同的优先级,只有最高优先级的任务才能占有CPU的控制权。主要任务是对事件进行实时的处理,虽然事件可能在无法预知的时刻到达,但是软件上必须在事件发生时能够在严格的时限内作出响应(系统响应时间),即使能够响应,但是超出了时限,系统时间响应的超时就意味着致命的失败。另外,实时操作系统的重要特点是具有系统的可确定性,即系统能对运行情况的最好和最坏等的情况能做出
19、精确的估计嵌入式操作系统发展历程无操作系统的嵌入算法阶段 以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统通用的嵌入式实时操作系统阶段基于Internet的嵌入式系统第一阶段无操作系统的嵌入算法阶段以单芯片为核心的可编程控制器形式的系统。具有与监测、伺服、指示设备相配合的功能。大部分应用于一些专业性极强的工业控制系统中一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。特点:系统结构和功能都相对单一处理效率较低存储容量较小几乎没有用户接口。使用简便、价格很低第二阶段以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。特点CPU种类繁多通用性比较差系统开销小
20、 效率高一般配备系统仿真器,操作系统具有一定的兼容性和扩展性应用软件较专业,用户界面不够友好系统主要用来控制系统负载以及监控应用程序运行第三阶段通用的以嵌入式操作系统为核心的嵌入式实时系统阶段特点嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核精小、效率高,并且具有高度的模块化和扩展性具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能具有大量的应用程序接口(API),开发应用程序简单嵌入式应用软件丰富。第四阶段基于Internet为标志的嵌入式系统正在迅速发展的阶段。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及
21、Internet技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与Internet的结合将代表着嵌入式技术的真正未来。 嵌入式操作系统的演变* *Percent of total software supplied by RTOS vendor in a typical embedded Percent of total software supplied by RTOS vendor in a typical embedded devicedevice10%*Kernel30%*KernelNetworkingFile System75%*KernelNetworkingFile Sy
22、stemMultiprocessingMemory ManagementNetworking UtilityWindows APIApplicationApplicationApplicationApplication90%*90%*KernelNetworkingFile SystemMultiprocessingFault ToleranceDistributed ObjectsAdvanced NetworkingAdvanced InterconnectJavaBrowser / GUI依赖于相关技术的发展嵌入式操作系统技术现状 适应不同的嵌入式硬件平台,具有可移植、可伸缩能力。采用的
23、主要技术:编程语言普遍采用高级语言实现,主要以C语言为主。体系结构采用分层和模块化结构或微内核结构。嵌入式操作系统技术现状分层和模块化结构,将操作系统分为:硬件无关层硬件抽象层硬件相关层每层再划分功能模块移植工作集中在硬件相关层,与其余两层无关功能的伸缩集中在模块上,从而确保了系统具有良好的可移植性和可伸缩性。嵌入式操作系统技术现状功能复杂,具有可剪裁、可配置的能力 采用的主要技术:可剪裁技术。操作系统以内核为中心,包括很多独立的功能组件如文件、网络等。除内核外其他组件的选择任意搭配,由应用决定。可配置技术。每个功能组件都可以根据应用的要求进行配置,比如最大任务数、内存地址、堆栈大小、系统任务
24、的优先级、缓冲区大小及文件数等。 嵌入式操作系统技术现状良好的实时性:时间确定性是嵌入式实时操作系统必备的特点,特别对于强实时嵌入式系统而言尤为重要。 采用的主要技术:采用实时调度算法。主要采用静态优先级的可抢占式调度、比率单调算法等。采用内存静态分配策略和零拷贝技术保证确定性。内存管理不采用虚存管理机制采用优先级继承和优先级天花板两种技术解决优先级反转(倒置)问题 嵌入式操作系统技术现状可靠性和高可用 采用的主要技术:利用存储管理单元(MMU)、用户态和核心态机制,实现操作系统与应用程序的隔离,以及应用程序和应用程序之间的隔离,以防止应用程序破坏操作系统的代码、数据。 嵌入式操作系统的发展趋
25、势体系结构向微内核方向发展可伸缩、可移植、可剪裁、可配置行业的标准:多种操作系统平台,应用决定操作系统结构紧凑、功能强大高可用(High Available)、高可靠(High Reliable )、支持多处理器和分布式计算可动态加载和升级软件与开发工具有机的结合起来行业标准行业性嵌入式软硬件平台嵌入式系统是以应用为中心的系统,不会象PC一样只有一种平台吸取PC的成功经验,形成不同行业的标准。统一的行业标准具有开放、设计技术共享、软硬件重用、构件兼容、维护方便和合作生产的特点,是增强行业性产品竞争能力的有效手段。嵌入式操作系统架构BIOS (Boot Loader) Hardware Abst
26、ractDriverFile SystemProcess schedulerMemory ManagementCommunication between ProcessesNetworkHardwareSystem Abstract (SDK)嵌入式操作系统实时操作系统内核 文件系统 虚拟内存管理 网络协议栈 I/O系统接口 多任务环境 ( Kernel)实时操作系统组成最简内核纳核 实时操作系统内核代码大约1K到100K用户可裁减掉程序员认为没有使用到的功能,直到只剩下最简内核(任务的管理与调度,称其为纳核,可以只有8k)如何得到最简内核是嵌入式系统开发中非常重要的一环! 什么样的OS才是实
27、时OS呢?实时操作系统IEEE实时UNIX分委会要求异步的事件响应切换时间和中断延迟时间确定优先级中断和调度抢占式调度内存锁定连续文件同步按实时性分类强实时系统,其系统响应时间在毫秒或微秒级(数控机床);一般实时系统,其系统响应时间在毫秒几秒的数量级上,其实时性的要求比强实时系统要差一些(电子菜谱的查询)。弱实时系统,其系统响应时间约为数十秒或更长(工程机械)。移植而来的嵌入式实时操作系统通用操作系统移植到嵌入式系统中,形成的嵌入式操作系统。嵌入式 Windows NT/XPSUN Java 操作系统朗讯科技公司Inferno嵌入式Linux 等实时操作系统实时操作系统WindRiver 公司
28、的VxWorksISI 的pSOSQNX 系统软件公司的QNXATI 的Nucleus中国科学院凯思集团的Hopen 嵌入式操作系统等等专用实时操作系统办公设备WinCE,Palm手机Nokia、 Motorala的EPOC等等硬实时操作系统客户可以设置任务的优先级任务根据优先级运行抢先式内核没有虚拟内存嵌入式操作系统许多嵌入式操作系统的内核是微内核结构许多嵌入式操作系统都不支持磁盘根本不支持文件系统结构上为了设备驱动而支持文件系统,但不支持文件系统的文件存储功能嵌入式操作系统特点许多嵌入式操作系统不采用存储管理技术,即不支持虚拟存储技术许多嵌入式操作系统不划分“系统空间”和“用户空间”操作系
29、统的“内核”与外围应用程序之间不再有物理的边界;系统中所谓“进程”实际上全都是内核线程静态连接、系统调用、进程调度/切换嵌入式操作系统特点对任何一个应用程序做细微的修改,都得重新生成整个系统,并且“下载”之;系统调用的界面太庞大;共享变量的访问,需要谨慎对待;把通用操作系统上的应用移植过来需考虑“可重入”的问题;嵌入式操作系统特点不分系统空间和用户空间 必须静态连接如DOS、CP/M的INT21不分系统空间和用户空间 不能用页面映射技术但只用于不同进程之间,而非不同空间之间即使采用了存储管理,基本上都不采用页面交换技术重启动技术(watch dog)你听说过哪些实时操作系统?ucOS特点uc/
30、os采用可剥夺型实时多任务内核uc/os适合小型控制系统,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2k不足没有网络和文件系统支持应用软件少WinCE优点:具有和Windows兼容的GUI开发工具友好缺点非实时,目前已经向硬实时发展$WinCE6WinCE6pSOS十分优秀的RTOS目前已被WindRiver收购高实时性(任务切换、中断响应)在国内的使用逐年减少 VRTX全球最早推出的RTOS实时性、高可靠较好开发工具功能弱目前已很少使用VxWorks目前全球使用最广泛的RTOS高实时性高可靠(火星探路者Pathfinder使用的就是该系统)微内核结构面向对象
31、方法开发工具功能强大缺点:$VxWorks以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的 F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。据称美国市场占有率第一名。 VxWorksVxWorks 是风河公司开发的一款商用硬实时操作系统主要思想:在嵌入式系统中最大限度地实现内核的时间可预测性,根据用户定义的任务优先级对任务实现调度。给用户最大的控制权VxWorks为追求系统的实时性而设计的,并不是以
32、通用OS为设计目标。去掉了一些OS模块,因为这些模块在某种程度上会影响系统的实时性 (如在内存管理中没有采用页面管理模式,采用的是平板式内存。VxWorks任务调度采用的是基于优先级的抢占式任务调度模式,优先级分256级(0-255)用户可以动态的改变优先级,但是这种做法不提倡用户可以锁定一个任务使它不被更高的任务或中断抢占允许使用固定优先级响应时间来检查任务调度的性能VxWorks资源共享和优先级继承机制采用最优化的上下文切换和中断返回机制.内核从不禁止非屏蔽中断 NMI (non-maskable interrupts)VxWorks 缺点缺少某些OS特性保证时限要求是设计者自己的任务(系
33、统的灵活性带来的弊端)不支持很多应用和APIs(只支持部分POSIX标准的函数集)尽管采用了平板式内存管理,但是由于内存的动态分配,仍然存在内存段,这样仍然存在时间上的不可预测性VxWorks 缺点应用领域主要局限在对实时性要求较严格的硬实时系统中带给用户最大的控制权的同时,用户对系统的实时性调度责任也更大Vxworks开源嵌入式Linux优点源码公开,可控,可裁减,可修改应用软件丰富支持CPU类型多缺点 实时性差(非抢占式调度)调度算法主要考虑效率和公平性 开发工具支持少 一体化内核结构,不易维护适用领域 低成本、实时性要求不高、应用软件复杂的系统LinuxucLinux为什么需要ucLin
34、ux(micro-conrol-linux)Linux需要硬件支持虚拟内存,即CPU具有MMU在简单CPU中,不支持MMU,如ARM7TDMIucLinux就是没有虚拟内存的LinuxucLinux支持和Linux同样的接口,已有很多软件移植到ucLinux;具有和Linux一样强大的网络功能和出 色的文件系统ucLinux源码公开注意事项在ucLinux中,所有进程共享一个地址空间没有隔离保护RTLinux在Linux内核与硬件层之间插入了一层最坏的情况下在Intel x86处理器上响应时间: 15 sRT-Linux实时操作系统组成商业RTOS开发工具交叉编译器,主要是C或C+编译器。RTOS本身,它的核心是Real Time Kernel,包括相关的函数库。软件调试工具包,没有这类工具,多任务的应用程序几乎是没有办法调试的。