论文部分内容阅读
摘要:本文简单介绍了实时操作系统的概念,并对标准Linux操作系统作了分析,介绍了以Linux为基础的实时操作系统的特点,及对标准Linux操作系统修改的常用方法。
关键词:Linux;嵌入式;实时操作系统
引言
Linux操作系统是一个功能强大、稳定和通用的操作系统,它持多用户和多进程,支持TCP/IP等网络协议,具有图形用户界面和强大的开发工具。由于Linux代码公开,遵循GPL条款,因此Linux越来越广泛地应用于嵌入实时环境中。
操作系统的某些方面与实时应用密切相关,例如中断机制和细粒度定时器直接关系到对外部事件的响应速度;内核本身是否被抢占关系到实时任务是否可及时占有系统资源;实时调度策略决定了实时操作系统可应用的范围和处理器利用率。
实时操作系统所遵循的设计原则是:采用各利,算法和策略,始终保证系统行为的可预测性。可预测性是指在系统运行的任何时刻,在任何情况下实时操作系统的资源调配策略都能为多个实时任务合理分配资源,使每个实时任务的实时性要求都能得到满足。
Linux与嵌入式实时操作系统
实时操作系统是指一个能够在指定时间内完成特定功能或者对外部的异步事件做出响应的操作系统。
嵌入式实时操作系统要求快速、可预测等特点,必须保证实时任务在要求时间内完成。现有的Linux是一个通用的操作系统,尽管它采用了许多技术来加快系统的运行和反应速度,但是它本质上不是一个嵌入式实时操作系统,不能直接应用于嵌入式实时环境。Linux是通用的操作系统,通用操作系统的设计原则是最大限度地利用各种资源,尽量公平地调度各个进程,以获得最佳的整体性能,因此将Linux应用于嵌入式实时环境有以下几点制约因素:
1.Linux的核心态进程是不能被抢先的。
2.Linux的进程调度方式不是完全抢先式的。
3.Linux内核的进程经常关闭中断以尽快完成自己的任务。
4.Linux采取了“虚拟内存”的内存管理方式。
5.在Linux中,高优先级的进程不能抢占低优先级进程的资源。
Linux内核实时化方法
独立核方法
Linux实时系统的独立核方法是指设计一种完全独立的实时核心,但其API与Linux核心相兼容。这种方法的理论基础是必须在其设计之初就要充分考虑系统的实时性要求。这种方法的局限性是由于设计了一个完全独立的实时核心而没有使用原有的Linux核心,导致了Linux系统的一些优势难以继承。另外,由于这种方法并没有通过修改Linux核心代码来开发实时核心,而是在Linux系统之上重新设计了一个核心,这样的开发并不要求源代码开放,因此Linux一些基于开放源代码的优势也会受到影响。
双核方法
这种方法在同—硬件平台上采用了两个相互配合,共同工作的系统核心,一个核心提供精确的实时多任务管理,另一个核心提供复杂的非实时通用功能。这种方法是通过在Linux操作系统的最底层增加一层实时核心层来实现,实时核心层负责硬件管理并提供实时任务管理。
这种方法的关键所在是运行在常规Linux核心上的所有非实时任务必须是支持可抢占式调度,这样才能做到对实时核心提供精确实时保证而不受到任何影响。由于实时核心非常小,并不会增加整个系统的负载,所有这些对开发实时性要求严格的实时软件都提供了有力保障。这种方法的缺点是南于实时任务的开发是直接而向提供精确实时服务的小实时核心的,而并非功能强大的常规Linux核心实时任务是运行在系统核心层的,这就意味着这些实时任务可以运行在没有内存保护的级别之上,因此一个实时任务的错误可能会导致整个系统的瘫痪。
修改核方法
这种方法是基于已有Linux系统对实时软件开发的支持,进行源代码级修改而使Linux变成一个真正的实时操作系统。任何基于Linux核心源代码的修改都要遵循GPL协议,对所有软件人员开放源代码。
资源核方法
这种方法是为解决传统实时操作系统中固定优先级抢占式调度策略的局限性而产生的。同定优先级抢占式调度算法没有任务间的临时保护,因此可预见的任务响应时间依赖于对所有更高优先级任务执行时间的预测。在很多实时应用中更希望实时系统可以根据应用程序获得资源,动态地调整任务属性,以求得到最优的效果。资源核方法是一种以资源为中心来指导实时核心提供精确的、有保证的、可抢占的获取系统资源的方法。这种方法的优点是系统具有很好的健壮性、可精确预见的实时性,而且允许应用程序根据实际情况动态调整自身属性。
嵌入式实时操作系统
Linux操作系统在进入内核空间时不能发生进程切换,如果单一对关键资源加锁,然后强行进行调度,可以实现实时化,但是关键资源数量巨大,加锁管理的协调难度也比较多。另外,以前的操作系统将功能过于复杂化,而一些嵌入式操作系统又使功能过于专一,不利于系统的扩张。所以对于操作系统比较理性的评估是,操作系统只需要完成以下功能:进程切换、关键资源管理、中断管理和消息传递。对于操作系统内核而言,只存在进程和线程,而进程直接的服务和要求,都是以消息的形式通过内核来传递。南于内核只负责消息传递、资源审批和进程切换,因此内核改变了以前一次要把工作负责到底的方式。
进程申请内核服务通过系统调用的方式,系统调用的主要传递对象是服务消息,内核在收到服务消息后根据类型作以下几种处理。
1.关键资源的初始化、申请和释放消息:微内核把消息转交给资源管理器,让资源管理器对消息操作的合法性作出相应的操作。
2.进程服务消息:微内核将消息转交给相应的进程。
3.进程调度消息:微内核根据消息的内容来进行进程的调度操作。
当有中断发生的时候,微内核进人中断管理器作相应的处理。
消息格式为:
Street message
(
Long mtype;//消息类型
Void*data//传递数据的指针
)
在操作系统中设计一个中断管理器,主要任务:中断线程的生成、管理和注销。
每个进程的进程控制块中在初始化时都有一个指针指向资源管理器,每个进程在进入内核态的时候都通过系统堆栈找到自己的进程控制块,然后取得资源管理器的入口,每次在需要进行系统关键资源的操作时都通过资源管理器来协调。资源管理器在对每个特定资源操作的时候不是把操作一次做完,而是把操作细化,每做完一个动作后就观察有没有发生资源竞争所引起的调度,如果有就把控制权交给微内核。当一个进程通过资源管理器对一个资源操作发生冲突的时候,资源管理器就会做出调解,使占有资源的进程得到比较高的优先级,并且通知这个占有资源的进程,如果没有未完成的操作就完成并释放资源,如果没有开始操作那就释放资源并通知内核发生调度。
结论
Linux是一个性能卓越,技术上处于前沿的操作系统,但作为一个通用的操作系统在实时性方面有其不足,这就使在一些实时性要求较高环境中,就要对Linux做进一步改进。
实时操作系统模型的建立是在对Linux操作系统软件结构的一个改进,也就是操作系统发生本质的变化,但是内核的外壳没有发生变化,也就是说代码的对外接口还是沿用Linux操作系统的接口标准。但是Linux的实时化设计是一个任重而道远的任务,为了国家安全和信息独立化,必须开发出一个全新的操作系统。
关键词:Linux;嵌入式;实时操作系统
引言
Linux操作系统是一个功能强大、稳定和通用的操作系统,它持多用户和多进程,支持TCP/IP等网络协议,具有图形用户界面和强大的开发工具。由于Linux代码公开,遵循GPL条款,因此Linux越来越广泛地应用于嵌入实时环境中。
操作系统的某些方面与实时应用密切相关,例如中断机制和细粒度定时器直接关系到对外部事件的响应速度;内核本身是否被抢占关系到实时任务是否可及时占有系统资源;实时调度策略决定了实时操作系统可应用的范围和处理器利用率。
实时操作系统所遵循的设计原则是:采用各利,算法和策略,始终保证系统行为的可预测性。可预测性是指在系统运行的任何时刻,在任何情况下实时操作系统的资源调配策略都能为多个实时任务合理分配资源,使每个实时任务的实时性要求都能得到满足。
Linux与嵌入式实时操作系统
实时操作系统是指一个能够在指定时间内完成特定功能或者对外部的异步事件做出响应的操作系统。
嵌入式实时操作系统要求快速、可预测等特点,必须保证实时任务在要求时间内完成。现有的Linux是一个通用的操作系统,尽管它采用了许多技术来加快系统的运行和反应速度,但是它本质上不是一个嵌入式实时操作系统,不能直接应用于嵌入式实时环境。Linux是通用的操作系统,通用操作系统的设计原则是最大限度地利用各种资源,尽量公平地调度各个进程,以获得最佳的整体性能,因此将Linux应用于嵌入式实时环境有以下几点制约因素:
1.Linux的核心态进程是不能被抢先的。
2.Linux的进程调度方式不是完全抢先式的。
3.Linux内核的进程经常关闭中断以尽快完成自己的任务。
4.Linux采取了“虚拟内存”的内存管理方式。
5.在Linux中,高优先级的进程不能抢占低优先级进程的资源。
Linux内核实时化方法
独立核方法
Linux实时系统的独立核方法是指设计一种完全独立的实时核心,但其API与Linux核心相兼容。这种方法的理论基础是必须在其设计之初就要充分考虑系统的实时性要求。这种方法的局限性是由于设计了一个完全独立的实时核心而没有使用原有的Linux核心,导致了Linux系统的一些优势难以继承。另外,由于这种方法并没有通过修改Linux核心代码来开发实时核心,而是在Linux系统之上重新设计了一个核心,这样的开发并不要求源代码开放,因此Linux一些基于开放源代码的优势也会受到影响。
双核方法
这种方法在同—硬件平台上采用了两个相互配合,共同工作的系统核心,一个核心提供精确的实时多任务管理,另一个核心提供复杂的非实时通用功能。这种方法是通过在Linux操作系统的最底层增加一层实时核心层来实现,实时核心层负责硬件管理并提供实时任务管理。
这种方法的关键所在是运行在常规Linux核心上的所有非实时任务必须是支持可抢占式调度,这样才能做到对实时核心提供精确实时保证而不受到任何影响。由于实时核心非常小,并不会增加整个系统的负载,所有这些对开发实时性要求严格的实时软件都提供了有力保障。这种方法的缺点是南于实时任务的开发是直接而向提供精确实时服务的小实时核心的,而并非功能强大的常规Linux核心实时任务是运行在系统核心层的,这就意味着这些实时任务可以运行在没有内存保护的级别之上,因此一个实时任务的错误可能会导致整个系统的瘫痪。
修改核方法
这种方法是基于已有Linux系统对实时软件开发的支持,进行源代码级修改而使Linux变成一个真正的实时操作系统。任何基于Linux核心源代码的修改都要遵循GPL协议,对所有软件人员开放源代码。
资源核方法
这种方法是为解决传统实时操作系统中固定优先级抢占式调度策略的局限性而产生的。同定优先级抢占式调度算法没有任务间的临时保护,因此可预见的任务响应时间依赖于对所有更高优先级任务执行时间的预测。在很多实时应用中更希望实时系统可以根据应用程序获得资源,动态地调整任务属性,以求得到最优的效果。资源核方法是一种以资源为中心来指导实时核心提供精确的、有保证的、可抢占的获取系统资源的方法。这种方法的优点是系统具有很好的健壮性、可精确预见的实时性,而且允许应用程序根据实际情况动态调整自身属性。
嵌入式实时操作系统
Linux操作系统在进入内核空间时不能发生进程切换,如果单一对关键资源加锁,然后强行进行调度,可以实现实时化,但是关键资源数量巨大,加锁管理的协调难度也比较多。另外,以前的操作系统将功能过于复杂化,而一些嵌入式操作系统又使功能过于专一,不利于系统的扩张。所以对于操作系统比较理性的评估是,操作系统只需要完成以下功能:进程切换、关键资源管理、中断管理和消息传递。对于操作系统内核而言,只存在进程和线程,而进程直接的服务和要求,都是以消息的形式通过内核来传递。南于内核只负责消息传递、资源审批和进程切换,因此内核改变了以前一次要把工作负责到底的方式。
进程申请内核服务通过系统调用的方式,系统调用的主要传递对象是服务消息,内核在收到服务消息后根据类型作以下几种处理。
1.关键资源的初始化、申请和释放消息:微内核把消息转交给资源管理器,让资源管理器对消息操作的合法性作出相应的操作。
2.进程服务消息:微内核将消息转交给相应的进程。
3.进程调度消息:微内核根据消息的内容来进行进程的调度操作。
当有中断发生的时候,微内核进人中断管理器作相应的处理。
消息格式为:
Street message
(
Long mtype;//消息类型
Void*data//传递数据的指针
)
在操作系统中设计一个中断管理器,主要任务:中断线程的生成、管理和注销。
每个进程的进程控制块中在初始化时都有一个指针指向资源管理器,每个进程在进入内核态的时候都通过系统堆栈找到自己的进程控制块,然后取得资源管理器的入口,每次在需要进行系统关键资源的操作时都通过资源管理器来协调。资源管理器在对每个特定资源操作的时候不是把操作一次做完,而是把操作细化,每做完一个动作后就观察有没有发生资源竞争所引起的调度,如果有就把控制权交给微内核。当一个进程通过资源管理器对一个资源操作发生冲突的时候,资源管理器就会做出调解,使占有资源的进程得到比较高的优先级,并且通知这个占有资源的进程,如果没有未完成的操作就完成并释放资源,如果没有开始操作那就释放资源并通知内核发生调度。
结论
Linux是一个性能卓越,技术上处于前沿的操作系统,但作为一个通用的操作系统在实时性方面有其不足,这就使在一些实时性要求较高环境中,就要对Linux做进一步改进。
实时操作系统模型的建立是在对Linux操作系统软件结构的一个改进,也就是操作系统发生本质的变化,但是内核的外壳没有发生变化,也就是说代码的对外接口还是沿用Linux操作系统的接口标准。但是Linux的实时化设计是一个任重而道远的任务,为了国家安全和信息独立化,必须开发出一个全新的操作系统。