6、大内核锁可抢占
大内核锁(BKL---Big Kernel Lock)实质上也是spinlock,只是它一般用于保护整个内核,该锁的保持时间比较长,因此它对整个系统的实时性影响是非常大的,大内核锁使用了semaphore来实现,如果内核配置为前面三种抢占模式,struct semaphore是架构相关的,如对于x86,结构定义如下:
但对于第四种抢占模式,其结构为:
注意新的spinlock定义也包含字段struct rt_mutex lock,因此可抢占大内核锁和新的spinlock共用了低层的处理代码。使用semaphore之后,大内核锁就可抢占了。
7、结论
Linux实时性能的逐步完善,必将大大促进 嵌入式 Linux在工业控制、后PC时代信息电器等领域的广泛应用,应用的需要也会进一步促进大量新型实时算法的出现。通过对Linux的改动,就可以开发出一种可靠的且廉价的硬实时操作系统,具有很好的发展和应用前景。本文作者的创新点:通过改进延迟,优先级继承并增加抢占机制,改善了系统的实时性,为嵌入式系统开发打下了基础。