連結器與載入器與執行檔格式
當100個行程使用相同的共用函式庫時,關於實體記憶體的使用方式,下列何者正確?
- A不會被改寫的程式碼分頁共用一份副本,會被寫入的資料分頁則每個行程各自持有
- B程式碼與資料都為每個行程持有100份副本
- C包含資料分頁在內全部共用一份,行程之間會看到彼此的值
查看答案與解析
正確答案:A. 不會被改寫的程式碼分頁共用一份副本,會被寫入的資料分頁則每個行程各自持有
作業系統會將共用函式庫對應到各行程的虛擬位址空間,使不會被改寫的程式碼與常數的分頁指向相同的實體分頁。至於變數等會被寫入的資料分頁,則在被寫入的時點建立副本(寫入時複製,copy-on-write)等,讓每個行程各自獨立。如此一來,即使有100個行程,函式庫程式碼所佔的記憶體也只需要一份。
- A. 正確。藉由虛擬記憶體對應到相同的實體分頁。
- B. 連程式碼都複製的話,共用函式庫的優點就沒了。
- C. 資料是依行程分開的。