2012-05-05 306 views
3

我這是造成我很多疑惑的三個問題:操作系統中

  1. 如果程序中一個線程調用fork(),並在新的進程 複製所有線程,或者是新的工藝單-threaded?

  2. 如果一個線程調用exec(),將在參數 到exec()指定的程序更換在內的所有線程的整個過程?

  3. 系統調用搶佔?例如,是否可以在系統調用中安排進程?

+0

你能澄清你問題3的含義嗎?單個執行上下文將始終顯示爲按順序執行,那麼您究竟在想什麼? –

+0

@亞歷克斯:是的,我意識到這一點,但我不確定OP想知道什麼。她問的是「安排一個過程」。我認爲一些澄清將有助於獲得一些有用的答案。 –

回答

4

對於exec,從man execve

比調用線程之外的所有線程的execve()過程中被破壞。

man fork

與單個線程創建子進程 - 這被稱爲fork()之一。

1

W.r.t. #3:是的,您可以調用直接或間接使另一個線程準備運行的系統調用。如果該線程的優先級高於當前的優先級,並且該系統設計爲正確安排時間,則可以這樣做。