計算機硬件結構

  前言

  我們每天都在使用計算機,每天都要啓動和關閉計算機,但是你瞭解過計算機是由那些部件組成的嗎?計算機是怎樣啓動的?計算機的程序是怎樣運行的?

  那麼下面我們來認識一下吧。



  一、計算機硬件結構


    計算機是由機箱、電源、主板、硬盤、內存條、CPU、顯卡、光驅、顯示器、鼠標、鍵盤、音響等組成的。

    深入一點來說,計算機由運算器(數學運算器、加法器、邏輯運算器)、控制器(與運算器一起被稱爲CPU)、儲存器(內存、使用平面編址方式區分地址)以及I/O設備(輸入設備與輸出設備)組成。



  二、計算機啓動原理


    這裏還是需要先介紹一下兩個基本而重要的概念。


      BIOS:即“Basic Input/Output System”(基本輸入輸出系統),它是一組被“固化”在計算機主板上的一塊ROM中直接關聯硬件的程序,保存着計算機最重要的基本輸入輸出的程序、系統設置信息、開機後自檢程序和系統自啓動程序,其主要功能是爲計算機提供最底層的、最直接的硬件設置和控制,它包括系統BIOS(主板BIOS).其它設備BIOS(例如IDE控制器BIOS、顯卡BIOS等)其中系統BIOS佔據了主導地位.計算機啓動過程中各個BIOS的啓動都是在它的控制下進行的.


      內存地址:我曾在虛擬內存的介紹中提到過它,我們知道,內存空間的最基本單位是位,8位視爲一個字節,即我們常用的單位B,內存中的每一個字節都佔有一個地址(地址是爲了讓CPU識別這些空間,是按照16進製表示的),而最早的8086處理器只能識別1MB(2的20次方B)的空間,這1MB內存中低端(即最後面)的640KB就被稱爲基本內存,而剩下的內存(所有的)則是擴展內存。這640KB的空間分別由顯存和各BIOS所得。


      現在正式開始介紹計算機的啓動過程(從打開電源到操作系統啓動之前)


      1、當電源開關按下時,電源開始向主板和其他設備供電,此時電壓並不穩定,於是,當主板認爲電壓並沒有達到CMOS中記錄的CPU的主頻所要求的電壓時,就會向CPU發出RESET信號(即復位,不讓CPU進一步運行),不過僅一瞬間不穩定的電壓就能達到符合要求的穩定值,此時復位信號撤銷,CPU馬上從基本內存的BIOS段讀取一條跳轉指令,跳轉到BIOS的真正啓動代碼處,如此,系統BIOS啓動,此後的過程都由系統BIOS控制。


      2、系統BIOS啓動後會進行加電自檢POST(Power On Self Rest)。不過這個過程進行得很快,它主要是檢測關鍵設備(如電源、CPU芯片、BIOS芯片、基本內存等電路是否存在以及供電情況是否良好。如果自檢出現了問題,系統喇叭會發出警報聲(根據警報聲的長短和次數可以知道到底出現了什麼問題)。


      3、如果自檢通過,系統BIOS會查找顯卡BIOS,找到後會調用顯卡BIOS的初始化代碼,此時顯示器就開始顯示了(這就是爲什麼自檢失敗只能靠發聲進行提醒了)。顯卡BIOS會在屏幕上顯示顯卡的相關信息(不過現在的筆記本似乎並不顯示這個)。


      4、顯卡檢測成功後會進行其他設備的測試,通過後系統BIOS重新執行自己的代碼,並顯示自己的啓動畫面,將自己的相關信息顯示在屏幕上,而後會進行內存測試(這些在現在的計算機上也看不到了),僅僅是短暫出現系統BIOS設置頁面,此時就可以對系統BIOS進行需要的設置了,完成後會重新啓動。


      5、此後BIOS會檢測系統的標準硬件(如硬盤、軟驅(雖然現在很多計算機已沒有軟驅了)、串行和並行接口等),檢測完成後會接着檢測即插即用設備,如果有的話就爲該設備分配中斷、DMA通道和I/O端口等資源,到了這裏,所有的設備都已經檢測完成了,老機會進行一次清屏並顯示一個系統配置表,如果和上次啓動相比出現了硬件變動,BIOS還會更新ESCD,即“Extended System Configuration Data”(擴展系統配置數據),它是系統BIOS用來與操作系統交換硬件配置信息的數據,這些數據被存放在CMOS中。現在的機器則不再顯示這些了。


      6、當上面的所有步驟都順利進行以後,BIOS將執行最後一項任務:按照用戶指定的啓動順序進行啓動(即我們經常需要用到的設置系統從哪裏啓動,一般默認是硬盤,如果需要安裝系統,還會設置爲光驅或USB設備),注意,這裏是指的啓動順序,如果設置爲從光驅啓動,而光驅中又沒有光盤的話,系統還是會接着從硬盤啓動的。


      至此,操作系統啓動之前的所有啓動步驟都完成了,如果從硬盤啓動的話,接着就是操作系統的啓動過程了,關於這一部分,不同的系統也是存在差別的,我們謹以xp和vista爲例,由於內容較多,就下一次再介紹吧。


      下面是上面的啓動過程的流程圖,對照此圖理解上面的內容可能會更方便些:

wKioL1ZKnGuBABX7AABV3ek-Hio244.jpg

wKiom1ZKnBvBFPADAABkGchGowE223.jpg

wKioL1ZKnGyTQlFaAAB_1ZklOlU455.jpg


    操作系統啓動之前的計算機啓動過程我已經在《計算機啓動過程圖文詳解(一)----計算機初始化啓動過程》一文中詳細介紹過,今天就介紹一下初始化啓動後的操作系統的啓動過程。


      我們只介紹Windows系統的啓動,由於vista和windows7操作系統的啓動採用了全新的方式,所以這裏需要對xp和Vista(Windows7與之基本相同)分別介紹。爲了不至於導致大家看不明白,我只介紹一個大概的過程。


      xp系統的啓動


      當系統BIOS完成初始化後,會將控制權交給主引導紀錄(即MBR:Master Boot Record),MBR會檢查硬盤分區表,找到硬盤上的引導分區,然後將引導分區上的操作系統引導扇區調入內存,並執行其NTDLR文件。


      NTDLR會將微處理器從實模式(此模式下計算機認爲內存爲64KB,其他未擴展內存)轉換爲32位的平面內存模式(此模式下認爲CPU可識別的所有內存均是可用內存)。然後,NTDLR啓動mini-file system drivers以便它能夠識別所有采用NTFS和FAT(FAT32)文件系統的硬盤分區。


      此後NTLDR會讀取boot.ini文件,以決定應該啓動哪一個系統,如果boot.ini中僅顯示了一個系統或者將timeout(系統選擇頁面停留時間)參數設爲0的話,這個系統選擇頁面就不會出現而是直接啓動默認的系統。


      而如果boot.ini中含有多個啓動引導項,當選擇了不同的系統後計算機接下來的啓動流程就會產生區別,如果選擇的不是xp,NTLDR會讀取bootsect.dos來啓動相應系統,如果選擇了xp的話,就會接着轉入硬件檢測階段。


      在這個階段,ntdetect.com會收集計算機的硬件信息列表並將其返回到NTLDR中,以便以後將這些信息寫入註冊表(具體而言是HKEY_LOCAL_MACHINE下的hardware)中。


      然後會進行硬件配置選擇,如果計算機含多個硬件配置,會出現配置選擇頁面,如果僅有一個的話,系統直接進入默認配置。


      此後開始加載xp內核,NTLDR首先加載ntoskrnl.exe(即xp系統內核),不過此時並未初始化內核,而是緊接着加載了硬件抽象層(即HAL,一個hal.dll文件),然後加載底層設備驅動程序和需要的服務。


      完成這些後纔開始初始化內核,此時我們就能看到xp的LOGO和啓動進度條了,在進度條運動的過程中,內核使用剛纔ntdetect.com收集到的意見配置信息創建HKEY_LOCAL_MACHINE的hardware鍵。然後創建計算機數據備份,初始化並加載設備驅動程序,Session Manager啓動xp的高級子系統及其服務並有win32子系統啓動Winlogon進程。


      Winlogon.exe會啓動Local Security Authority,此時會顯示xp的歡迎屏幕或者登陸確認框(如果設置了多賬戶或密碼的話)。這個時候,系統還在繼續初始化剛纔沒有完成的驅動程序。


      歡迎屏幕結束或者用戶正確登陸後, Service Controller最後還需要檢查是否還有服務需要加載並進行加載。此後xp桌面出現,系統啓動完成。


       Vista(Windows7)的啓動


      Vista和Windows7的啓動過程就簡單多了(其實是將啓動步驟進行了簡化),它採用了全新的啓動方式。具體如下:


      MBR得到控制權後,同樣會讀取引導扇區,以便啓動Windows啓動管理器的bootmgr.exe程序,


      Windows啓動管理器的bootmgr.exe被執行時就會讀取Boot Confi guration Data store(其中包含了所有計算機操作系統配置信息)中的信息,然後據此生成啓動菜單,當然,如果只安裝了一個系統,啓動引導選擇頁不會出現,而如果安裝並選擇了其他系統,系統就會轉而加載相應系統的啓動文件。


      啓動Vista時,同樣會加載ntoskrnl.exe系統內核和硬件抽象層hal.dll,從而加載需要的驅動程序和服務。


     內核初始化完成後,會繼續加載會話管理器smss.exe(注意,正常情況下這個文件存在於Windows/system32文件夾下,如果不是,很可能就是病毒)。


      此後,Windows啓動應用程序wininit.exe(正常情況下它也存在於Windows/system32文件夾下,如果不是,很可能是病毒)會啓動,它負責啓動services.exe(服務控制管理器)、lsass.exe(本地安全授權)和lsm.exe(本地會話管理器),一旦wininit啓動失敗,計算機將會藍屏死機。


      當這些進程都順利啓動之後,就可以登錄系統了。至此,Vista(Windows7)啓動完成。


      另外,補充一點小知識:我們知道,在Vista或Windows7系統下安裝xp後,開機時就會直接啓動xp,並不出現系統啓動的選擇頁,這是因爲安裝xp時,它會重寫MBR而將Vista或Windows7的引導記錄覆蓋掉,而在xp下安裝Vista或Windows7後就不存在這個問題了,這是因爲雖然Vista和Windows7雖然也會覆蓋引導記錄,但是它也會將原有的引導程序保存,引導權雖然同樣被Vista或Windows7搶奪,但由於它們支持跳轉到以前的引導程序上,所以可以直接顯示多系統頁面。


      最後,由於時間關係,我沒有專門製作流程圖,就附上找到的一張系統啓動流程圖吧。此圖比較簡單,並沒有列出全部的啓動流程,但附帶了計算機初始化啓動的過程,比較全面了。如圖:

wKioL1ZKnSrxDsCGAAV-ZH8o7xE245.jpg

轉載:玄鑑 > 《我的圖書館》 


  三、計算機程序運行

    

    程序:指令+數據

RAM:隨機儲存器,如電腦內存條

ROM:只讀儲存器,如電腦bios佔的內存

    cpu讀取內存中的指令和數據來實現程序運行

    cpu由運算器、控制器、寄存器等組成,一個簡單的加法運算:1、控制器讀取內存控制數據,2、控制器將內存中被加數數據發至運算器,3、運算器將被加數暫存只寄存器,4、控制器將內存中加數數據發送至運算器,5,運算器將被加數和加數進行加法運算髮送至內存。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章