linux以*和开发源码赢得了许多工程师的青睐,现在许多嵌入式产品使用的是linux系统,然而linux内核作为实时操作系统有非常,明显的几个缺点
1.任务调度的缺点
Linux最初的设计预想是设计一个通用的操作系统内核,尽量缩短系统的平均响应时间,在单位时间内位尽可能多的用户请求提供服务;在设计上并没有太考虑实时性的需要,而是在分时操作系统基础上发展而来,linux内核在任务调度上实现的是一种几乎公平的分配任务时间,在特殊场合下linux内核在任务调度上实现的是一种几乎公平的分配任务时间,在特殊场合下Linux内核很难满足系统在响应时间和优先级上的要求。
Linux内核作为实时操作系统的一个最大缺点就是:Linux在用户态支持可抢占调度策略,而在核心太却不支持抢占式调度策略,比如:linux在运行一个低优先级别的核心态任务,而此时又有一些优先级更高的实时任务要处理,但内核不支持抢占性,只有等到正在运行的低优先级的任务执行结束后,才能运行优先级别高的任务,这样就不能保证系统对于实时性任务的响应时间,这在实时操作系统中一般是不允许发生的。
Linux虽然给实时性进程提供可较高的优先级,但是并没有加入时间限制。例如完成的最后期限,应在多长时间内完成和执行周期等。同时,其他大量的非实时进程也可能对实时进程造成阻塞,无法确保实时进程的响应时间。
2.中断处理的缺点
Linux内核对于中断处理采用 Bottom Half Handling方法(详细请自己查谷歌),这种处理方法在处理中断过程中,屏蔽了系统其它中断,而且优先级别高的任务也不能抢占处理,所以linux中断句柄是不可调度的;但在实时系统中,有事期望能在一个可调度整体内处理这些中断句柄,从而能更有效地区分不同实时任务的密度,分配不同的优先级。因此,单纯采用bottom half hadling缩短时间片方法在对实时性恩能够严格要求的场合仍有些不适合。
3.内存管理的缺点
Linux系统采用虚拟内存管理机制,在虚拟内存中,系统会根据当前任务使用的内存情况,把一些任务或用户进程交换出内存,保持在磁盘文件系统页面上,在以后需要时,再将它们调入内存,这种方法提高了内存的使用效率,但调入过程需要花费一定的时间。这种采用时间换空间的方法,在实时应用场景下,往往造成任务的响应时间加长或有限时间内无法执行完毕。
4.时钟精度
Linux中硬件时钟中断的默认时间间隔是10MS,所有的软件时钟都是靠硬件来触发的。linux内核的任务调度也依靠这个时钟,时钟频率直接影响到系统响应速度和上下文切换的系统开销。最小时间片为10MS,决定了linux任务调度能提供最小10MS的调度粒度,对于许多实时系统来说,通常需要做微秒级的响应,这种调度精度很难满足实时系统对系统响应速度的要求。