2013-08-29 25 views
1

在帶分頁內存的系統中,使用Copy On Write技術時,進程使用fork()調用創建一個新進程。在write和fork()上覆制?

創建完成後,新進程會嘗試在內存中寫入內容。 CPU會產生哪個錯誤 - 頁面錯誤或其他什麼?

據我所知,使用寫入複製時,這意味着通用數據不會被複制,但是當我們使用fork()時,當一個新進程嘗試寫入某個頁面時,那些頁面停止共享,並用fork創建的進程獲取頁面的副本,以便可以寫入該頁面。

所以,我有點困惑,處理器會產生一個錯誤呢?

回答

1

第一次寫入時複製頁面被寫入時,處理器會生成頁面錯誤,但錯誤是由內核處理的(就像換出或填充的頁面上的錯誤一樣)。它不會傳遞給用戶空間。

+0

當進程試圖首次寫入寫時複製頁面時,總是生成頁面錯誤。 感謝您的回答;) – idjuradj