日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

1 《Undocumented Windows 2000 Secrets》翻譯 --- 第四章

第四章 探索 Windows 2000 的內(nèi)存管理機制
翻譯: Kendiv( fcczj@263.ne t)
更新: Sunday, February 13, 2005


聲明:轉(zhuǎn)載請注明出處,并保證文章的完整性,本人保留譯文的所有權(quán)利 。

內(nèi)存管理對于操作系統(tǒng)來說是非常重要的 。本章將全面的縱覽 Windows 2000 的內(nèi)存管理機制以及 4GB 線性地址空間的結(jié)構(gòu) 。針對此部分內(nèi)容,將解釋 Intel i386 CPU 家族的虛擬內(nèi)存尋址及其分頁能力,重點將在于 Windows 2000 的內(nèi)核是如何使用它們的 。為了幫助我們對內(nèi)存的探索,本章提供了一對程序:一個內(nèi)核模式的驅(qū)動程序,該驅(qū)動用來收集系統(tǒng)相關(guān)的信息,另一個是用戶模式的應(yīng)用程序,該程序?qū)⑼ㄟ^設(shè)備 I/O 控制來查詢來自驅(qū)動程序的數(shù)據(jù),并在控制臺窗口中進行顯示 。在剩余的章節(jié)中將重復(fù)使用“ Spy Driver ”模塊來完成其他幾個非常有趣的任務(wù)(這些任務(wù)都需要在內(nèi)核模式下執(zhí)行代碼) 。請堅持閱讀完本章的第一部分,因為它將直接面對 CPU 硬件 。不過,我仍然希望你不要跳過它,因為虛擬內(nèi)存管理是一個非常令人興奮的話題,理解它是如何工作的,將幫助你洞察復(fù)雜操作系統(tǒng)(如 Windows 2000 )采用的機制 。
Intel i386 內(nèi)存管理機制
Windows 2000 內(nèi)核大量使用 Intel i386 CPU 系列提供的保護模式下的虛擬內(nèi)存管理機制 。為了更好的理解 Windows 2000 如何管理它的主內(nèi)存,最低限度的熟悉 i386 CPU 的架構(gòu)某些特點就顯得尤為重要 。Windows 2000 是針對 Pentium 以上 CPU 設(shè)計的 。不過,這些新的處理器采用的內(nèi)存管理模型仍源自針對 80386 CPU 的設(shè)計,不過當(dāng)然會加入了一些重要的增強 。因此,微軟通常標(biāo)注 Windows NT 和 Windows 2000 的版本為 Intel 處理器“ i386 ”或者“ x86 ” 。不要對這些感到困惑,不管你在本書的什么地方遇到 86 或 386 ,請記住,這只是表示特定的 CPU 架構(gòu),而不是特定的處理器版本 。
基本的內(nèi)存布局
Windows 2000 為應(yīng)用程序和系統(tǒng)代碼提供了非常簡單的內(nèi)存布局 。由 32 位的 Intel CPU 提供的 4GB 虛擬內(nèi)存空間被分割為相等的兩部分 。低于 0x80000000 的內(nèi)存地址由用戶模式下的模塊使用,這包括 Win32 子系統(tǒng),剩余的 2GB 保留給了系統(tǒng)內(nèi)核 。Windows 2000 Advanced Server 還支持通常稱為 4GT RAM Tuning 的另一種內(nèi)存模型,該模型隨 Windows NT 4.0 Server 的企業(yè)版引入 。該模型可提供 3GB 的用戶地址空間,另 1GB 保留給內(nèi)核,通過在 boot.ini 中添加 /3GB 選項來啟用該模型 。
Windows 2000 Advanced Server 和 DataCenter 支持稱為:物理地址擴展( Physical Address Extension, PAE )的內(nèi)存選項,通過在 boot.ini 中加入 /PAE 就可允許這種內(nèi)存方式 。該選項采用了某些 Intel CPU 的特性(如, Pentium Pro 處理器)以允許大于 4GB 的物理內(nèi)存映射到 32 位的地址空間上 。在本章中,我將忽略這種特殊的設(shè)置 。你可閱讀微軟的基本知識文章 Q171793 (微軟 2000c )、 Intel 的 Pentium 手冊( Intel 1999a,1999b,1999c )以及 Windows 2000 DDK 文檔(微軟 2000f )來獲取更多此方面的信息 。
內(nèi)存分段和請求式分頁
在深入 i386 架構(gòu)的技術(shù)細節(jié)之前,想讓我們回到 1978 年,那一年 Intel 發(fā)布了 PC 處理器之母: 8086。我想將討論限制到這個有重大意義的里程碑上 。如果你打算知道更多,閱讀 Robert L. 的 80486 程序員參考( Hummel 1992 )將是一個很棒的開始 ?,F(xiàn)在看來這有些過時了,因為它沒有涵蓋 Pentium 處理器家族的新特性;不過,該參考手冊中仍保留了大量 i386 架構(gòu)的基本信息 。盡管 8086 能夠訪問 1MB RAM 的地址空間,但應(yīng)用程序還是無法“看到”整個的物理地址空間,這是因為 CPU 寄存器的地址僅有 16 位 。這就意味著應(yīng)用程序可訪問的連續(xù)線性地址空間僅有 64KB ,但是通過 16 位段寄存器的幫助,這個 64KB 大小的內(nèi)存窗口就可以在整個物理空間中上下移動, 64KB 邏輯空間中的線性地址作為偏移量和基地址(由 16 位的段寄存器給處)相加,從而構(gòu)成有效的 20 位地址 。這種古老的內(nèi)存模型仍然被最新的 Pentium CPU 支持,它被稱為:實地址模式,通常叫做:實模式 。

推薦閱讀