32、Linux 实时系统编程指南

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

Linux 实时系统编程指南

1. 调度算法概述

在系统调度中,有两种常见的调度算法:轮询调度(Round Robin,RR)和先进先出调度(FIFO)。RR 调度与 FIFO 调度类似,但任务会在运行一段固定时间后自动移到队列尾部。这两种调度方法都并非天生适用于实时系统。FIFO 调度的不可预测性源于任务未能正确让出资源,导致其他任务无法运行。若未让出资源的是实时任务,该过程则更具可预测性。RR 调度会在系统的所有进程间平均分配时间,随着任务增多,单个任务分配到的时间减少,降低了调度的可预测性。

调度还有一个重要维度,即系统做出调度决策所需的时间,常被称为调度延迟或上下文切换时间。理想情况下,无论系统上运行多少线程,调度器所需时间应保持恒定。2.6 内核中的所有调度器大致符合这一描述,在计算机科学领域被称为 O(1)。

2. Linux 实时系统的实现

为使 Linux 成为软实时系统,人们付出了大量努力。当前的相关项目是 CONFIG_PREEMPT_RT 补丁,可从 http://rt.wiki.kernel.org 获取。该项目最初致力于通过提高 Linux 内核的可抢占性来降低延迟。

当 Linux 内核首次移植到多处理器系统时,内核的竞态条件通过使用一个名为大内核锁(Big Kernel Lock,BKL)的单一锁来解决。这导致内核整体序列化,因为许多不相关的例程使用此锁来消除竞态条件。BKL 不仅缺乏粒度,还是一个自旋锁,即请求锁的代码会在循环中等待,等待下一个锁的进程不会让出资源,导致系统无法进行实时调度。

预emption(抢占)对实时系统至关重要。当低优先级任务独占高优先级任务所需的资源,或者锁占

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值