我這是造成我很多疑惑的三個問題:操作系統中
如果程序中一個線程調用
fork()
,並在新的進程 複製所有線程,或者是新的工藝單-threaded?如果一個線程調用
exec()
,將在參數 到exec()
指定的程序更換在內的所有線程的整個過程?系統調用搶佔?例如,是否可以在系統調用中安排進程?
我這是造成我很多疑惑的三個問題:操作系統中
如果程序中一個線程調用fork()
,並在新的進程 複製所有線程,或者是新的工藝單-threaded?
如果一個線程調用exec()
,將在參數 到exec()
指定的程序更換在內的所有線程的整個過程?
系統調用搶佔?例如,是否可以在系統調用中安排進程?
對於exec
,從man execve
:
比調用線程之外的所有線程的
execve()
過程中被破壞。
從man fork
:
與單個線程創建子進程 - 這被稱爲
fork()
之一。
W.r.t. #3:是的,您可以調用直接或間接使另一個線程準備運行的系統調用。如果該線程的優先級高於當前的優先級,並且該系統設計爲正確安排時間,則可以這樣做。
你能澄清你問題3的含義嗎?單個執行上下文將始終顯示爲按順序執行,那麼您究竟在想什麼? –
@亞歷克斯:是的,我意識到這一點,但我不確定OP想知道什麼。她問的是「安排一個過程」。我認爲一些澄清將有助於獲得一些有用的答案。 –