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

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


80286 CPU 引入了另一種模式,稱為:受保護(hù)的虛擬地址模式,或者簡(jiǎn)單的稱之為:保護(hù)模式 。該模式提供的內(nèi)存模型中使用的物理地址不再是簡(jiǎn)單的將線性地址和段基址相加 。為了保持與 8086 和 80186 的向后兼容, 80286 仍然使用段寄存器,但是在切換到保護(hù)模式后,它們將不再包含物理段的地址 。替代的是,它們提供了一個(gè)選擇器( selector ),該選擇器由一個(gè)描述符表的索引構(gòu)成 。描述符表中的每一項(xiàng)都定義了一個(gè) 24 位的物理基址,允許訪問(wèn) 16MB RAM ,在當(dāng)時(shí)這是一個(gè)很不可思議的數(shù)量 。不過(guò), 80286 仍然是 16 位 CPU ,因此線性地址空間仍然被限制在 64KB。
1985 年的 80386 CPU 突破了這一限制 。該芯片最終砍斷了 16 位尋址的鎖鏈,將線性地址空間推到了 4GB ,并在引入 32 位線性地址的同時(shí)保留了基本的選擇器 / 描述符架構(gòu) 。幸運(yùn)的是, 80286 的描述符結(jié)構(gòu)中還有一些剩余的位可以拿來(lái)使用 。從 16 位遷移到 32 位地址后, CPU 的數(shù)據(jù)寄存器的大小也相應(yīng)的增加了兩倍,并同時(shí)增加了一個(gè)新的強(qiáng)大的尋址模型 。真正的 32 位的數(shù)據(jù)和地址為程序員帶了實(shí)際的便利 。事實(shí)上,在微軟的 Windows 平臺(tái)真正完全支持 32 位模型是在好幾年之后 。Windows NT 的第一個(gè)版本在 1993 年 7 月 26 日發(fā)布,實(shí)現(xiàn)了真正意義上的 Win32 API。但是 Windows 3.x 程序員仍然要處理由獨(dú)立的代碼和數(shù)據(jù)段構(gòu)成的 64KB 內(nèi)存片, Windows NT 提供了平坦的 4GB 地址空間,在那兒可以使用簡(jiǎn)單的 32 位指針來(lái)尋址所有的代碼和數(shù)據(jù),而不需要分段 。在內(nèi)部,當(dāng)然,分段仍然在起作用,就像我在前面提及的那樣 。不過(guò)管理段的所有責(zé)任都被移給了操作系統(tǒng) 。
80386 的另一個(gè)新特性是在硬件上支持分頁(yè),確切的來(lái)說(shuō)是:請(qǐng)求式分頁(yè)的虛擬內(nèi)存 。這種技術(shù)允許一個(gè)不同于 RAM 的存儲(chǔ)介質(zhì) ---- 硬盤來(lái)為內(nèi)存提供支持,例如,在允許分頁(yè)時(shí), CPU 通過(guò)將最近最少訪問(wèn)的內(nèi)存數(shù)據(jù)置換到備份存儲(chǔ)器中,從而為新的數(shù)據(jù)騰出空間,這樣就能訪問(wèn)比可用物理內(nèi)存更大的內(nèi)存空間 。理論上來(lái)說(shuō),可以使用此種方式訪問(wèn) 4GB 的連續(xù)線性地址空間,提供的備份介質(zhì)必須足夠的大 --- 即 使只安裝了非常少的物理內(nèi)存 。當(dāng)然,分頁(yè)并不是訪問(wèn)內(nèi)存的最快方式,最好還是能提供盡可能多的物理內(nèi)存 。但是,這是處理大量數(shù)據(jù)的最好辦法,即使這些數(shù)據(jù) 超過(guò)了可用物理內(nèi)存 。例如,圖形和數(shù)據(jù)庫(kù)程序都需要一大塊工作內(nèi)存,如果沒(méi)有分頁(yè)機(jī)制的話,其中的某些程序就無(wú)法在低檔的 PC 系統(tǒng)中運(yùn)行 。
【1 《Undocumented Windows 2000 Secrets》翻譯 --- 第四章】80386 分頁(yè)的模式是將內(nèi)存劃分為 4KB 或 4MB 大小的頁(yè) 。操作系統(tǒng)的設(shè)計(jì)者可以在二者之間自由的選擇,也可混合使用這兩個(gè)大小的頁(yè)面 。稍后,我會(huì)介紹 Windows 2000 采用的混合大小方案:由操作系統(tǒng)使用 4MB 的頁(yè)面,而 4KB 頁(yè)面由剩余的代碼和數(shù)據(jù)使用 。這些頁(yè)面由分層結(jié)構(gòu)的頁(yè)表樹(shù)管理,該頁(yè)表樹(shù)記錄當(dāng)前位于物理內(nèi)存中的頁(yè),同時(shí)還記錄了每個(gè)頁(yè)是否實(shí)際的位于物理內(nèi)存中 。如果指定頁(yè)已被置換到了硬盤上,而某些模塊觸及了位于這些頁(yè)中的地址, CPU 就會(huì)產(chǎn)生一個(gè)缺頁(yè)中斷(這與外圍硬件產(chǎn)生的中斷類似) 。接下來(lái),位于操作系統(tǒng)內(nèi)核中的缺頁(yè)中斷處理例程會(huì)試圖將該頁(yè)再次調(diào)入物理內(nèi)存,這可能需要將另一塊內(nèi)存中的數(shù)據(jù)寫入硬盤以騰出空間 。通常,系統(tǒng)采用最近最少( LRU )算法來(lái)確定哪個(gè)頁(yè)可以被置換出去 ?,F(xiàn)在可以很清楚地看到為什么有時(shí)將這個(gè)過(guò)程稱為 ---- 請(qǐng)求式分頁(yè)( demand paging ):即,由軟件提出請(qǐng)求,然后根據(jù)操作系統(tǒng)和應(yīng)用程序使用的內(nèi)存的統(tǒng)計(jì)數(shù)據(jù),將物理內(nèi)存中的數(shù)據(jù)移動(dòng)到后備存儲(chǔ)設(shè)備中 。

推薦閱讀