問題詳情

28 為改善 fork()效能,許多 UNIX 版本提出一種虛擬記憶體 fork(virtual memory fork, vfork),它是 fork()系統呼叫的一種變形。下列有關 fork()以及 vfork()的敘述,何者錯誤?
(A)由於 UNIX 使用 fork()來複製程序,可能耗費大量系統資源,因此 UNIX 的程序又被稱為重量級程序 (Heavyweight Process)
(B)在 vfork()中使用了寫入時複製(Copy on Write)機制來減少無用的程序內容複製,並提高程序產生 (Process Creation)的效率
(C)通常 vfork()是應用在子程序(Child Process)產生後立即執行 exec()的場合,是一種高效率的程序產生 方法
(D) vfork()子程序產生之後的執行順序是子程序先執行,然後才是父程序(Parent Process)

參考答案

答案:B
難度:困難0.267
書單:沒有書單,新增

用户評論

【用戶】YABE

【年級】高一上

【評論內容】(B)在 vfork()中使用了寫入時複★(...

【用戶】william

【年級】大二下

【評論內容】函式特性補充fork(無參數)完全複製父行程的資源,子行程獨立於父行程, 但是二者之間的通訊需要通過專門的通訊機制如:pipe,popen&pclose、協同進程、fifo,System V IPC(消息隊列、信號量和共享內存)機制等。Linux中採取了copy-on-write技術減少無用複製。fork的父子行程運行順序是不定的,它取決於排程演算法。vfork(無參數)父子行程共享位址空間,也就是說子行程完全運行在父行程的位址空間上,子行程對虛擬位址空間任何數據的修改同樣為父行程所見。但是用 vfork創建子行程後,父行程會被block住直到子行程調用exec或exit。vfork主要是用在創建出來的子行程馬上又呼叫execve的情況下vfork保證子行程先運...