Windows NT体系结构
生活随笔
收集整理的這篇文章主要介紹了
Windows NT体系结构
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Windows NT中的NT意為New Technology,其實Microsoft自從93年推出的第一個windows NT 3.1到即將發(fā)布的windows 7都屬于NT版本的范疇,只不過是Windows 2000之后的版本不再以內(nèi)核版本號命名。 Microsoft Windows NT 3.1 (1993) Microsoft Windows NT 3.5 (1994) Microsoft Windows NT 3.51 (1995) Microsoft Windows NT 4.0 (1996) Microsoft Windows 2000 (Windows NT 5.0) (1999) Microsoft Windows XP (Windows NT 5.1) (2001) Microsoft Windows Server 2003 (Windows NT 5.2) (2003) Microsoft Windows Vista (Windows NT 6.0) (2006) Microsoft Windows Server 2008 (Windows NT 6.1) (2008) Microsoft Windows 7 (Windows NT 6.1) (2009夏末發(fā)布) ? NT體系中最大的特點莫過于系統(tǒng)分為內(nèi)核模式與用戶模式,在這里就著重談一下這兩個模式的特點。 使用內(nèi)核模式或者用戶模式是由硬件控制的處理器狀態(tài),NT利用硬件的特性對內(nèi)存的訪問進行控制。其中對內(nèi)存頁面的讀寫控制主要體現(xiàn)在3方面:保護系統(tǒng)頁面,用戶程序不可訪問。避免了由于用戶程序錯誤對系統(tǒng)頁面的影響;用戶進程相互之間的保護,隔離用戶進程避免相互干擾;對代碼區(qū)域的“不可寫”保護。 內(nèi)核模式和用戶模式能夠執(zhí)行的指令也有區(qū)別,特權(quán)指令只能在內(nèi)核模式下運行,用戶模式下并不能使用CPU提供的所有功能。 Windows NT使用的模式可以用Performance Monitor查看Processor對象的兩個計數(shù)器”Privileged Time”和”User Time”,可看到CPU在內(nèi)核模式和用戶模式下所花的時間。
?二、
對于Windows Vista(Windows NT 6.0)在內(nèi)核上的變化下面簡要介紹一下 1、? 線程調(diào)度更加公平:更精確地計算線程執(zhí)行時間,按照線程執(zhí)行時間而不是時間點調(diào)度。 2、? I/O系統(tǒng)的改進 (1)、I/O完成端口的改進:I/O完成端口用于提高系統(tǒng)對I/O處理的吞吐量。之前的版本每次完成都立即切換到發(fā)出I/O的那個線程,而不管該線程是否需要I/O完成的結(jié)果。在Vista中,延遲到該線程來讀取或者處理此I/O請求,從而避免了不必要的線程環(huán)境切換。 (2)、同步I/O可以被取消:既可以取消當(dāng)前線程發(fā)出的I/O,又可以取消其他線程發(fā)出的I/O。比如系統(tǒng)的文件對話框都支持取消操作,訪問遠(yuǎn)程計算機時在等待連接過程中都可以取消,避免了由于網(wǎng)絡(luò)路徑不可用需要等到連接超時之后才能進行下一步操作。 (3)、I/O優(yōu)先級的改進: 之前版本的I/O優(yōu)先級都是根據(jù)線程I/O優(yōu)先級來確定,Vista引入了兩種I/O優(yōu)先級類型--I/O優(yōu)先級和I/O帶寬預(yù)留。這樣使得后臺任務(wù)更少的干擾前臺任務(wù)。 3、? 內(nèi)存管理的改進 (1)、內(nèi)存池的大小可以是動態(tài)的:在32位Vista系統(tǒng)中,虛擬內(nèi)存的分配可以根據(jù)需要動態(tài)變化。主要針對換頁內(nèi)存池、非換頁內(nèi)存池和會話內(nèi)存池。 (2)、SuperFetch:對應(yīng)XP中的Prefetcher,Prefetcher在進程啟動時候針對單個進程來預(yù)取數(shù)據(jù)。例如啟動Word這樣比較大的程序時,如果不使用Prefetcher預(yù)先處理進程WINWORD.EXE啟動效率會非常低,Prefetcher可以對每個程序預(yù)留內(nèi)存頁面以提高進程啟動的速度。在Vista中,SuperTetch能夠根據(jù)更加復(fù)雜的模式來預(yù)取數(shù)據(jù),例如可以跨越多個應(yīng)用程序。 (3)、ReadyBoost:支持用Flash(閃存)來緩存,介于RAM和硬盤之間,數(shù)據(jù)可以被壓縮和加密。如果是順序訪問,Flash的速度不如硬盤。但對于緩存的訪問常是隨機的,Flash的性能優(yōu)于硬盤。 4、? ReadyBoot 引導(dǎo)和停機 (1)、使用引導(dǎo)配置數(shù)據(jù)庫替代了Boot.ini,存儲在注冊表中????????????? HKEY_LOCAL_MACHINE\BCD00000000. (2)、使用兩個引導(dǎo)程序替代了Ntldr(NT Loader),分別是Windows Boot Manager(\Bootmgr)和OS loader(\Systemroot\System32\Winload.exe) (3)、啟動過程和會話管理方面的改進:對于系統(tǒng)會話和控制臺用戶會話進行隔離,使用不同的會話。 (4)、停機過程的改進:服務(wù)可以請求停機等待,也可以指定服務(wù)的停機順序。 5、? 可靠性和系統(tǒng)恢復(fù) (1)、內(nèi)核事務(wù)管理器(KTM):用于協(xié)調(diào)應(yīng)用程序和資源管理器(包括注冊表和NTFS文件系統(tǒng)) (2)、卷影拷貝(Volume Shadow Copy) 在XP中已經(jīng)引入,主要用于備份工具 在Server 2003中用于共享文件夾的影像拷貝,作版本的管理。 在Vista中,卷影拷貝服務(wù)可以用于系統(tǒng)恢復(fù)(System Restore),更加靈活。 (3)、Windows錯誤報告(Windows Error Reporting):之前,未處理的異常是在異常線程環(huán)境中執(zhí)行的,可能會因為該異常線程本身導(dǎo)致發(fā)不出錯誤報告。Vista中,線程發(fā)送一個消息,由WER服務(wù)處理。 6、? 安全性 (1)、BitLocker驅(qū)動器加密:對整個OS卷進行加密(要求有1.5G為加密的系統(tǒng)卷) (2)、代碼完整性檢驗(Code Integrity Verification):對OS Loader和內(nèi)核執(zhí)行代碼簽名的檢查。 (3)、地址空間布局隨機化(Address Space Load Randomization,ASLR):子系統(tǒng)DLL在用戶進程的地址空間不再是固定的地址位置,用戶棧的位置是隨機的,減少了緩沖區(qū)溢出***。 (4)、Windows服務(wù)的安全增強:使用“最小特權(quán)原則(the principle of least-privilege)”。(5)、UAC(用戶帳戶控制,User Account Control):管理員組成員在運行程序時并不是特權(quán)用戶,而是使用標(biāo)準(zhǔn)用戶權(quán)限。當(dāng)需要安裝程序或訪問系統(tǒng)數(shù)據(jù)時,系統(tǒng)會對操作進行提示。1、內(nèi)核 Ntoskrnl.exe(NT體系結(jié)構(gòu)中最核心的部分) (1)、執(zhí)行體功能:進程和線程管理器、虛擬內(nèi)存管理器、安全引用監(jiān)視器(Security Reference Monitor)、I/O管理器、即插即用管理器、電源管理器、緩存管理器、其他一些服務(wù)組件,比如對象管理器、LPC、一些庫函數(shù)和支持函數(shù)。 (2)、內(nèi)核功能:供其他組件使用的底層操作系統(tǒng)、線程調(diào)度、中斷處理、多處理器的同步。 此外Ntkrnlpa.exe? 支持PAE(物理地址擴展)的執(zhí)行體和內(nèi)核—特殊版本的內(nèi)核,用于在32位系統(tǒng)對超過4GB物理內(nèi)存尋址的內(nèi)核。 2硬件抽象層(HAL) 硬件抽象層用于屏蔽硬件的差異,保證內(nèi)核在任何硬件環(huán)境下保持可移植性,在內(nèi)核不變的情況下可更換硬件。它對硬件平臺的細(xì)節(jié)進行了抽象,包括I/O接口,中斷控制器等 Windows 2000/XP/2003支持如下幾種硬件結(jié)構(gòu) Hal.dll? 標(biāo)準(zhǔn)PC Halacpi.dll 高級配置和電源接口(APIC)PC Halapic.dll 高級可編程中斷控制器(APIC)PC Halaacpi.dll APIC ACPI PC Halmps.dll 多處理器PC Halmacpi.dll 多處理器ACPI PC 3、I/O管理器 (1)、Windows的I/O管理結(jié)構(gòu)靈活,它將磁盤I/O、網(wǎng)絡(luò)I/O等抽象成IRP(I/O請求包)。所以I/O管理器是一個用于傳遞IRP的框架,通過IRP控制了所有I/O操作的處理過程(唯一的例外:快速I/O不使用IRP) (2)、I/O管理器工作過程: >為每個I/O操作創(chuàng)建一個IRP >把IRP傳遞給正確的驅(qū)動程序 >當(dāng)I/O操作完成時刪除IRP (3)、驅(qū)動程序與I/O管理器的關(guān)系: >向I/O管理器登記必要的信息 >接收IRP >執(zhí)行IRP指定的操作 >把IRP傳回給I/O管理器,或者通過I/O管理器傳遞給另一個驅(qū)動程序以便進一步處理。 4、內(nèi)核模式驅(qū)動程序Win32k.sys Win32k.sys包括窗口管理器和圖形設(shè)備接口GDI,其作用是高效的處理用戶圖形界面,靈活的管理窗口。 (1)、窗口管理器。控制窗口顯示、管理屏幕輸出、收集來自鍵盤鼠標(biāo)和其它設(shè)備的輸入、把用戶消息傳遞給應(yīng)用程序。 (2)、圖形設(shè)備接口(GDI)。這是針對圖形輸出設(shè)備的函數(shù)庫,包括畫線、文本和各種圖形的函數(shù),以及一些用于控制圖形操作的函數(shù)。 5、環(huán)境子系統(tǒng)進程 Win32子系統(tǒng)進程csrss.exe作用包括控制臺窗口、創(chuàng)建或刪除進程或線程、對16位虛擬DOS機的支持。 注:對OS/2和POSIX的支持通過其他方式支持,這里不再說明。 6、子系統(tǒng)DLL: 子系統(tǒng)DLL 包括Kernel32、Advapi32、User32、GDI32等,為Windows應(yīng)用程序調(diào)用系統(tǒng)服務(wù)和Win32子系統(tǒng)提供接口模塊。 7、Ntdll.dll 內(nèi)部支持函數(shù)和執(zhí)行體函數(shù)的存根函數(shù),將用戶模式的請求轉(zhuǎn)譯為內(nèi)核模式,在這一層上CPU進行環(huán)境切換(sysenter/sysexit)。 用戶程序與系統(tǒng)的交互也就是用戶模式和內(nèi)核模式的切換方式如下, (1)、用戶程序通過子系統(tǒng)直接調(diào)用內(nèi)核執(zhí)行體所提供的函數(shù) (2)、用戶程序通過子系統(tǒng)調(diào)用Win32 User/GDI,直接從用戶模式切換到內(nèi)核模式,調(diào)用完成后返回。 (3)、用戶程序通過環(huán)境子系統(tǒng)csrss.exe,相對過程要經(jīng)過4次環(huán)境切換,效率較低。 8、系統(tǒng)進程和系統(tǒng)線程 Smss.exe、Winlogon.exe、Services.exe?
二、對于Windows Vista(Windows NT 6.0)在內(nèi)核上的變化下面簡要介紹一下 1、? 線程調(diào)度更加公平:更精確地計算線程執(zhí)行時間,按照線程執(zhí)行時間而不是時間點調(diào)度。 2、? I/O系統(tǒng)的改進 (1)、I/O完成端口的改進:I/O完成端口用于提高系統(tǒng)對I/O處理的吞吐量。之前的版本每次完成都立即切換到發(fā)出I/O的那個線程,而不管該線程是否需要I/O完成的結(jié)果。在Vista中,延遲到該線程來讀取或者處理此I/O請求,從而避免了不必要的線程環(huán)境切換。 (2)、同步I/O可以被取消:既可以取消當(dāng)前線程發(fā)出的I/O,又可以取消其他線程發(fā)出的I/O。比如系統(tǒng)的文件對話框都支持取消操作,訪問遠(yuǎn)程計算機時在等待連接過程中都可以取消,避免了由于網(wǎng)絡(luò)路徑不可用需要等到連接超時之后才能進行下一步操作。 (3)、I/O優(yōu)先級的改進: 之前版本的I/O優(yōu)先級都是根據(jù)線程I/O優(yōu)先級來確定,Vista引入了兩種I/O優(yōu)先級類型--I/O優(yōu)先級和I/O帶寬預(yù)留。這樣使得后臺任務(wù)更少的干擾前臺任務(wù)。 3、? 內(nèi)存管理的改進 (1)、內(nèi)存池的大小可以是動態(tài)的:在32位Vista系統(tǒng)中,虛擬內(nèi)存的分配可以根據(jù)需要動態(tài)變化。主要針對換頁內(nèi)存池、非換頁內(nèi)存池和會話內(nèi)存池。 (2)、SuperFetch:對應(yīng)XP中的Prefetcher,Prefetcher在進程啟動時候針對單個進程來預(yù)取數(shù)據(jù)。例如啟動Word這樣比較大的程序時,如果不使用Prefetcher預(yù)先處理進程WINWORD.EXE啟動效率會非常低,Prefetcher可以對每個程序預(yù)留內(nèi)存頁面以提高進程啟動的速度。在Vista中,SuperTetch能夠根據(jù)更加復(fù)雜的模式來預(yù)取數(shù)據(jù),例如可以跨越多個應(yīng)用程序。 (3)、ReadyBoost:支持用Flash(閃存)來緩存,介于RAM和硬盤之間,數(shù)據(jù)可以被壓縮和加密。如果是順序訪問,Flash的速度不如硬盤。但對于緩存的訪問常是隨機的,Flash的性能優(yōu)于硬盤。 4、? ReadyBoot 引導(dǎo)和停機 (1)、使用引導(dǎo)配置數(shù)據(jù)庫替代了Boot.ini,存儲在注冊表中????????????? HKEY_LOCAL_MACHINE\BCD00000000. (2)、使用兩個引導(dǎo)程序替代了Ntldr(NT Loader),分別是Windows Boot Manager(\Bootmgr)和OS loader(\Systemroot\System32\Winload.exe) (3)、啟動過程和會話管理方面的改進:對于系統(tǒng)會話和控制臺用戶會話進行隔離,使用不同的會話。 (4)、停機過程的改進:服務(wù)可以請求停機等待,也可以指定服務(wù)的停機順序。?
5、? 可靠性和系統(tǒng)恢復(fù) (1)、內(nèi)核事務(wù)管理器(KTM):用于協(xié)調(diào)應(yīng)用程序和資源管理器(包括注冊表和NTFS文件系統(tǒng)) (2)、卷影拷貝(Volume Shadow Copy) 在XP中已經(jīng)引入,主要用于備份工具 在Server 2003中用于共享文件夾的影像拷貝,作版本的管理。 在Vista中,卷影拷貝服務(wù)可以用于系統(tǒng)恢復(fù)(System Restore),更加靈活。 (3)、Windows錯誤報告(Windows Error Reporting):之前,未處理的異常是在異常線程環(huán)境中執(zhí)行的,可能會因為該異常線程本身導(dǎo)致發(fā)不出錯誤報告。Vista中,線程發(fā)送一個消息,由WER服務(wù)處理。?
6、? 安全性 (1)、BitLocker驅(qū)動器加密:對整個OS卷進行加密(要求有1.5G為加密的系統(tǒng)卷) (2)、代碼完整性檢驗(Code Integrity Verification):對OS Loader和內(nèi)核執(zhí)行代碼簽名的檢查。 (3)、地址空間布局隨機化(Address Space Load Randomization,ASLR):子系統(tǒng)DLL在用戶進程的地址空間不再是固定的地址位置,用戶棧的位置是隨機的,減少了緩沖區(qū)溢出***。 (4)、Windows服務(wù)的安全增強:使用“最小特權(quán)原則(the principle of least-privilege)”。 (5)、UAC(用戶帳戶控制,User Account Control):管理員組成員在運行程序時并不是特權(quán)用戶,而是使用標(biāo)準(zhǔn)用戶權(quán)限。當(dāng)需要安裝程序或訪問系統(tǒng)數(shù)據(jù)時,系統(tǒng)會對操作進行提示。轉(zhuǎn)載于:https://blog.51cto.com/beacon/130715
總結(jié)
以上是生活随笔為你收集整理的Windows NT体系结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开发常见错误解决(1)注册.NET En
- 下一篇: Silverlight 2 Custom