計算機(jī)類專業(yè)課操作系統(tǒng)xuos_第1頁
計算機(jī)類專業(yè)課操作系統(tǒng)xuos_第2頁
計算機(jī)類專業(yè)課操作系統(tǒng)xuos_第3頁
計算機(jī)類專業(yè)課操作系統(tǒng)xuos_第4頁
計算機(jī)類專業(yè)課操作系統(tǒng)xuos_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第六章 Windows操作系統(tǒng)6.1 Windows的歷史年份MS-DOS基于MS-DOS的Windows基于NT的Windows注 解1981MS-DOS 1.0最初是為IBM PC發(fā)布1983MS-DOS 2.0支持PC/XT1984MS-DOS 3.0支持PC/AT1990Windows 3.0多任務(wù)系統(tǒng)。保護(hù)模式。突破了內(nèi)存640KB的限制,可在任何方式下使用擴(kuò)展內(nèi)存。 1991MS-DOS 5.0增加內(nèi)存管理1992Windows 3.1增加了多媒體功能。 1993Windows NT 3.132位數(shù)據(jù)處理;搶占式多任務(wù);內(nèi)嵌網(wǎng)絡(luò)支持;支持多線程;支持多CPU計算機(jī);更好的安全性、穩(wěn)

2、定性、容錯性;面向高性能微機(jī)、工作站、多處理器服務(wù)器、用于管理整個網(wǎng)絡(luò)。 年份MS-DOS基于MS-DOS的Windows基于NT的Windows注 解1995MS-DOS 7.0Windows 95擺脫了Windows對DOS的依賴,將DOS作為Windows 的局部模塊納入系統(tǒng)。即插即用。搶占式多任務(wù)、多線程,全32位OS;同時支持32位、16位應(yīng)用程序、設(shè)備驅(qū)動程序向下兼容Windows.及DOS請求分頁式虛擬存儲系統(tǒng) 1996Windows NT 4.01998Windows 982000MS-DOS 8.0Windows Me(Win Me 不如 Win 98)Windows 200

3、0四種不同用戶的版本:Windows 2000 ProfessionalWindows 2000 ServerWindows 2000 Advanced ServerWindows 2000 Datacenter Server 真32位搶占式虛擬內(nèi)存操作系統(tǒng);支持多處理器;支持分布式計算、可充當(dāng)服務(wù)器,也可充當(dāng)工作站向下兼容支持16位程序;內(nèi)嵌對即插即用設(shè)備的支持;集成網(wǎng)絡(luò)功能,支持多種網(wǎng)絡(luò)環(huán)境年份MS-DOS基于MS-DOS的Windows基于NT的Windows注 解2001Windows XP兩個版本:Windows XP Home EditionWindows XP Professio

4、nal 替代了Windows 98該版添加了網(wǎng)絡(luò)認(rèn)證、雙處理器支持等性能。 2003Windows Server 2003四個版本: Web Edition Standard Edition Enterprise Edition Datacenter Edition 2006Windows Vista將“安全閥”嵌入系統(tǒng)內(nèi)核用以限制惡意軟件對電腦的傷害。半透明視窗、3D切換界面、動態(tài)預(yù)覽、動態(tài)搜索欄、虛擬文件夾技術(shù)、全新的IE架構(gòu)等。 2009Windows 76.2 系統(tǒng)結(jié)構(gòu)Windows 和Windows Vista 體系結(jié)構(gòu)(內(nèi)核:控制處理器的執(zhí)行。與執(zhí)行體和用戶級的其它部分不同,內(nèi)核本

5、身的代碼并不在線程內(nèi)執(zhí)行,因此內(nèi)核是操作系統(tǒng)中唯一不可搶占或分頁的一部分。)Windows 內(nèi)核態(tài)組織結(jié)構(gòu)APC-Asynchronous Procedure Calls, 異步過程調(diào)用;LPC-Local Procedure CallDPC-Deferred Procedure Call,推遲了的過程調(diào)用;硬件抽象層Windows的目標(biāo)之一是使得操作系統(tǒng)在不同的硬件平臺之間具有可移植性。理想情況下如果需要在一種新型計算機(jī)系統(tǒng)中運行該操作系統(tǒng),僅僅需要在首次運行時使用新機(jī)器編譯器重新編譯操作系統(tǒng)即可。但實際情況并沒有那么簡單。雖然操作系統(tǒng)各層有大量部件具有很好的可移植性,但有些層就必須處理設(shè)備

6、寄存器、中斷、DMA以及機(jī)器與機(jī)器間顯著不同的其他硬件特性。HAL的工作就是對這些硬件進(jìn)行抽象,隱藏處理器版本、支持芯片集和其他配置變更的具體細(xì)節(jié),這些抽象展現(xiàn)為NTOS和驅(qū)動可用的獨立于機(jī)器的服務(wù)。所有與機(jī)器相關(guān)的代碼都集中在一個地方,移植的目標(biāo)就很容易確定:即實現(xiàn)所有的HAL服務(wù)。例如:一些機(jī)器有內(nèi)存映射I/O,而有的機(jī)器有I/O端口。驅(qū)動程序是如何編寫的呢?是不是使用內(nèi)存映射I/O?無需強(qiáng)制做出選擇,只需要判斷哪種方式使驅(qū)動程序可獨立于機(jī)器運行即可。硬件抽象層為驅(qū)動程序編寫者分別提供了三種讀、寫設(shè)備寄存器的程序:uc=READ_PORT_UCHAR(port); WRITE_PORT_U

7、CHAR(port, uc);us=READ_PORT_USHORT(port); WRITE_PORT_USHORT(port,us);ul=READ_PORT_ULONG(port); WRITE_PORT_ULONG(port,ul);這些程序各自在指定的端口讀、寫無符號8、16、32位整數(shù),由硬件抽象層決定這是否需要內(nèi)存映射I/O。這樣驅(qū)動程序可以在設(shè)備寄存器實現(xiàn)方式有差異的機(jī)器間使用而不需要修改。2. 內(nèi)核層在硬件抽象層之上是NTOS,包括兩層:內(nèi)核層和執(zhí)行體層。內(nèi)核層提供了一套管理CPU的抽象。最核心的抽象是線程,但內(nèi)核層也實現(xiàn)了異常處理、陷阱以及各種中斷。支持線程的數(shù)據(jù)結(jié)構(gòu)的創(chuàng)建

8、和終止是在執(zhí)行體實現(xiàn)的。內(nèi)核層負(fù)責(zé)調(diào)度和同步線程。內(nèi)核線程調(diào)度程序負(fù)責(zé)決定哪些線程執(zhí)行在系統(tǒng)的每一CPU上。線程會一直執(zhí)行,直到產(chǎn)生了一個定時中斷,或是當(dāng)線程需要等待一些情況,比如等待一個I/O讀寫完成或一個鎖定被釋放或者有更高優(yōu)先級的線程等待運行而需要CPU,這時正在執(zhí)行的線程會切換到另一線程。當(dāng)一個線程向另一個線程轉(zhuǎn)換時,調(diào)度程序會在CPU上運行,并確保寄存器及其他硬件狀態(tài)已保存。然后調(diào)度程序會選擇另一個線程在CPU上運行,并且恢復(fù)該線程之前所保存的最后一個的運行狀態(tài)。3. 執(zhí)行體執(zhí)行體是用C語言編寫的,在結(jié)構(gòu)上最為獨立(內(nèi)存管理是一個明顯的例外),并且經(jīng)少量的修改已移植到新的處理器上(M

9、IPS、x86、PowerPC 、Alpha、IA64和x64)。執(zhí)行體包括許多不同的組件,所有的組件都通過內(nèi)核層提供的抽象控制器來運行。每個組件分為內(nèi)部和外部的數(shù)據(jù)結(jié)構(gòu)和接口。內(nèi)部方法是隱藏的,只有組件自己可以調(diào)用。外部方法可由執(zhí)行體的所有其他組件調(diào)用。外部接口的一個子集由一個ntoskrnl.exe提供,而且設(shè)備驅(qū)動可以鏈接到它們就好像執(zhí)行體是一個庫。微軟稱許多執(zhí)行體組件為“管理器”,因為每一組件管理操作系統(tǒng)的一部分。 I/O管理器:提供了應(yīng)用程序訪問I/O設(shè)備的一個框架,還負(fù)責(zé)為進(jìn)一步的處理分發(fā)合適的設(shè)備驅(qū)動程序。I/O管理器實現(xiàn)了所有的Windows I/O API,并實施了安全性、設(shè)

10、備命名和文件系統(tǒng)(使用對象管理器)。高速緩存管理器:通過使最近訪問過的磁盤數(shù)據(jù)駐留在內(nèi)存中以供快速訪問,以及在更新后的數(shù)據(jù)發(fā)送到磁盤之前,通過在內(nèi)存中保持一段很短的時間以延遲磁盤寫操作,來提高基于文件的I/O性能。對象管理器:創(chuàng)建、管理和刪除Windows執(zhí)行體和用于表示諸如進(jìn)程、線程和同步對象等資源的抽象數(shù)據(jù)類型。為對象的保持、命名和安全性設(shè)置實施統(tǒng)一的規(guī)則。對象管理器還創(chuàng)建對象句柄,對象句柄是由訪問控制信息和指向?qū)ο蟮闹羔樈M成的。即插即用管理器:決定并加載為支持一個特定的設(shè)備所需的驅(qū)動。電源管理器:調(diào)整各種設(shè)備間的電源管理,并且可以把處理器置為休眠狀態(tài)以達(dá)到節(jié)電的目的,甚至可以將內(nèi)存中的內(nèi)

11、容寫入磁盤,然后切斷整個系統(tǒng)的電源。安全訪問監(jiān)控程序:強(qiáng)制執(zhí)行訪問確認(rèn)和審核產(chǎn)生的規(guī)則。Windows面向?qū)ο竽P驮试S統(tǒng)一一致的安全視圖,直到組成執(zhí)行體的基本實體。因此,windows為所有受保護(hù)對象的訪問確認(rèn)和審核檢查使用相同的例程,這些受保護(hù)對象包括文件、進(jìn)程、地址空間和I/O設(shè)備。虛擬內(nèi)存管理器:管理虛擬地址、物理地址和磁盤上的頁面文件。控制內(nèi)存管理硬件和相應(yīng)的數(shù)據(jù)結(jié)構(gòu),把進(jìn)程地址空間中的虛地址映射到計算機(jī)內(nèi)存中的物理頁。 進(jìn)程/線程管理器:創(chuàng)建、管理和刪除對象,跟蹤進(jìn)程和線程對象。配置管理器:負(fù)責(zé)執(zhí)行和管理系統(tǒng)注冊表,系統(tǒng)注冊表是保存系統(tǒng)和每個用戶參數(shù)設(shè)置的數(shù)據(jù)倉庫。本地過程調(diào)用(Lo

12、cal Procedure Call, LPC)機(jī)制:為本地進(jìn)程實現(xiàn)服務(wù)和子系統(tǒng)間的通信而實現(xiàn)的一套高效的跨進(jìn)程的過程調(diào)用機(jī)制。類似于分布處理中遠(yuǎn)程過程調(diào)用(Remote Procedure Call, RPC)的方式。4. 用戶態(tài)進(jìn)程Windows支持4種基本的用戶進(jìn)程類型:特殊系統(tǒng)進(jìn)程:需進(jìn)行管理系統(tǒng)的用戶態(tài)服務(wù),如會話管理程序、認(rèn)證子系統(tǒng)、服務(wù)管理程序和登錄進(jìn)程等。服務(wù)進(jìn)程:打印機(jī)后臺管理程序、事件記錄器、與設(shè)備驅(qū)動協(xié)作的用戶態(tài)構(gòu)件、不同的網(wǎng)絡(luò)服務(wù)程序以及許多這樣的程序。微軟和外部的軟件開發(fā)者都要使用它們來擴(kuò)展系統(tǒng)的功能,因為這些服務(wù)是在Windows系統(tǒng)中后臺運行用戶態(tài)活動的唯一方法。

13、環(huán)境子系統(tǒng):提供不同的操作系統(tǒng)的個性化設(shè)置(環(huán)境)。支持的子系統(tǒng)有Win32/WinFx和POSIX。每個環(huán)境子系統(tǒng)包括一個在所有子系統(tǒng)應(yīng)用程序中都會共享的子系統(tǒng)進(jìn)程和把用戶應(yīng)用程序調(diào)用轉(zhuǎn)換成本地過程調(diào)用和/或原生Windows調(diào)用的動態(tài)鏈接庫。用戶應(yīng)用程序:可執(zhí)行程序和動態(tài)鏈接庫向用戶提供使用系統(tǒng)的功能。EXE和DLL一般是針對特定的環(huán)境子系統(tǒng),盡管這其中有一些作為操作系統(tǒng)組成部分的程序使用了原生系統(tǒng)的接口(NTAPI)。同樣也支持Windows3.1或MS-DOS寫的16位程序。6.3 Windows NT中的進(jìn)程和線程Windows NT中的進(jìn)程進(jìn)程被定義為“一個程序的動態(tài)調(diào)用”,它由以

14、下四部分組成: 一個可執(zhí)的程序,它定義了初始代碼和數(shù)據(jù)。 一個私用地址空間,即進(jìn)程的虛擬地址空間。 系統(tǒng)資源,例如信號量、通信端口、文件等。它們是在程序執(zhí)行時由操作系統(tǒng)分配給它的。 至少有一個執(zhí)行線程。Windows NT把進(jìn)程視為一個對象類。進(jìn)程對象是由NT執(zhí)行體中的對象管理程序創(chuàng)建和刪除。2. Windows NT中的線程線程和進(jìn)程一樣也用對象來實現(xiàn)。線程由對象管理程序創(chuàng)建或刪除。一個線程的基本組成是: 一個惟一的標(biāo)識符,稱之為客戶ID。 描述處理機(jī)狀態(tài)的一組寄存器內(nèi)容。 兩個棧,分別用于用戶態(tài)和核心態(tài)下執(zhí)行。 一個私用的存儲區(qū)。3. Windows NT中的線程調(diào)度Windows NT的

15、內(nèi)核永久駐留內(nèi)存,內(nèi)核的執(zhí)行是不可搶占的,并且總運行在核心態(tài)。Windows NT的內(nèi)核采用微內(nèi)核技術(shù),提供的操作系統(tǒng)原語和機(jī)制,可使執(zhí)行體構(gòu)造出更高級的操作系統(tǒng)功能。內(nèi)核決定了操作系統(tǒng)如何使用處理機(jī),整個操作系統(tǒng)的成功將依賴于內(nèi)核的正確、有效地操作。典型的描述表切換要求保存原運行線程的現(xiàn)場并裝入新運行線程的現(xiàn)場,這些現(xiàn)場是指: 程序計數(shù)器(PC) 處理機(jī)狀態(tài)寄存器(PSW) 其它寄存器內(nèi)容 用戶棧和核心棧指針 線程運行的地址空間的指針(進(jìn)程頁表目錄) 線程的六種狀態(tài) 就緒狀態(tài): 已具備執(zhí)行條件以等待CPU的執(zhí)行,線程調(diào)度程序只從就緒線程池中選擇線程進(jìn)入備用狀態(tài)。 備用狀態(tài): 系統(tǒng)中每個處理機(jī)

16、上只能有一個線程處于備用狀態(tài)。處于備用狀態(tài)的線程已被選定為某一特定處理機(jī)的一個執(zhí)行對象。當(dāng)條件合適時調(diào)度程度為該線程進(jìn)行描述表切換。 運行狀態(tài): 一旦調(diào)度程序執(zhí)行完描述表切換,該線程便進(jìn)入了運行狀態(tài)。 等待狀態(tài): 以下情況可使線程進(jìn)入等待狀態(tài)線程等待某一對象(事件)以便同步它的執(zhí)行;因I/O系統(tǒng)而等待;環(huán)境子系統(tǒng)導(dǎo)致線程自已阻塞。 當(dāng)線程的等待結(jié)束,就回到就緒狀態(tài)。 轉(zhuǎn)化狀態(tài): 如果線程已準(zhǔn)備好執(zhí)行,但由于資源不可用(如核心棧所在頁面被換出主存),從而成為轉(zhuǎn)化狀態(tài)。當(dāng)資源為可用時,線程便由轉(zhuǎn)化狀態(tài)進(jìn)入就緒狀態(tài)。 終止?fàn)顟B(tài): 線程完成了它的執(zhí)行。Windows NT內(nèi)核的線程調(diào)度程序采用的調(diào)度算

17、法是可搶占的動態(tài)優(yōu)先級調(diào)度算法,即按線程的優(yōu)先級進(jìn)行調(diào)度,高優(yōu)先級的線程先被調(diào)度。線程在執(zhí)行過程中優(yōu)先級可以動態(tài)改變,調(diào)度程度調(diào)度時所依據(jù)的主要數(shù)據(jù)結(jié)構(gòu)就是多優(yōu)先級就緒隊列。線程的調(diào)度狀態(tài)及轉(zhuǎn)換見下圖:線程的調(diào)度狀態(tài)及其轉(zhuǎn)換6.4 Windows NT虛擬內(nèi)存管理6.4.1 進(jìn)程的虛擬地址空間Windows NT的虛擬存儲管理程序是NT執(zhí)行體的重要組成部分之一,它是Windows NT的基本存儲管理系統(tǒng)。Windows NT運行在32位的386以上的微機(jī)上,每個進(jìn)程都有4GB的虛擬地址空間,采用請求分頁的虛擬存儲管理方案,其地址空間的分布如圖所示。 虛擬地址空間的4GB被分成兩部分。高地址的2

18、GB保留給系統(tǒng)使用,低地址的2GB是用戶存儲區(qū),該區(qū)域可被用戶態(tài)和核心態(tài)的線程訪問。 系統(tǒng)區(qū)又分三部分。固定頁面區(qū)(0.5GB),稱為非頁變換區(qū),用于存放永不換出內(nèi)存的頁面。在這些頁面中存放系統(tǒng)中需常駐內(nèi)存的代碼,如實現(xiàn)頁面調(diào)度的代碼等。頁交換區(qū)(0.5GB),用于存放非常駐內(nèi)存的系統(tǒng)代碼和數(shù)據(jù)。直接映射區(qū)(1GB)的尋址是由硬件直接變換的,而且這些頁面常駐內(nèi)存永不失效。存取該區(qū)域的數(shù)據(jù)特別快,所以該區(qū)存放內(nèi)核中需頻繁使用、要求響應(yīng)速度快的代碼,如調(diào)度線程執(zhí)行的代碼。32位X86體系結(jié)構(gòu)的Windows的虛擬地址布局地址范圍大小功能0 x000000000 x7FFFFFFF2GB進(jìn)程的私有地

19、址空間(最低64KB空間無效)0 x800000000 x9FFFFFFF512MB系統(tǒng)內(nèi)核(NTLDR,HAL)和引導(dǎo)驅(qū)動0 xA00000000 xA2FFFFFF48MB系統(tǒng)映射視圖或會話空間0 xA30000000 xA3FFFFFF16MB終端服務(wù)的系統(tǒng)映射視圖0 xA40000000 xBFFFFFFF448MB附加系統(tǒng)頁表入口或附加系統(tǒng)高速緩存0 xC00000000 xC03FFFFF4MB進(jìn)程頁表0 xC04000000 xC07FFFFF4MB工作集鏈表0 xC08000000 xC0BFFFFF4MB未使用0 xC0C000000 xC0FFFFFF4MB系統(tǒng)工作集鏈表0

20、 xC10000000 xE0FFFFFF512MB系統(tǒng)高速緩存0 xE10000000 xEAFFFFFF160MB分頁緩沖池0 xEB0000000 xFFBDFFFF332MB系統(tǒng)頁表入口和非分頁緩沖池0 xFFBE00000 xFFFFFFFF4MB故障處理和硬件抽象層結(jié)構(gòu)(最高64KB空間無效) 用戶態(tài)進(jìn)程的虛擬地址大小為2GB(在服務(wù)器系統(tǒng)中可配置成3GB)。另外的2GB(或1GB)空間為內(nèi)核進(jìn)程所有。6.4.2 虛擬存儲的實現(xiàn)虛擬存儲管理的實現(xiàn)包括兩個方面:地址變換機(jī)構(gòu)和頁面調(diào)度策略。(X86家族的虛擬地址由兩個成員指定:選擇器和偏移量。選擇器是一個16位值,它用作一個存儲器段的

21、一個虛擬名稱。偏移量是距段開始處的距離,它是32位值,例如: 01A9:0001FF00 。 線性地址=段基地址+偏移量, 虛擬地址 線性地址物理地址)地址變換機(jī)構(gòu)Windows NT的地址變換機(jī)構(gòu)采用一種稱為兩級頁表結(jié)構(gòu)的技術(shù)。二級頁表地址變換結(jié)構(gòu)地址變換過程舉例兩級頁表法大大節(jié)省了主存的開銷,其缺點是降低了訪問主存的速度。因為每進(jìn)行一次地址變換要有三次訪問主存:查頁目錄訪問一次,查頁表訪問一次,到主存中存取目標(biāo)數(shù)據(jù)又訪問一次。但實際上Windows NT的訪問主存速度并不慢,主要是采取了如下兩個措施:1.使用快表TLB(Translation Lookaside Buffer變換查找緩沖區(qū)

22、)加快了查表速度。2.使用高速緩沖存儲器Cache,在處理機(jī)和主存間設(shè)置了32KB或64KB的高速緩存,大部分的數(shù)據(jù)和指令取自高速緩存,所以速度很快。31 12 11 9 8 7 6 5 4 3 2 1 0 物理頁號AVL GPAT D APCDPWTU/ SR/WP頁表項結(jié)構(gòu):P: =1 頁在存儲器中; =0 不在 R/W: = 該頁是否可寫U/S: =1 用戶頁; =0 管理程序頁 PWT(頁面寫): PWT1時,片外cache采用通寫方式; PWT0時,片外cache采用回寫方式。 PCD(禁用頁超高速緩存器):若PCD1,內(nèi)部cache被禁止使用 A(訪問):該頁是否已被讀過。 D(臟

23、):該頁是否被修改過PAT(頁屬性表):該頁是否為大頁(4MB)G(全局頁):該頁是否適用所有進(jìn)程AVL:留給系統(tǒng)程序員使用 頁目錄項和頁表項有相同的格式,不同之處是D位不使用,當(dāng)某頁表由使用的頁目錄指向時對A位置1。2. 頁面調(diào)度 頁面調(diào)度策略包括取頁、置頁和淘汰策略。 Windows NT的取頁策略:按進(jìn)程需要的“請求取頁”,提前取頁。方法是在請求分頁存儲管理中普遍采用的方法。方法是Windows NT所獨有的,采取集群方法把一些頁面提前裝入主存,其做法是當(dāng)一個線程在發(fā)生缺頁時,不僅把它需要的那一頁裝入主存,而且還把該頁附近的一些頁也一起裝入。這樣做的主要依據(jù)是程序行為的局部性。采取提前裝

24、入取頁會減少缺頁次數(shù),尤其是在一個線程開始執(zhí)行時,請求取頁會造成頻繁缺頁降低系統(tǒng)的性能。 置換(淘汰)策略是為每個進(jìn)程分配一個固定數(shù)量的頁面(但可動態(tài)調(diào)整這個數(shù)量),當(dāng)發(fā)生缺頁中斷時,從本進(jìn)程的范圍內(nèi)進(jìn)行替換。 頁面數(shù)量用每個進(jìn)程的工作集來確定,并且根據(jù)主存的負(fù)荷和進(jìn)程的缺頁情況動態(tài)調(diào)整其工作集。進(jìn)程在創(chuàng)建時指定了一個最小工作集,該工作集大小保證進(jìn)程運行時應(yīng)在主存中的頁面數(shù)量。3. 頁幀號和物理內(nèi)存管理 工作集是駐留在物理內(nèi)存中的虛擬頁的集合,工作集分為進(jìn)程工作集和系統(tǒng)工作集。進(jìn)程工作集用來描述一個進(jìn)程中的所有線程引用的駐留在內(nèi)存中的頁面,系統(tǒng)工作集表示系統(tǒng)空間中可被分頁的系統(tǒng)代碼和數(shù)據(jù)駐留在

25、物理內(nèi)存中的部分。 頁幀號數(shù)據(jù)庫描述了每一個物理內(nèi)存頁的狀態(tài),所有在工作集中的頁面都標(biāo)上了“激活”狀態(tài)。為了讓內(nèi)存管理器快速地查找到同一狀態(tài)的物理頁,頁幀號數(shù)據(jù)庫將相同狀態(tài)的物理頁通過鏈表的形式連接在一起。物理頁的狀態(tài)及其說明:狀態(tài)說 明激活該頁屬于某一工作集,或者屬于系統(tǒng)的常駐內(nèi)存頁。過渡這是一個臨時狀態(tài)標(biāo)志,表明它既不屬于一個工作集也不在分頁列表上,而表明該頁正在被處理的過程中。掛起該頁被從一個工作集中移出了,對它的修改已經(jīng)寫入到了磁盤,頁表入口還是指向了該物理,但對訪問設(shè)置了掛起標(biāo)志。已修改該頁被從一個工作集中移出了,但對它的修改還沒有被寫入到了磁盤,頁表入口還是指向了該物理頁,完成寫入

26、磁盤后才可以投入使用。空閑該頁沒有任何被修改的數(shù)據(jù),但還沒有被清零,出于安全性的考慮還不能被用戶進(jìn)程使用。已清零該頁已經(jīng)被清零,能被用戶進(jìn)程使用。只讀該頁位于只讀內(nèi)存。壞頁該頁物理損壞,不能被使用。6.5 Windows 的文件系統(tǒng)6.5.1 Windows磁盤管理 Windows將磁盤分成固定大小的“扇區(qū)”,扇區(qū)的大小取決于不同的存儲設(shè)備。大部分的硬盤扇區(qū)大小為512字節(jié),CD-ROM的扇區(qū)大小一般為2048個字節(jié)。 相鄰的扇區(qū)集合組成“分區(qū)”,Windows通過分區(qū)表來存儲每個分區(qū)的開始扇區(qū)、大小和其他相關(guān)的特性。Windows通過“卷”來抽象一個或幾個分區(qū),它是文件系統(tǒng)操作磁盤的邏輯單元

27、。 文件系統(tǒng)是構(gòu)建在磁盤管理之上的。系統(tǒng)通過分區(qū)管理器和卷管理器與磁盤設(shè)備進(jìn)行交互,為文件系統(tǒng)提供一個以卷為單位的邏輯視圖。文件系統(tǒng)在卷管理器的基礎(chǔ)之上構(gòu)建文件系統(tǒng)的格式,并為I/O管理器提供操作文件的接口。6.5.2 Windows 文件系統(tǒng)格式 Windows支持多種文件系統(tǒng)格式。 1. CDFS和UDF CDFS(CD-ROM文件系統(tǒng))是一個支持CD-ROM文件的只讀文件系統(tǒng),最大支持的文件大小為4GB,最多支持65535個目錄。UDF(通用磁盤格式文件系統(tǒng))主要提供了對DVD文件的支持。 2. FAT FAT(文件分配表文件系統(tǒng))是一個簡單的文件系統(tǒng),它最初是為DOS操作系統(tǒng)設(shè)計的。它

28、適用于小容量的磁盤,文件目錄也比較簡單。為了向后兼容,Windows NT體系結(jié)構(gòu)的操作系統(tǒng)仍然支持FAT文件系統(tǒng)。 文件分配表位于卷的開頭。為了防止文件系統(tǒng)遭到破壞,F(xiàn)AT文件系統(tǒng)保存了兩個文件分配表,當(dāng)其中一個遭到破壞時,另外一個可以作為備份。而且文件分配表和根目錄必須放在磁盤的一個固定的位置,這樣系統(tǒng)在啟動時才可以找到需要的文件。 以FAT文件系統(tǒng)格式化的卷以簇為單位進(jìn)行分配,F(xiàn)AT有三個不同的版本:FAT12、FAT16和FAT32,F(xiàn)AT后面的數(shù)字代表用來表示簇號的位數(shù)。 3. NTFS NTFS(NT文件系統(tǒng))是基于Windows NT體系結(jié)構(gòu)的Windows操作系統(tǒng)的主流文件系統(tǒng)

29、,NTFS的每個卷可以支持232 1個文件,一個文件最大可達(dá)到16TB。NTFS具有許多優(yōu)秀的性能,如文件和目錄的安全機(jī)制、磁盤配額、文件壓縮以及加密等,而當(dāng)系統(tǒng)不正常中止后,文件系統(tǒng)可以自動恢復(fù)目錄和文件的結(jié)構(gòu)信息。6.5.3 Windows 文件系統(tǒng)驅(qū)動 Windows通過文件系統(tǒng)驅(qū)動來管理不同格式的文件系統(tǒng),它運行在核心態(tài)。作為設(shè)備管理的一部分,文件系統(tǒng)驅(qū)動程序需要在I/O管理器中注冊。為了提高文件操作的效率,文件系統(tǒng)驅(qū)動程序和內(nèi)存管理器交互得非常密切。為了提高吞吐量,它還和高速緩存管理器直接交互。 文件系統(tǒng)驅(qū)動程序在I/O管理器中注冊后,I/O管理器可以通過它來識別卷。每一個Windo

30、ws文件系統(tǒng)的第一個扇區(qū)都被預(yù)留為卷的根扇區(qū),文件系統(tǒng)驅(qū)動程序可以找到相應(yīng)文件系統(tǒng)所需的數(shù)據(jù)信息。 當(dāng)文件系統(tǒng)驅(qū)動識別了一個卷后,它會創(chuàng)建一個設(shè)備對象來表示文件系統(tǒng)。相應(yīng)的存儲設(shè)備管理器也創(chuàng)建一個設(shè)備對象來表示具體的存儲設(shè)備。通過這兩個設(shè)備對象,I/O管理器將傳遞到卷設(shè)備管理器的I/O請求轉(zhuǎn)發(fā)到存儲管理器的設(shè)備對象。 應(yīng)用可以通過兩種方式來訪問文件,一種是直接通過文件訪問函數(shù)進(jìn)行文件操作,如ReadFile和WriteFile等,它通過磁盤驅(qū)動的I/O處理來操作磁盤。另外一種是通過讀寫映射文件的地址空間來完成文件操作,并通過映射文件來操作磁盤。6.6.1 NTFS 的特點 (1) 可恢復(fù)性 N

31、TFS利用事務(wù)來實現(xiàn)文件系統(tǒng)的可恢復(fù),操作系統(tǒng)將一系列對文件系統(tǒng)結(jié)構(gòu)修改的操作組成事務(wù)。事務(wù)不間斷地執(zhí)行完后可以保證文件系統(tǒng)的一致性,如果事務(wù)在沒有執(zhí)行完之前被中斷,已執(zhí)行的操作必須進(jìn)行回退,以保證文件系統(tǒng)結(jié)構(gòu)恢復(fù)到事務(wù)操作之前。 (2) 安全性 NTFS的安全性通過Windows的對象模型來實現(xiàn)的。每一個打開的文件都由一個文件對象來表示,文件對象的安全描述作為文件的一部分存儲在磁盤上。在一個進(jìn)程打開一個文件對象的句柄時,Windows的安全系統(tǒng)服務(wù)會驗證該進(jìn)程是否有訪問該對象的授權(quán)。 (3) 冗余與容錯 數(shù)據(jù)的可恢復(fù)性可以保證文件系統(tǒng)在磁盤上能夠訪問,但不能保證恢復(fù)所有的用戶文件。NTFS通

32、過冗余來保護(hù)關(guān)鍵的文件系統(tǒng)信息,當(dāng)存儲該信息的磁盤扇區(qū)損壞時,系統(tǒng)可以利用冗余扇區(qū)來恢復(fù)文件數(shù)據(jù)。 (4) 動態(tài)壞簇重映像 當(dāng)系統(tǒng)試圖讀一個被損壞的扇區(qū)時,Windows容錯驅(qū)動程序會自動搜索到備份扇區(qū)。同時,NTFS會重新分配一個扇區(qū)作為該扇區(qū)新的備份。6.6 NTFS文件系統(tǒng) (5) 基于統(tǒng)一字符編碼(UNICODE)的命名機(jī)制 NTFS用統(tǒng)一字符編碼來存儲文件名、目錄名和卷名,16位的字符編碼可以讓不同國家的用戶用自已的語言來命名,使得windows的國際化版本很容易實現(xiàn)。 (6) 文件壓縮 NTFS支持壓縮功能,并透明地管理壓縮和解壓的過程。用戶還可以選擇將一個目錄壓縮,系統(tǒng)會將該目錄

33、下的所有文件壓縮。 (7) 加密 NTFS的安全性并不能保護(hù)計算機(jī)丟失或文件被泄露后的數(shù)據(jù)私密性,NTFS通過加密文件系統(tǒng)來實現(xiàn)敏感數(shù)據(jù)的加密保護(hù)。6.6.2 NTFS的磁盤結(jié)構(gòu) 1. 卷 系統(tǒng)格式化磁盤時,首先將磁盤分割成一個或多個卷。卷代表著磁盤的一個邏輯分區(qū),每一個卷包含一系列的文件和可被利用的磁盤空間。 2. 簇 簇是在一個卷上的固定大小的磁盤空間,簇的大小在系統(tǒng)格式化時就確定了。簇的大小和卷的大小相關(guān),它一般是物理扇區(qū)大小的偶數(shù)倍。NTFS基于簇而不是扇區(qū)來操作,是為了使文件系統(tǒng)獨立于不同大小的物理扇區(qū)。NTFS可以通過設(shè)置較大的簇空間來支持大容量的磁盤,或通過簇大小的調(diào)整來支持非標(biāo)

34、準(zhǔn)物理扇區(qū)的磁盤。 為了定位相關(guān)的簇在磁盤上的物理位置,NTFS引入了邏輯簇號。邏輯簇數(shù)表示從卷開始到結(jié)束的順序編號,將相應(yīng)的邏輯簇數(shù)乘以簇的大小就得到了該邏輯簇號在物理盤上的位置。NTFS通過虛擬簇號來定位一個文件中數(shù)據(jù)的位置,虛擬簇號將文件從開始到結(jié)尾順序編號。每個虛擬簇號都映射到一個邏輯號,因此連續(xù)的虛擬簇號在物理上不一定是連續(xù)存放的。 3. 文件NTFS的一個特點就是存儲在卷上的所有數(shù)據(jù)都保存在文件中,包括用于定位和查找文件的文件系統(tǒng)的結(jié)構(gòu)數(shù)據(jù)。當(dāng)磁盤的一部分損壞后,NTFS可以重定位這些文件,使得磁盤可以繼續(xù)使用。NTFS中包含目錄在內(nèi)的文件名的長度可達(dá)255個字節(jié),全路徑名最多有3

35、2767個字符,可以包含Unicode字符、空格和句點。主控文件表是NTFS卷結(jié)構(gòu)的核心,它由一組文件記錄構(gòu)成。不管簇的大小如何,每個文件記錄的大小固定為1KB,每一個文件在主控文件表上都有一個文件記錄與之對應(yīng)。除了數(shù)據(jù)文件之外,NTFS卷還包含了用來實現(xiàn)文件系統(tǒng)的結(jié)構(gòu)文件,主控文件表本身也是以文件的形式存在的。為了區(qū)別于用戶文件,這些系統(tǒng)結(jié)構(gòu)文件用$標(biāo)志符作為文件名的首字符,如主控文件表的文件名為:$MFT。MFT本身就是一個文件,可以被放在卷中的任何位置。在掛載(mount)該卷時,NTFS查詢引導(dǎo)扇區(qū)以找到MFT的物理磁盤地址。每個文件通過一個文件記錄來描述,文件記錄用不同的屬性來描述文

36、件的文件名、時間信息和其他文件說明信息,文件數(shù)據(jù)也可以看作是文件記錄的一個屬性。當(dāng)文件的所有屬性(包括數(shù)據(jù)屬性)占用的空間小于1KB的文件記錄時,所有的數(shù)據(jù)可以直接存儲在文件記錄中。當(dāng)文件的大小會超過1KB時,NTFS會分配額外的盤區(qū)來存儲文件的數(shù)據(jù),并通過文件記錄的數(shù)據(jù)屬性指向額外分配的盤區(qū)。NTFS主文件表屬 性描 述標(biāo)準(zhǔn)信息標(biāo)志位,時間戳等文件名Unicode文件名安全描述符廢棄了。現(xiàn)在用$Extend $Secure表示屬性列表額外的MFT記錄位置,如果需要對象ID對此卷唯一的64B文件標(biāo)識符重解析點用于加載和符號鏈接卷名當(dāng)前卷的名字(僅用于$Volume)卷信息卷版本(僅用于$Vol

37、ume)索引根用于目錄索引分配用于很大的目錄位圖用于很大的目錄日志工具流控制記錄日志到$LogFile數(shù)據(jù)數(shù)據(jù)流:可以重復(fù)MFT記錄中使用的屬性有3個連續(xù)空間、9個塊的短流的一條MFT記錄 每個MFT記錄由一個記錄頭和后面跟著的(屬性頭,值)對組成。記錄頭包含一個幻數(shù)用于有效性檢查,一個序列號(每次當(dāng)記錄被一個新文件再使用時就被更新),文件引用記數(shù),記錄實際使用的字節(jié)數(shù),基本記錄(僅用于擴(kuò)展記錄)的標(biāo)識符(索引,序列號),和其他一些雜項。 每個記錄始于一個頭,這個頭給出第一個塊在流中偏移量。接著是沒有被記錄覆蓋的第一個塊的偏移量。每個記錄的頭后面跟著一個或多個對,每個對給出了磁盤地址和持續(xù)長度

38、。磁盤地址是該磁盤塊離本分區(qū)起點的偏移量;持續(xù)長度給出順串塊的數(shù)量。在一段串記錄中需要有多少對就可以有多少對。有多少對串塊依賴于當(dāng)流被創(chuàng)建時磁盤塊分配器在找連續(xù)塊的串時做的有多好。對于一個n塊的流,段數(shù)可能是從1到n的任意值。需要三個MFT記錄存儲其所有順串的文件 4. 目錄 在NTFS文件系統(tǒng)中,文件目錄的結(jié)構(gòu)為該目錄所有文件名的索引記錄,它也存放在主控文件表中。在創(chuàng)建一個目錄時,NTFS會根據(jù)該目錄下的文件的名稱屬性建立索引。 一個目錄的主控文件記錄將其目錄中的文件名和子目錄名進(jìn)行排序,并保存在索引根屬性中。對于一個大的目錄,系統(tǒng)用一個固定為4KB大小的索引緩沖區(qū)來存儲不能放在索引記錄中的

39、文件名。NTFS用B+樹來實現(xiàn)管理索引,用B+樹來存儲文件名有很多好處,由于文件名是排序后存放的,所以目錄查找起來非常快。而且,B+樹趨向于橫向增長,因此當(dāng)文件目錄不斷加深時,NTFS的查找效率不會降低。Windows 的根目錄存儲結(jié)構(gòu)示例小目錄的MFT記錄6.7 Windows NT的I/O系統(tǒng) Windows I/O系統(tǒng)為應(yīng)用程序和操作系統(tǒng)服務(wù)提供了一個操作設(shè)備的抽象層,它由若干個運行在核心態(tài)的系統(tǒng)服務(wù)組成。Windows I/O系統(tǒng)的設(shè)計目標(biāo)是: 為所有的設(shè)備提供統(tǒng)一的安全和命名機(jī)制,以方便這些資源共享; 提供基于包交換的高效異步I/O請求處理機(jī)制以提高應(yīng)用與設(shè)備交互的效率。 為使用高級

40、語言編寫設(shè)備驅(qū)動提供支持以便在不同體系結(jié)構(gòu)的計算機(jī)之間移植驅(qū)動程序; 支持可擴(kuò)展的分層驅(qū)動程序結(jié)構(gòu),以方便對設(shè)備管理功能的擴(kuò)充和修改; 支持驅(qū)動程序的動態(tài)加載和卸載,以最大程度地節(jié)省系統(tǒng)資源; 提供即插即用的功能,使得系統(tǒng)能夠自動偵測新的硬件設(shè)備,并自動分配必要的系統(tǒng)資源; 提供電源管理功能,使得系統(tǒng)和相關(guān)的設(shè)備在不使用時可進(jìn)入低功耗狀態(tài); 支持多個可安裝的文件系統(tǒng),包括文件分配表文件系統(tǒng)(FAT),CD-ROM文件系統(tǒng)(CDFS),通用磁盤格式文件系統(tǒng)(UDF)和NT文件系統(tǒng)(NTFS)。6.7.1 I/O系統(tǒng)的結(jié)構(gòu) 1. I/O系統(tǒng)概貌 NT執(zhí)行體的I/O系統(tǒng)接收用戶態(tài)和核心態(tài)進(jìn)程的I/O請求,以不同的方式傳送到I/O設(shè)備。I/O系統(tǒng)由一組負(fù)責(zé)處理各種設(shè)備的輸入/輸出部件構(gòu)成。這些部件有: I/O管理程序 文件系統(tǒng) 緩沖存儲管理器(Cache Manager) 設(shè)備驅(qū)動程序(Device Driver) 網(wǎng)絡(luò)重定位(Network Redirector) 和網(wǎng)絡(luò)服務(wù)程序(Network Server) I/O系統(tǒng)概貌 2. I/O管理程序 I/O管理程序建立了NT執(zhí)行體的I/O模型,它實現(xiàn)與設(shè)備無關(guān)的輸入/輸出。它的主要工作是建立一個代表I/O操作的I/O請求包I

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論