2012-07-17 80 views
5

我聽說在Linux(RT_PREEMPT內核)中執行系統調用永遠不會實時安全。所有的系統調用都是非實時安全的嗎?

這看起來過於嚴格 - 您的進程如何在沒有系統調用的情況下執行任何操作(除非必須完全通過DMA完成)?

這是真的,還是一些系統調用(如clock_gettime)實時安全嗎?

+0

*「realtime-safety」*的** ** **確切**定義*是什麼? – 2012-07-17 20:45:50

+0

就我而言,實時安全操作將始終在相當短的時間內完成或失敗。我們試圖運行一個1 kHz的控制環...顯然,我們需要避免FS和許多其他操作,但是我們是否也需要避免* all *系統調用來保證執行時間<1 ms? – crosstalk 2012-07-17 20:51:47

+0

「保證執行時間」小於1毫秒意味着什麼。你的生活是否依賴於這個承諾?我敢打賭,在配置良好的Linux RT_PREEMPT內核和系統上使用一個編碼良好的實時程序可以滿足最終期限;但你必須決定我的感覺是否足夠。 – 2012-07-17 21:01:50

回答

1

如果「實時安全」是指保證在有限的時間內執行,那麼Linux與大多數通用操作系統一樣,不是實時安全的。

各種real-time operating systems(RTOS)提供了這種保證。

0

您可以查看jack_interposer存儲庫中的文件functions。這些是而不是實時安全。這個問題比詢問哪個實時安全性更爲容易。根據經驗,應該避免什麼一個很好的規則是:

  • 任何阻塞同步功能
  • 任何內存分配功能
  • 任何I/O功能
  • 算法(內用戶空間),其具有一複雜度大於O(n),其中n是輸入緩衝區中元素的數量。
相關問題