1. 程式人生 > >第七章——Windows內核基礎-內核理論基礎(內存空間布局,Windows與內核啟動過程)

第七章——Windows內核基礎-內核理論基礎(內存空間布局,Windows與內核啟動過程)

ont 抽象層 log 支持 64位 物理地址 memory 用戶模式 src

1.內存空間布局 X86系統支持32位尋址,因此支持2^32=4GB的虛擬內存空間,windwos系統的內存主要分為內核空間和應用層空間 每部分占2GB,其中包括一個64KB的NULL空間以及非法區域。 windows內存的邏輯地址分為兩部分: 段選擇符和偏移地址,CPU在進行地址翻譯的時候,先通過分段機制計算出一個線性地址,在通過頁表機制將線性地址映射到物理地址,再從物理內存中讀取數據和指令 技術分享圖片 X64的內存布局與X86的內存布局類似,X64下存在一些空洞,並且X64的最大尋址空間為2^64KB的尋址空間 但是實際上X64的空間太大,很多沒有用到。X64下一般只支持到40多位 技術分享圖片 2.Windows與內核啟動過程
windows啟動步驟如下: ⑴啟動自檢階段 打開電源時,計算機先從BIOS中載入指令,然後進行一系列的自檢操作,進行硬件的初始化檢測(硬盤,鍵盤等等),同時在屏幕上顯示信息 ⑵初始化啟動階段 自檢完成後,根據CMOS設置,BIOS加載啟動盤,將主引導記錄(MBR)中的引導代碼載入內存執行,接著,啟動過程由MBR執行,啟動代碼搜索MBR中的分區表 找到活動分區,將第一個扇區中的引導代碼載入內存,引導代碼檢測當前使用的文件系統,查找ntldr文件,找到之後將啟動它,BIOSde 控制權交給ntldr,由ntlad完成操
作系統的啟動工作(windows7是bootmgr) ⑶Boot加載階段 這裏啟動分區加載ntldr,然後對ntldr進行如下設置 ①設置內存模式,如果是32位操作系統,設置32-bit flat memory, 64位反之 ②啟動一個簡單的文件系統,定位boot.ini. ntoskrnl.Hal等啟動文件 ③讀取boot.ini文件 ⑷檢測和配置硬件階段 在這個階段會檢查和配置一些硬件設備,顯示適配器,鍵盤,磁盤,鼠標等等
⑸內核加載階段 ntldr將首先加載windows內核Ntoskrnl.exe和硬件抽象層(HAL).HAL會對硬件底層的特征進行隔離,為操作系統提供統一接口,接下來 ntldr從註冊表讀取驅動程序, 依次加載驅動,初始化底層設備驅動,在註冊表中找start鍵的值為0和1的設備驅動 ,start鍵的值為0.1.2.3.4,數值越小,啟動越早。0表示內核剛剛初始化,此時加載的都是與系統核心有關的重要驅動程序。1表示稍晚一些 ,2是從登錄界面出現的時候,3表示需要手動加載,4表示禁止加載 ⑹windows的會話管理啟動 驅動程序記載完成,內核會啟動會話管理器,這是smss.exe的程序,是windows系統中第一個創建的進程,作用: 1.創建系統環境變量 2.加載win32k.sys 它是windows子系統的內核模式部分 3.啟動csrss.exe ,它是windows子系統的用戶模式部分 4.啟動winlogon.exe(後面解釋) 5.創建虛擬內存頁面文件 6.執行上次重啟前未執行的重命名工作 ⑺登陸階段 windows子系統啟動的winlogon.exe系統服務提供對windows用戶的登陸和註銷,可以完成如下操作: 1.啟動服務子系統(services.exe) 也稱服務控制管理器 SCM 2.啟動本地安全授權(LSA)過程 3.顯示登陸界面 登陸過程中對用戶的賬號密碼傳遞給LSA後,通過之後,用戶就可以操作windows系統 win7和XP在啟動過程中的區別
  • BIOS通過自檢後,將MBR載入內存並執行,引導代碼找到管理器Bootmgr
  • Bootmgr尋找活動分區Boot文件夾中的啟動配置數據BCD文件,讀取對應的語言啟動菜單,然後再屏幕上顯示多操作系統選擇畫面
  • 選擇win7後,Bootmgr就會讀取系統文件 winload(在system文件夾中)
  • 此時系統的執行權都交給winload, winload加載win7的內核,硬件,服務等等,然後加載桌面信息,從而啟動系統
新一代的系統引導方式UEFI和GPT
上面說的系統引導與啟動,主要借助BIOS和MBR完成系統的引導和啟動,具有一定的局限性,局限性:磁盤邏輯塊地址是32位,最多表示2^32個扇區,
而且每個扇區大小一般都是512字節,所以最多支持2^32*521=2*2^20字節(2TB)在BIOS中,啟動操作系統之前必須從硬盤上讀取扇區中讀取啟動代碼,然後從分區中引導啟動操作系統,對扇區的操作遠不上分區中文件的操作那樣簡單 為了打破BIOS和MBR引導的局限,新的UEFI和GPT。
UEFI:統一的可擴展固件接口。在UEFI中,用於表示LBA的地址還是64位,突破了BIOS和MBR分區容量問題,UEFI本身就是一個操作系統,具有文件系統,能夠直接讀取FAT中的文件,可以將windwos安裝程序做成efi類型的應用程序,然後放到任意分區直接運行,在UEFI中不需要引導操作,不需要活動分區,只需要在FAT32分區活在U盤中,通過這個分區或者U盤啟動windows 與MBR分區表比,GPT(全區唯一標識分區表)對分區數量沒有限制,但是windows還是將GPT將分區限制到128個,GPT可管理磁盤大小達到18EB,因此只有基於UEFI平臺的主板才支持GPT分區引導啟動

第七章——Windows內核基礎-內核理論基礎(內存空間布局,Windows與內核啟動過程)