[英]Real-time programming with Linux
我剛剛構建並設置了帶有RT補丁的Vanilla Linux內核。 一切正常,我現在可以正確啟動到新內核了。
讓我感到奇怪的是:我有一個用C編寫的模擬器程序,並且希望它在硬實時模式下執行,這是新內核所允許的。 整個模擬器可能不需要以實時優先級運行,但是其中的某些任務確實需要。
我怎么能做到這一點? 我認為僅僅運行程序是行不通的。
如果您詢問如何在實時上下文中運行某些線程,而其他線程則作為常規的分時線程,那么您所需sched_setscheduler
就是使用sched_setscheduler
正確設置其調度程序 。
分時線程希望為SCHED_OTHER
; 實時模擬器線程希望為SCHED_FIFO
或SCHED_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.