簡體   English   中英

使用Linux進行實時編程

[英]Real-time programming with Linux

我剛剛構建並設置了帶有RT補丁的Vanilla Linux內核。 一切正常,我現在可以正確啟動到新內核了。

讓我感到奇怪的是:我有一個用C編寫的模擬器程序,並且希望它在硬實時模式下執行,這是新內核所允許的。 整個模擬器可能不需要以實時優先級運行,但是其中的某些任務確實需要。

我怎么能做到這一點? 我認為僅僅運行程序是行不通的。

如果您詢問如何在實時上下文中運行某些線程,而其他線程則作為常規的分時線程,那么您所需sched_setscheduler就是使用sched_setscheduler正確設置其調度程序

分時線程希望為SCHED_OTHER 實時模擬器線程希望為SCHED_FIFOSCHED_RR

在Linux上,為了以實時優先級運行,您的用戶必須具有允許的資源限制( man 2 rlimit )。 特別是,您的rtprio rlimit必須設置為所需的最高優先級。 或者,您可以以root用戶身份運行該應用程序。 在具有PAM的linux系統中,這通常是通過在/etc/security/limits.conf添加適當的行來完成的

@realtime   -  rtprio     99

這會將rtprio限制授予實時組最高實時優先級99。 然后,您將一個實時組添加到/etc/groups並確保您的用戶在該組中。

(而且,由於這似乎是您第一次這樣做,因此,您可能還需要一個“死人的開關”高優先級實時線程,以確保您的模擬器不會失控並渲染系統無法使用...如果您正在模擬高CPU負載,則可能會獲得ACTUAL高CPU負載,並且如果不重新啟動就無法停止操作。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM