完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
二 实时内核
多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通信。内核提供的基本服务是任务切换。 之所以使用实时内核可以大大简化应用程序的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。内核本身也增加了应用程序的额外负荷,代码空间增加了ROM的用量,内核本身的数据结构增加了RAM的用量。但更为主要的是,每个任务要有自己的堆栈空间,这一块占起内存来是相当厉害的。内核本身对CPU的占用时间一般在2%-5%之间。 单片机一般不能运行实时内核,因为单片机的RAM很有限。通过提供必不可少的系统服务,诸如信号量管理、消息队列、延时等,实时内核使得CPU的利用更为有效。 需要指出的是,实时内核并不等于实时操作系统,实时内核只是实时操作系统的一部分。 内核是整个操作系统的基础,实时内核同样是实时操作系统的基础,目前很多实时内核采用微内核结构。实时内核通常是基于优先级调度的内核,所有时间要求苛刻的事件都得到了尽可能快捷、有效的处理。 如果应用项目对额外的需求可以承受,应该考虑使用实时内核。这些额外的需求为:内核的价格,额外的ROM/RAM开销,2-5%的CPU额外负荷。使用实时内核会增加价格成本,在一些应用中,价格就是一起,以至于对使用RTOS连想都不敢想。 为满足某些特殊需要的实时软件开发的要求,可能会需要自己开发实时内核,一般它要符合POSIX实时扩展标准接口(支持系统的开发性和可移植性要求)。 实时内核设计时要考虑轮询、协同、中断驱动以及前/后台工作等需求,提供对任务、中断、时间和多处理器等的全面管理,并要求用高级语言实现(可移植性考虑)。设计出的实时内核要求紧凑、高效、专用、可移植性好。 实时内核的多处理器支持应包括处理同构和异构系统的能力,其内核程序应具有自动补偿不同处理器之间体系结构的差别(如字节交换等)。这使得从一个处理器家族到另一个处理器家族的转换变得异常容易,且不需要重新设计。 三 微内核 微内核(microkernel)是一个小型的操作系统核心,为模块化扩展提供了基础。微内核通过在Mach操作系统中的使用而推广。理论上,微内核方法提供了高度的灵活性和模块化。当今许多操作系统都声称采用了微内核结构,例如Windows 2000。 目前关于微内核的概念还有一些含糊,关于微内核的许多问题,例如微内核应该提供什么功能以及实现什么结构,不同的操作系统设计者有不同的回答。 与微内核相对的是宏内核的概念。 宏内核中把本来在微内核之外实现的许多操作系统功能放到了内核之中实现(如进程管理,内存管理等)。 Linux就是这样的系统。 微内核将许多操作系统服务放入分离的服务器,如文件系统,设备驱动程序,而应用程序通过消息传递调用操作系统服务。微内核结构必然是多任务的,第一代微内核,在核心提供了较多的服务,因此被称为“胖微内核”,它的典型代表是Mach,它既是GNU HURD也是APPLE SERVER OS 的核心,可以说,蒸蒸日上。第二代为内核只提供最基本的操作系统服务,典型的操作系统是QNX,QNX在理论界很有名,被认为是一种先进的操作系统。 微内核通常采用分层结构,如图 3所示。 图 3 微内核操作系统 微内核通常只保留进程间通讯(IPC),任务调度,低级存储管理,中断处理等几项最基本的功能,它依据客户-服务器模型概念,把所有的其它的操作系统功能都变成一个都变成一个个用户态的服务器,而用户态进程则被当作客户。客户应用程序要用到操作系统时,其实就是通过微内核与服务器通讯,微内核仅仅成了一个传递消息的工具。微内核验证消息的有效性,在客户机和服务器之间传递它们并核准对硬件的存取。例如,如果应用程序想打开一个文件,则它给文件系统服务器发送消息,如图4所示;如果要创建一个任务,则它给任务服务器发送消息。每个服务器也可以给别的服务器发送消息,并可以调用微内核提供的其它功能。 图 4 应用程序与服务器之间的通讯 微内核是指内核功能少,而不一定是内核尺寸小,例如著名的微内核操作系统Mach的内核就有100-200K字节。 采用微内核的优点: 1.一致性接口:微内核提供了一致性接口,所有的服务都通过消息传递提供,用户态程序不需要区分是内核级服务还是用户级服务。 2.可移植性:与CPU有关的硬件方面的细节都在微内核中,这样,整个操作系统就很容易从一个CPU体系移植到另一个CPU体系。 3.可扩展性:如果要扩展功能,仅是要增加或修改相应的服务器,而不用构造一个新内核。 4.灵活性:与可扩展性相对应,不仅可以增加新功能,还可以删除现有的功能,以产生一个更小、更高效的实现。用户可以根据应用的实际需要,删除某些可选的功能,从而自己定制了一个更符合自己需要的操作系统。 5.可靠性:在微内核方式下,各个服务器都是独立的用户态进程,有自己的内存保护空间,以标准的IPC方式通讯,一个服务器出错,不会导致整个系统崩溃。另外,软件规模越大,越难以保证其可靠性,而微内核较小,可以被严格测试,而且它只使用了少量的API接口,便于掌握,而且与其它模块的交互较少,有利于产生高质量的代码。 6.分布式系统支持:服务器可以在不同的处理机上运行,适合多处理机系统或分布式处理系统。 当把微内核机制用于实时操作系统时,存在两种担心:一是用户态与内核态的切换频率,会增加上下文切换时间;另一是进程之间的消息传递开销要比传统操作系统的系统调用的开销要大。通常上下文切换时间与执行一项操作系统服务总的时间相比很小,尤其是在将上下文切换时间作了优化之后。分立的服务器进程可以使各项操作系统服务并行地进行,而且各个服务器进程还可以像用户进程一样按优先级处理,高优先级服务进程可以抢占低优先级服务进程。这些都带来极大的优越性。因此,总体来看,微内核开销比传统操作系统的开销反而要小。 大多数消息传输都在20字节的数量级,传输这样的消息的开销本来就不大,微内核提供multi-part消息传输机制,在传输长消息时,可以将消息从一个进程直接传到另一个进程,避免了为使消息块相邻而进行多余的拷贝工作。在传输长消息时,高优先级进程还可以抢占,不至于被长消息传输所延误。另外,直接传递消息而不是传递消息的指针,就不必使用信号灯来判断哪一个进程拥有消息,从而避免了信号灯的开销。最后,消息传递方法使得用户的地址空间和系统服务提供者的地址空间完全分开,使它们十分容易在不同的网络节点上运行。所有这些,都使得消息传递的开销不大。 |
|
相关推荐
1个回答
|
|
谢谢分享....
|
|
|
|
只有小组成员才能发言,加入小组>>
663 浏览 0 评论
1083 浏览 1 评论
2456 浏览 5 评论
2784 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2619 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
640浏览 9评论
637浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
767浏览 6评论
611浏览 5评论
652浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 17:33 , Processed in 0.845053 second(s), Total 50, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号