嵌入式Linux实时技术改进与实现 下载本文

内容发布更新时间 : 2024/5/2 11:55:32星期一 下面是文章的全部内容请认真阅读。

嵌入式 Linux 实时技术改进与实现

1、简介

随着微处理器技术的发展,嵌入式系统已经成为计算机应用领域的一个重要的 组成部分。Linux 虽然为分时操作系统,但由于其功能强大、源代码开放以及 可移植性强等优势,已成为日益流行的嵌入式实时操作系统的解决方案,然而, 在实时方面它还不能很好地满足实时系统方面的需要,其本身仅仅提供了一些 实时处理的支持。为使 Linux 满足实时应用的要求,常用的方法是通过对 Linux 的内核进行裁减和修改,使其能够满足实时性的要求。目前,我们根据实际需要 对于 Linux 采用以下方法进行改进。 2、实现低延迟

使用两种方法来实现低延迟:一种就是锁分解,即把大循环中保持的锁分解 为每一轮循环中都获得锁和释放锁,典型的代码结构示例如下: 锁分解前: spin_lock(x_lock); for (…) {some operations; …}

spin_unlock(x_lock); 锁分解后:

for (…) { spin_lock(x_lock); some operations; …

spin_unlock(x_lock);}

另一种是增加抢占点,即自愿被抢占。增加抢占点之后:

/* Do the write .. */ for (;;) {

size_t size = count; if (size chunk) size = chunk; ret = -EFAULT;

if (copy_from_user(tty-write_buf, buf, size)) break; lock_kernel();

ret = write(tty, file, tty-write_buf, size); unlock_kernel(); if (ret = 0) break; written += ret; buf += ret; count -= ret; if (!count) break;

ret = -ERESTARTSYS; if (signal_pending(current)) break;

cond_resched(); }

语句 cond_resched()将判断是否有进程需要抢占当前进程,如果是将立即发生 调度,这就是增加的抢占点,它支持四种抢占模式:tips:感谢大家的阅读,本

文由我司收集整编。仅供参阅!