b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

rtos的书_rtos有哪些_openrtos(5)

电脑杂谈  发布时间:2017-04-08 11:14:14  来源:网络整理

内存分配方式

内存分配方式可分为静态分配和动态分配。静态分配是在程序运行前一次性分配给相应内存,并且在程序运行期间中不允许再申请或在内存中移动;动态分配则允许在程序运行整个过程中进行内存分配。静态分配使系统失去了灵活性,但对于实时性要求比较高的系统是必需的,通常情况下这些系统的内存有限,用户的全局数据都会精心规划,只有内核本身会使用一些动态内存;而动态分配赋予了系统设计者更多自主性,可以灵活地调整系统的功能。

VxWorks对内存的使用采用的是Flat Mode,可被静态或动态链接。VxWorks为用户提供了两种内存区域Region和Partition。Region是变长的内存区,用户可以从创建的Region中分配Segment,其特点是容易产生碎片,但灵活并且不浪费;Partition是定长的内存区,用户可以从刨建的Partition中分配Buffer,其特点是不会产生碎片,效率高但是易浪费。VxWorks采用最先算法分配内存。

μC/OS-II把连续的大块内存按分区来管理,每个分区中都包含整数个大小相同的内存块,但不同分区之间内存的太小可以不同。用户动态分配内存时,只须选择一个适当的分区,按块来分配内存,释放时将该块放回到以前所属的分区,这样就消除了因多次动态分配和释放内存所引起的碎片问题。

μClinux是针对没有MMU的处理器设计的,不能使用处理器的虚拟内存管理技术,只能采用实存储器管理策略。系统使用分页内存分配方式,在启动时对实际存储器进行分页。系统对内存的访问是直接的,操作系统对内存空间没有保护,多个进程可共享一个运行空间,所以,即使是一个无特权进程调用一个无效指针也会触发一个地址错误,并有可能引起程序崩溃甚至系统崩溃。

eCos对内存分配既不分段也不分页,而是采用一种基于内存池的动态内存分配机制。rtos的书通过两种内存池来实现两种内存管理方法:一种是变长的内存池;另一种是定长的内存池,类于VxWorb的管理方案。表3为4种操作系统内存管理的比较。

中断管理是实时系统中一个很重要的部分,系统经常通过中断与外部事件交互。主要考虑是否支持中断嵌套、中断处理机制、中断延时等。

VxWorks的中断管理

VxWorks操作系统中断管理采用中断处理与普通任务分别在不同栈中处理的中断处理机制,使得中断只会引发一些关键寄存器的存储,而不会导致任务的上下文切换,从而极大地缩短了中断延时。同时,VxWorks的中断处理程序一般在最短时间内通告中断的发生,而将其他的非实时处理尽量放入被引发的中断服务任务中来完成,这也缩短了中断处理的时间,可有效减少中断延时。所有中断处理程序使用相同的中断堆栈。为了能处理最坏情况下的中断嵌套,必须分配足够大的中断堆栈空间。

μC/OS-II的中断管理

μC/OS-II中断处理比较简单。一个中断向量上只能挂一个中断服务子程序ISR,而且用户代码必须都在ISR中完成。ISR需要做的事情越多,中断延时也就越长。是否支持中断嵌套取决于具体实现,如在ARM处理器上当选择中断嵌套时需要切换不同的处理器模式,实现起来也比较麻烦。

μClinux的中断管理

μClinux操作系统将中断处理分为两部分:顶半处理和底半处理。在顶半处理中,必须关中断运行,且仅进行必要的、非常少、速度快的处理,其他处理交给底半处理;底半处理执行那些复杂、耗时的处理,而且允许被中断。通常在硬件中断返回的时候会执行底半部的软中断,若软中断太多则会交给专门的内核处理任务处理,此时中断返回,避免由于中断运行时间过长影响其它其他进程。因此在顶半部中断是不会嵌套的。所有的中断服务下半部将顺序执行。所有的中断处理程序共用系统堆栈。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-40180-5.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...