2012-01-17 63 views
4

假設一個進程正在運行並且它調用了一個系統調用。這是否意味着這個過程現在將被阻止。所有的系統調用是否阻塞一個進程並將其狀態從運行改爲阻止?或者這取決於當時的情況?正在進行系統調用

+0

你可以問這裏http://unix.stackexchange.com – 2012-01-17 14:29:40

+1

的問題是理論上的類型,而不是UNIX特別的。 SO是正確的地方。 – 2012-01-17 15:57:02

回答

3

不,這並不意味着進程被阻止。有些系統調用是阻塞的,有些則不是。但是,請注意,在內核處理系統調用期間,當進程繼續運行時,您自己的用戶代碼不會執行,但內核代碼正在代表進程執行。

1

某些操作系統甚至會出現上電情況,用戶應用程序會在某些情況下注冊某些由內核(回到用戶空間)調用的函數。 Unix信號機器是一個非常簡單的例子,但是一些操作系統有更復雜的上傳。

我認爲有些系統調用會觸發某些內核處理,這可能會觸發用戶空間中的某些上調。

我忘了細節