首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在我的进程中进行实时调度(但不影响其他进程)吗?

问我可以在我的进程中进行实时调度(但不影响其他进程)吗?
EN

Stack Overflow用户
提问于 2011-10-07 17:27:29
回答 1查看 854关注 0票数 1

根据我的问题,我想在Linux应用程序中对我的线程使用SCHED_RR和pthread_setschedparam。然而,这个我目前无法解决的has effects even on kernel modules。

我已经找到了http://www.icir.org/gregor/tools/pthread-scheduling.html,它说我可以用PTHREAD_SCOPE_PROCESS属性创建我的线程,但我还没有找到关于这方面的更多信息。

这是否适用于(Angstrom) Linux,内核版本2.6.32?(如何)这会影响我的进程与其他进程竞争的方式吗?这是让我的进程与实时调度竞争,而其他进程不受影响的方式吗?

(因为我使用的是boost线程,所以我不能简单地尝试...)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-07 18:12:35

使用PTHREAD_SCOPE_PROCESS创建的线程将共享相同的内核线程( http://lists.freebsd.org/pipermail/freebsd-threads/2006-August/003674.html )

但是,SCHED_RR必须在根特权进程下运行。

轮询;如果调用进程的有效用户id为0,则争用范围为系统(PTHREAD_SCOPE_SYSTEM)的线程属于实时(RT)调度类。如果这些线程没有被更高优先级的线程抢占,并且如果它们不让步或阻塞,它们将在系统确定的一段时间内执行。对于争用范围为process (PTHREAD_SCOPE_PROCESS)的线程或其调用进程的有效用户id不为0的线程,SCHED_RR基于TS调度类。

然而,基于你的相关问题,我认为你面临着一个更深层次的问题。你有没有试过把你的内核设置成更“抢先”的?抢占应该允许内核强制调度您的进程退出运行,从而允许某些内核部分更具响应性。这应该不会影响IRQ,也许是什么东西禁用了你的IRQ?

我在想的另一件事是,可能你没有足够快地获取你的SPI数据,并且你的数据在内核中的buffor变满了,因此数据丢失。也试着增加这些缓冲区。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7685354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档