新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式Linux实时技术改进与实现

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

作者:时间:2009-04-23来源:网络收藏

1、简介

本文引用地址:http://www.eepw.com.cn/article/152524.htm

随着微处理器的发展,系统已经成为计算机应用领域的一个重要的组成部分。虽然为分时操作系统,但由于其功能强大、源代码开放以及可移植性强等优势,已成为日益流行的操作系统的解决方案,然而,在方面它还不能很好地满足系统方面的需要,其本身仅仅提供了一些实时处理的支持。为使满足实时应用的要求,常用的方法是通过对的内核进行裁减和修改,使其能够满足的要求。目前,我们根据实际需要对于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()将判断是否有进程需要抢占当前进程,如果是将立即发生调度,这就是增加的抢占点,它支持四种抢占模式:

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭