資源描述:
《Windows NT File System Internals_7 中文翻譯》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、導(dǎo)言:理解一本原版精典是我們每一個剛進入IT行業(yè)人員的夢想,今天這里將見證一位初哥的心歷路程.需要中文原版的同志網(wǎng)上有.全部中文版可能馬上就要面市了.大家可以在網(wǎng)上各大書店搜搜.....下面是我7章以后的譯文....不好勿拍?...也希望我能堅持下去.???謝謝支持!Windows?NT?File?System?Internals第七章??NT緩存管理器II??本章主要介紹:1.NT緩存管理器構(gòu)造2.模塊間交互(文件系統(tǒng)和網(wǎng)絡(luò)重定向器)3.NT緩存管理器接口??上一章,我們介紹了NT緩存管理器怎樣給文件流分配全局緩存,還有預(yù)讀和延遲寫功能.這一章我
2、們要理解這樣的問題,NT緩存管理器自身并不提供那樣的功能,它必須和虛擬內(nèi)存管理器,I/O管理器,文件系統(tǒng)還有網(wǎng)絡(luò)重定向驅(qū)動一起偕同工作才能達到增加吞吐效率和提升系統(tǒng)性能的目的.??在這一章甚至還有下一章,我們會對NT緩存管理器當(dāng)前的接口有個詳細的說明.我指出個大概,接口中有些是NT緩存管理器為文件流緩存保留在內(nèi)部使用的數(shù)據(jù)結(jié)構(gòu).其中的有些數(shù)據(jù)結(jié)構(gòu)在我們以前的章節(jié)中也提到過.在本章你將會看到,NT緩存管理器怎樣使文件流緩存在內(nèi)存中的全部相關(guān)信息保持一致.??下面,我來描述一下,NT緩存管理器和文件系統(tǒng)驅(qū)動還有網(wǎng)絡(luò)重定向器之間的相互關(guān)系.其中包括他們?yōu)楂@取資源而相互競爭,以及在為文件流啟用前進行
3、緩存部件檢查的詳細過程.在我們提供的示例代碼基礎(chǔ)上,可以在你自己的現(xiàn)實開發(fā)環(huán)境下開發(fā)并擴展出更多具體的功能.??雖然NT緩存管理器給文件系統(tǒng)驅(qū)動輸出的例程非常簡單,當(dāng)前調(diào)用NT緩存管理器的模塊仍然會發(fā)送自己的回調(diào)函數(shù).我會在本章列出一些這樣的例程給大家.在第十一章我們會更深入的介紹文件系統(tǒng)驅(qū)動的回調(diào)輸出例程,Writing?a?File?System?Driver?III?詳細的說明和例子見附件.注消接口和MDL接口我們會在本章結(jié)尾論述.??NT緩存管理器結(jié)構(gòu)??NT緩存管理器為每個文件流維護高速緩存的運行狀態(tài),在檢查和NT緩存管理器相關(guān)的其它部件之前.這些信息可以被我們利用,用來描述NT緩
4、存管理器內(nèi)部給文件流緩存提供的狀態(tài)信息的數(shù)據(jù)結(jié)構(gòu).給一點小提示,當(dāng)前公開的在NT緩存管理器上使用的數(shù)據(jù)結(jié)構(gòu),有一部分會持續(xù)更新,在新一版的Windows?NT操作系統(tǒng)會包括這些更新的信息.????I/O管理器為每一個成功打的文件流創(chuàng)建一個文件對象結(jié)構(gòu).為每個被啟動的文件對象維護緩存相關(guān)狀態(tài)信息:??.一個專用的文件對象緩存映像結(jié)構(gòu)??.一個共享的文件對象緩存映像結(jié)構(gòu),表示全部打開文件中相同的文件流.??NT緩存管理器為每個剛打開的文件對象分配一個專用的緩存映像結(jié)構(gòu),這對每一個文件對象來說都是唯一的,因此多個專用緩存映像結(jié)構(gòu)可以在一個打開的文件流中同時存在.另一方面,在一個文件流被啟用并通過一
5、些文件對象的時候,NT緩存管理器僅分配一個共享緩存映像.共享映像被打開這個文件流的例程使用.通過文件對象結(jié)構(gòu)的SectionObjectPointer字段可以間接的存取這個映像.??來回憶下以前我們介紹過的,NT緩存管理器通過映像視圖為文件流提供緩存服務(wù).每個文件映像視圖通過NT緩存管理器在一個叫做虛擬地址控制塊(VACB)中描述.這個映像的粒度或者說每個文件流的映像視圖大小是固定的,它們通過NT緩存管理器設(shè)置,虛擬地址控制塊(VACB)也是同樣的.這個固定的值規(guī)定了NT緩存管理器許可每個窗口最大的文件流.管理器也提供一個全局的VACB結(jié)構(gòu)數(shù)組,分配VACB到指定文件流需要的地方.??共享緩
6、存映像結(jié)構(gòu)是文件流緩存信息中的主要部分,它由NT緩存管理器維護.??在同一個文件流中相關(guān)的所有VACB通過NT緩存管理器管理的共享緩存映像結(jié)構(gòu)進行存取,每個VACB塊中包括相關(guān)視圖的虛擬地址及文件流的開始偏移地址.它幫助NT緩存管理器確定用戶請求的范圍是否在己經(jīng)存在的視圖映像中.如果不在視圖映像里.NT緩存映像管理器創(chuàng)建一個新的視圖并分配一個VACB來表示它.包涵文件流的VACB塊列表我們使用一個指向共享緩存映像的VACB指針數(shù)組來存取.自從VACB結(jié)構(gòu)在一個全局的VACB池中被分配了一個固定大小后,有可能發(fā)生這種情況,當(dāng)一個文件流的視圖被創(chuàng)建的時候NT緩存管理器沒有足夠的VACB空間.那么
7、,NT緩存管理器就需要釋放一個以前的視圖映像,并把VACB從文件流VACB列表中移出,重新給這個新來的文件流分配VACB.甚至這個操作不是必須的,自從VACB被釋放后文件件關(guān)閉操作也會完成,一個空閑的VACB無論在什么時候都是有用的.??像圖7-1所示的那樣,一個文件流緩存的全部私有緩存映像結(jié)構(gòu)被鏈接到一起,這些通過共享緩存映像結(jié)構(gòu)中的一個字段指出.文件系統(tǒng)和網(wǎng)絡(luò)重定向器之間的互相關(guān)系.??文件系統(tǒng)驅(qū)動和網(wǎng)絡(luò)