2012-10-25 62 views
1

我在用sched.h進行Linux調度並碰到一些問題。Linux進程和線程調度

據我所知,Linux調度程序在調度時不會以不同的方式處理線程和進程。線程就像共享公共資源的進程一樣。好吧,假設我有Process-A,它被設置爲CPU核心0並設置了SCHED_FIFO屬性;這將運行,直到另一個更高優先級的任務開始。如果Process-A創建一個新線程,線程是否會繼承相同的屬性? (即用SCHED_FIFO屬性綁定到CPU 0,還是默認?)

謝謝!

回答

4

可實際上一個簡單的程序測試,但是從各種手冊頁:

sched_setaffinity

通過fork創建子(2)繼承了其父的CPU關聯掩碼。 親和力掩碼跨execve(2)保存。

pthread_create

新的線程繼承調用線程的能力的副本設置 (見 能力(7))和CPU關係掩碼(見了sched_setaffinity(2))。

sched_setscheduler

子進程繼承跨越 叉(2)調度策略和參數。 跨execve(2)保留調度策略和參數。