如果仔細閱讀前一篇文章的話,就知道只要pte的write(bit 1)位置1,就廢掉了copy-on-write機制(解釋一下,因為不可能產生異常了嘛),為了不影響系統的執行,我找了ntdll的檔案頭(7c800000)做實驗:
!process 0 0..
process 811ae9e0 sessionid: 0 cid: 015c peb: 7ffde000 parentcid: 036c
dirbase: 0997f000 objecttable: e15114b0 handlecount: 126.
image: svchost.exe..
process ffa4fd88 sessionid: 0 cid: 0258 peb: 7ffd4000 parentcid: 0104
dirbase: 0712c000 objecttable: e104d8e0 handlecount: 28.
image: ezdriverinstaller.exe
kd> !vtop 0712c000 7c800000 (隨便找個程序,ezdriverinstaller.exe)
x86vtop: virt 7c800000, pagedir 712c000
x86vtop: pde 712c7c8 - 0b237867
x86vtop: pte b237000 - 0f7bd025
記憶體的COPY ON WRITE機制
剛了解到。趕快記下來。每個程式都有自己的資料段,段。補充 dll有自己的資料段,但沒有自己的堆疊。乙個dll,被很多程式呼叫,為什麼 段共享,資料段不共享?就是因為 記憶體的copy on write 機制 程式1呼叫這個dll,執行過程中,dll的資料段肯定會改變,那記憶體就會被copy乙份,原來...
CopyOnWrite容器理解
什麼是copyonwrite容器 copyonwrite容器即寫時複製的容器。通俗的理解是當我們往乙個容器新增元素的時候,不直接往當前容器新增,而是先將當前容器進行copy,複製出乙個新的容器,然後新的容器裡新增元素,新增完元素之後,再將原容器的引用指向新的容器。這樣做的好處是我們可以對copyon...
Copy On Write寫時複製
copy on write解決的問題 早期unix系統建立程序的方式存在缺陷 當發出fork 系統呼叫時,核心原樣複製父程序的整個位址空間並把複製的那乙份分配給子程序。這種行為是非常耗時的,因為它需要 為子程序的頁表分配頁幀 為子程序的頁分配頁幀 初始化子程序的頁表 把父程序的頁複製到子程序相應的頁...