cow技術簡單介紹


***COW技術簡介 ***

cow意思是寫時復制,在對頁表進程讀操作時,不會產生異常,對頁表進程寫操作時,會觸發page fault異常,通常這種機制的產生是通過對頁表設置read-only.在linux fork()函數中,依照父進程復制子進程,進行資源復制時,依照cow技術原則,子進程對父進程的資源讀操作時共享父進程資源,寫操作時,則復制相應的要寫的內存區域,這樣最直觀的好處是減少了內存消耗.有一個問題,一個父進程可以創建多個子進程,那么對於cow技術,也是相應的進程對寫的操作的內存區域進行相應的復制操作(我的猜測,實際需查明博客).
學習博客園華山大師兄的博文:

寫時復制技術的定義是:創建新進程不分配物理空間,只分配和父進程相同的虛擬內存空間.公用物理內存空間.不論是父進程還是子進程對物理內存空間進行改動時,會復制相應的內存區域.

在fork之后,exec之前,兩個進程使用的是相同的物理內存區,虛擬內存都映射到相同的物理內存區.若沒有exec會給子進程的堆棧段,數據段分配物理空間,代碼段則使用父進程的物理內存空間.若是因為exec()函數,會給子進程的代碼段分配物理內存.(exec函數的作用是加載新的程序到子進程,代替原來的程序,則相應的代碼段,數據段,堆棧段也要重新分配物理內存.)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM