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