为什么Linux不能直接应用于嵌入式实时环境

为什么Linux不能直接应用于嵌入式实时环境

嵌入式实时操作系统要求具有小巧、速度快和可预测性等特点,必须保证实时任务在要求的时间内完成。现有的Linux是一个通用的操作系统,虽然它采用了许多技术来加快系统的运行和反应速度,但是它本质上不是一个嵌入式的实时操作系统,不能直接应用于嵌入式实时环境。具体而言,现有的linux有以下几点制约着它应用于嵌入式实时环境:

(1)    linux的核心态进程是不能被抢先的。即如果有Linux的核心态进程在运行时,其它进程不管其优先级多高都必须等待。由于linux的系统调用是运行在核心态的,因此不管优先级多低的进程进行系统调用时,其它任何实时进程都必须等待。

(2)    linux的进程调度方式不是完全抢先式的。不论进程的优先级多么低,linux总会在某个时候分给该进程一个时间片运行,即使同时有可以运行的高优先级进程,它也必须等待低优先级进程的时间片用完。但是在实时系统中,高优先级的进程决不能等待低优先级的进程。

(3)    linux 内核的进程经常关闭中断以尽快完成自己的任务。如果低优先级的进程关闭了中断,那么即使有高优先级实时进程的中断发生系统也无法响应。这种情况在实时系统中是不允许发生的。

(4)    linux 采取了虚拟内存的内存管理方式。即linux 利用交换空间让进程运行在一个比实际内存大的虚拟内存空间里。当进程访问的虚拟内存的内容在交换空间里时,linux 就要把在交换空间里的页面交换到实际内存中来。这是一个费时的操作,它使得操作花费的时间具有不可预测性,在实时系统中是不允许的。

(5)    为了更高效地使用硬件,linux 可能会做一些额外的操作。例如,在内存不足时,linux 不是只释放一个页面而是搜索整个页面链表以释放尽可能多的页面。这就延迟了所有进程的执行,包括实时进程。

(6)    linux 中,高优先级的进程不能抢占低优先级进程的资源。即如果高优先级的进程要使用低优先级进程正在使用的资源时,它必须等待低优先级的进程释放资源。

linux 之所以有以上的问题,是因为它最主要的设计原则是最大限度地利用各种资源,力求最公平地调度各个进程,以获得最大的整体性能。这也正是通用操作系统的设计原则。

投 票

觉得本文不错,投一票   

评 论


验证码: 看不清?换一张