2015-11-29 57 views
0

我需要創建一個用戶模式的過程。這個過程必須在內核模式下被檢測到,以發送到Linux內核中的FIFO隊列(SCHED_FIFO)。在linux內核模式下,如何檢測進程?

我一直在調查,如果你使用函數void scheduler_tick(void),它位於core.c(我認爲scheduler_tick被系統調用每個時鐘的CPU時鐘),我可以捕獲進程。

我的問題是如果這是正確的,或者如果有更好的方法。

Scheduler_tick代碼:http://lxr.free-electrons.com/ident?i=scheduler_tick

工作是基於多級隊列,其中將推出一系列diferente過程(我們有:支付流程,取消過程,保留過程和事件處理)。這些流程對系統具有不同的優先級。

因此,當我創建一個流程,例如支付流程時,我需要檢測流程,因爲我需要知道哪種類型是您的優先級。

因此要評論使用函數void scheduler_tick來檢測進程的想法。

我不知道我是否說得好...

非常感謝。

+2

我不明白。這不是'正常'的進程加載器,或可能fork()? –

+0

爲什麼當你不知道*在用戶空間[syscalls(2)](http)中的[Advanced Linux Programming](http://www.makelinux.net/alp/)時, ://man7.org/linux/man-pages/man2/syscalls.2.html)?它看起來像一個巨大的錯誤。經驗法則是**儘可能避免內核修補** –

回答

2

創建用戶進程不是內核問題。 創建的所有用戶進程都是從init進程或其子進程派生的。

0

你不需要在內核中這樣做。實際上,你必須保持在內核之外。

您需要做的是在初始化腳本中使用chrt或在init程序或守護進程監視器中使用sched_setscheduler

相關問題