Windows核心編程-筆記

1.每個進程都有自己專有的地址空間,當進程中的各線程運行時,他們只能訪問屬於該進程的內存,線程看不到且無法訪問其他進程的內存。地址空間只是一個內存地址區間,需要把物理存儲器分配或映射到相應的地址空間,才能夠正常讀寫數據。

2.進程地址空間的劃分及使用

空指針賦值區   00000000-0000FFFF        禁止訪問,幫助程序員捕獲空指針的賦值。

用戶模式分區   00010000-7FFEFFFF        進程大部分數據保存之處,所有exe和dll都載入這一區域,每個進程都可能將dll載入到                                                                        分區的不同地址,系統同時會把該進程可以訪問的所有內存映射文件映射到這一分區。

64KB禁入分區  7FFF0000-7FFFFFFF

內核模式分區    80000000-FFFFFFFF        操作系統代碼的駐地。如線程調度,網絡支持,設備驅動等待。禁止讀寫。所有進程共                                                                       有。

 

3.地址空間的區域

分配區域的操作成爲預訂。分配區域起始地址爲分配粒度通常爲64k的整數倍。分配大小爲系統頁面大小的整數倍通常爲4KB的整數倍。

 

4.給區域調撥committing物理存儲器

物理存儲器始終都以頁面爲單位來調撥。不必給整個區域調撥,可以個任意的頁面調撥。即請求頁式交換算法

 

5.虛擬內存:每個進程都擁有的獨佔的地址空間4G。

頁面交換文件:系統執行頁面調度算法時,將內存的數據塊備份到頁面交換文件,在對這塊內存進行修改利用。

交換區:物理內存大小+頁面交換文件大小.

 

6.內存映射文件

硬盤文件---分配地址空間---調撥物理內存

 

7.DLL注入:將DLL注入到進程的地址空間中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章