• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            無我

            讓內(nèi)心永遠(yuǎn)燃燒著偉大的光明的精神之火!
            靈活的思考,嚴(yán)謹(jǐn)?shù)膶崿F(xiàn)
            豪邁的氣魄、頑強的意志和周全的思考

            【轉(zhuǎn)】計算機與操作系統(tǒng)啟動原理

            計算機與操作系統(tǒng)啟動原理
                                                  
            轉(zhuǎn)載自:http://wolfhacker.blogchina.com/wolfhacker/1719979.html
            近由于學(xué)習(xí)操作系統(tǒng)原理,加上自己對底層的興趣,查閱了不少資料,現(xiàn)結(jié)合《INSIDE WINDOWS NT》以及網(wǎng)上不少網(wǎng)友的文章,以及自己的粗略理解,整理出關(guān)于操作系統(tǒng)啟動的詳細(xì)資料,以資共享,當(dāng)然這其中有不少是摘錄的文字,請原文作者原諒,如果有錯誤,還請各位指正:
            在剛開機加電時,根據(jù)X386CUP的特性,代碼段(CS,CODE SEGMENT)寄存器的值為全1,指令計數(shù)器(IP,INSTRUCTION POINTER)的值為全0,既CS=FFFF、IP=0000。這時CPU根據(jù)CS和IP 的值執(zhí)行FFFF0H處的指令。由于FFFF0H已經(jīng)到了基本內(nèi)存的高地址頂端,所以,F(xiàn)FFF0H處的指令一般總是一個JMP指令,jump到另一個位於ROM BIOS中的位置(就是執(zhí)行BIOS中的系統(tǒng)測試代碼,隨著制作BIOS廠商的不同而會有些許差異 )它負(fù)責(zé)開機自檢。如檢查內(nèi)存,鍵盤等。在自檢過程中,ROM BIOS會在上位內(nèi)存(UMB,UPPERMEMORY BLOCK)中進行掃描,看看是否存在合法的設(shè)備控制卡ROM BIOS(如:SCSI卡上的ROM),如果有,就執(zhí)行其中的一些初始化代碼。緊接著系統(tǒng)測試碼之后,控制權(quán)會轉(zhuǎn)移給ROM中的啟動程序(ROM bootstrap routine),這個程序會將磁盤上的第零軌第零扇區(qū)讀入內(nèi)存中(這就是一般所謂的boot sector,如果你曾接觸過電腦病毒,就大概聽過它的大名。假定硬盤是系統(tǒng)的啟動磁盤。硬盤的第一扇區(qū)稱為主引導(dǎo)記錄(MBR, MASTER BOOTRECORD)。MBR 的長度為512字節(jié)??煞譃閮刹糠郑旱谝徊糠譃橐龑?dǎo)(PRE-BOOT)區(qū),占了446個字節(jié);第二部分為分區(qū)表(PARTITION PABLE),共有66個字節(jié),記錄硬盤的分區(qū)信息。預(yù)引導(dǎo)區(qū)的作用之一是找到標(biāo)記為活動(ACTIVE)的分區(qū),并將活動分區(qū)的引導(dǎo)區(qū)讀入內(nèi)存。如果用軟盤啟動計算機,ROM BIOS 讀入的是軟盤的引導(dǎo)區(qū),既軟盤的第一個扇區(qū)。),至於被讀到內(nèi)存的哪里呢? --絕對位置07C0:0000(即07C00h處),這是IBM系列PC的特性。經(jīng)過一系列復(fù)雜操作后,最后將控制權(quán)轉(zhuǎn)移給操作系統(tǒng)。

            對于linux而言,開機磁盤的boot sector上的正是linux的bootsect程序,也就是說,bootsect是第一個被讀入內(nèi)存中并執(zhí)行的程序。(鑒于大家研究linux不多,linux有源代碼可參,bootsect.S->setup.S->head.S ->main.c,所以我就將linux以后的啟動略去,主要看Windows的啟動,且主要對于NT而言,2k類似。--因為9X已成為歷史)對于NT而言,boot sector上的正是Windows引導(dǎo)扇的引導(dǎo)代碼(他是在Windows安裝時被寫入的).  當(dāng)引導(dǎo)扇區(qū)被引導(dǎo)后,他首先查找NTLDR.(該文件必須存在于根目錄下,否則系統(tǒng)提示: 
            BOOT:Couldn't find NTLDR.或A kernel file is missing from the disk.NT.接著該死機了)NTLDR首先將CPU從實模式轉(zhuǎn)換到保護模式下.當(dāng)NTLDR將所有的1M以下的內(nèi)存頁描述符創(chuàng)建好后,NTLDR再開啟頁映射功能,現(xiàn)在NT可以訪問4G內(nèi)存了.然后,NTLDR通過內(nèi)建的文件系統(tǒng)代碼來查找根目錄下的BOOT.INI并根據(jù)BOOT.INI(這也是我們可以修改啟動選項的地方)的內(nèi)容提示用戶可選的操作系統(tǒng).當(dāng)用戶在缺省的時間內(nèi)沒有選擇.NTLDR就引導(dǎo)缺省的操作系統(tǒng).然后NTLDR加載NTDECT.COM.調(diào)用INTxx來執(zhí)行一大堆的BIOS系統(tǒng)調(diào)用.用來進行系統(tǒng)配置的檢測.所有檢測到的東西將被存到系統(tǒng)注冊表的HKLMHARDWAREDESCRIPTION項下.  接下來被加載的2個文件組成了WINDOWS NT的核心.那就是:HAL.DLL,NTOSKRNL.EXE.這2個文件在裝載時將被檢測PE校驗和,如果有問題或找不到.NT又要死機了.加載完這2個文件后,NTLDR再加載所有引導(dǎo)必須的驅(qū)動程序,然后加載HKEY_LOCAL_MACHINESYSTEMServices里的值SERVICE_BOOT_START的DRIVER.(此時不初始化.)然后NTLDR就會鎖定NTOSKRNL.EXE的main()函數(shù),然后將控制轉(zhuǎn)移給NTOSKRNL.EXE.  接下來NT開始了自己復(fù)雜的OS核心初始化.首先調(diào)用ExpInitializeExecutive,而該函數(shù)則調(diào)用HAL.DLL里引出的函數(shù)HallnitSystem().這時.NT就完成了對中斷控制器的初始化和時間片的設(shè)定.當(dāng)HallnitSystem()返回,接下來進行的就是對內(nèi)存管理器,安全引用監(jiān)視器,對象管理器,進程管理器的初始化.在內(nèi)存管理器完成初始化后,NT才顯示Microsoft (R) Windows NT (TM) Version 4.0 (Build 1381)之類的.而后面的SERVICE PACK號碼則是從注冊表里HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlWindowsCSDVersion取出.當(dāng)進程管理器初始化完成后(進程管理器是NTOSKRNL.EXE里最后被初始化的一個管理器),進程管理器產(chǎn)生2個進程.一個,乃是IDLE進程.一個,乃是SYSTEM進程.而當(dāng)返回到ExpInitializeExecutive后,ExpInitializeExecutive就變成了IDLE線程.而IDLE線程的優(yōu)先級是最低的. 
            現(xiàn)在調(diào)用HAL激活多CPU的功能.然后將依次調(diào)用Object Manager, Executive, Kernel, Security Reference Monitor,Memory Manager,Cache Manager,Configuration Manager,I/O Manager, Process Manager. 
            其中IO管理器負(fù)責(zé)完成啟動值為SERVICE_BOOT_START的驅(qū)動程序的初始化,緊接著,啟動注冊表內(nèi)啟動值為SERVICE_SYSTEM_START的裝載. 
            所有的DRIVER完成初始化后,還沒有任何USER MODE的程序,也沒有任何環(huán)境子系統(tǒng).系統(tǒng)進程將調(diào)用核心函數(shù)ExInitializeSystem創(chuàng)建SMSS進程.就是SESSION MANAGER進程.SMSS是第一個USER MODE的應(yīng)用程序.他又是一個真正的NATIVE APPLICATION.他不依賴于任何子系統(tǒng).SMSS唯一需要的就是NTDLL.DLL.而且就是他創(chuàng)建了WIN32子系統(tǒng). 
            然后SMSS開始工作: 
            創(chuàng)建LPC端口對象SmApiPort.2個線程,等待客戶請求如加載子系統(tǒng)等. 
            創(chuàng)建環(huán)境變量. 
            定義DOS符號聯(lián)接. 
            創(chuàng)建附加的頁面調(diào)度文件. 
            從HKEY_LOCAL_MACHINESYSTEMCurrentControlSetSession ManagerBootExecute找出引導(dǎo)時加載的NATIVE APPLICATION. 通常有CHKDSK.EXE等. 
            調(diào)用CONFIG MANAGER完成對 HKEY_LOCAL_MACHINESAM,HKEY_LOCAL_MACHINESAMSECURITY, HKEY_LOCAL_MACHINESOFTWARE配置. 
            然后加載WIN32K.SYS.這時系統(tǒng)就被切換到圖形狀態(tài). 
            啟動WIN32子系統(tǒng).即CSRSS.EXE. 
            啟動WINLOGON.EXE. 
            創(chuàng)建用于調(diào)試的LPC端口,并創(chuàng)建線程來監(jiān)視. 
            完成了這些工作后,SMSS就永遠(yuǎn)等待WINLOGON和CSRSS的進程對象.把自己掛起. 
            WINLOGON在被啟動后.啟動SCM(服務(wù)管理器).將所有的"自動啟動"的SERVICE啟動起來.當(dāng)然,WINLOGON并不等待任何SERVICE的完成啟動.很有可能用戶已經(jīng)登陸而SERVICE沒有啟動出來.當(dāng)用戶的START組里有某些應(yīng)用程序需要依賴于某些SERVICE的存在的話,就有可能出錯.
            當(dāng)所有的SERVICE啟動無誤后,現(xiàn)在HKEY_LOCAL_MACHINESYSTEMCurrentControlSet就成為了LAST KNOWN GOOD CONTROL SET. 
            當(dāng)啟動SCM后,WINLOGON就創(chuàng)建個工作站,代表KBD,MOUSE,MONITOR.并確保連SERVICE也不能訪問該工作站,以保證安全性.當(dāng)工作站創(chuàng)建好后,就打開3個桌面.APP,SCR SAVER,WINLOGON.然后就是建立LSA和LPC聯(lián)接.用于登陸.注銷.口令操作. 
            通過調(diào)用LsaLookupAuthenticationPackage獲取MSV1_0的相關(guān)ID,用于驗證身份.創(chuàng)建WINLOGON窗口類.確保SAS序列鍵按下后窗口過程被調(diào)用.只有WINLOGON桌面解鎖后才能切換到其他應(yīng)用程序桌面. 
            在LOGON時,WINLOGON調(diào)用GINA來確認(rèn)用戶登陸.(這樣也提供了一個替換NT本身登陸驗證操作的方法)當(dāng)用戶驗證身份完畢,登陸成功,桌面就被解鎖.并且調(diào)用USERINIT.EXE.該程序會查找出用戶的SHELL并啟動他.然后自己就結(jié)束生命.
            就這樣,一個操作系統(tǒng)就完全啟動了。

            本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/yxin1322/articles/617595.aspx

            posted on 2009-09-15 18:02 Tim 閱讀(585) 評論(0)  編輯 收藏 引用 所屬分類: windows系統(tǒng)

            <2012年11月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678

            導(dǎo)航

            統(tǒng)計

            公告

            本博客原創(chuàng)文章,歡迎轉(zhuǎn)載和交流。不過請注明以下信息:
            作者:TimWu
            郵箱:timfly@yeah.net
            來源:m.shnenglu.com/Tim
            感謝您對我的支持!

            留言簿(9)

            隨筆分類(173)

            IT

            Life

            搜索

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            久久精品亚洲福利| 麻豆AV一区二区三区久久| 久久99免费视频| 久久艹国产| 久久无码AV中文出轨人妻| 久久久久亚洲AV无码麻豆| 久久这里只有精品首页| 久久只这里是精品66| 久久夜色精品国产欧美乱| 九九热久久免费视频| 国产99久久久国产精品小说| 中文字幕一区二区三区久久网站| 久久中文字幕精品| 精品久久久久久国产三级| 久久久无码人妻精品无码| 婷婷久久综合九色综合绿巨人| 久久精品a亚洲国产v高清不卡| 久久久久99精品成人片三人毛片| 国内精品久久久久久99蜜桃 | 久久久精品人妻一区二区三区蜜桃 | 国产精品欧美久久久天天影视 | av无码久久久久不卡免费网站| 国产精品九九久久精品女同亚洲欧美日韩综合区| 久久亚洲国产成人精品无码区| 国产精品久久一区二区三区| 亚洲精品白浆高清久久久久久| 中文字幕精品久久久久人妻| 国产伊人久久| 国产精品丝袜久久久久久不卡 | 亚洲狠狠综合久久| 无码人妻精品一区二区三区久久久| 2020国产成人久久精品| 久久午夜综合久久| 亚洲第一永久AV网站久久精品男人的天堂AV | 久久久久亚洲AV无码永不| 囯产精品久久久久久久久蜜桃| 四虎影视久久久免费观看| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 国产精品久久久天天影视| 精品久久久久久无码专区| 97超级碰碰碰久久久久|