亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

Linux啟動過程全接觸1
2007-08-13   中國IT實驗室

關于Windows啟動過程介紹的文章可謂多如牛毛,而對于Linux的介紹卻是鳳毛麟角。凡是曾經使用過Linux的用戶可能都會注意到,當計算機啟動時,屏幕上會出現很多信息。一般情況下,這些信息我們可以通過以下的命令看到:cat /var/log/dmesg | more這些信息究竟有什么含義?這個問題看起來似乎很容易回答,因為只要在Linux參考書里查找一下,就會找出一個類似于這樣的答案:“這是一些內核啟動信息……”。但是“內核啟動信息”到底是什么意思呢?

  要想對Linux內部工作有所了解,就必須要對Linux內核的體系結構有一個全面的了解。下面我們就去揭開它的秘密。在此,我不想解釋Linux內核的體系結構,只想解釋(或者說是試圖去解釋)計算機系統啟動進程中一些最基本的概念。這里所說的啟動過程是指從按下開關到提示符出現的整個過程。

  啟動指的是什么

  在操作系統的詞匯里,啟動是指通過處理器執行一些指令,把操作系統的一部分放入到主存中。在啟動過程中,Linux內部的數據結構會被初始化,會被賦給一些初始值,并且某些進程會被創建。因為當計算機電源打開時,所有的硬件設備都處于一種不可預知的狀態,內存也處于一種不活動的隨機狀態,所以,計算機的啟動過程可以說是一個長且復雜的任務。因此,我們必須知道,之所以叫“啟動”主要是因為計算機體系結構的原因。

  在此提請讀者注意:

  1.對計算機內部的工作和內核的操作有一個基本的了解,對自己非常有益。

  2.這篇文章中提到的所有文件,指的都是Linux內核2.4.2-2版本里的文件。這些文件對于所有的Linux內核來說都是相同的,并且可以在任何一個Linux系統里找到它們,此處我使用的是Red Hat 7.1。

  3.在本文里,討論范圍限于IBM PC體系結構。

  BIOS及其功能

  當計算機打開電源時,內存里包含的是一些隨機的數據,所有的東西都沒有被初始化,操作系統也沒有被加載。開始整個啟動過程的是一個特殊的硬件電路,它觸發CPU的Reset腳的邏輯值。然后,一些CPU的寄存器比如CS(一個分段寄存器:代碼段寄存器,它指向含有程序指令的段),eip(在執行指令過程中,當CPU檢測到一個意外事故發生時,它會做出三種類型的判斷:錯誤、陷阱、中止,這取決于eip寄存器的值,它存儲在內核模塊棧里)就會被給定一個值。接著,物理地址為0xfffffff0的代碼將被執行。這個地址被存儲在一個只讀存儲器(ROM)里。BIOS(基本輸入/輸出系統)實際上是一段存儲在ROM里的程序。它包含了一系列可以被某些操作系統調用,用于處理計算機各種硬件設備的中斷驅動和低級程序。其中微軟的DOS就是這樣的一種操作系統。

  Linux是否使用附于計算機系統的BIOS來初始化硬件設備?或者說,是否有其它的東西來完成同樣的任務?不過這個問題沒有那么簡單,必須要了解一些知識。我們從80386模式開始。Intel微處理器實現地址翻譯(從邏輯地址->線性地址->物理地址)有兩種不同的途徑,分別稱作實模式和保護模式。實模式存在主要是為了使得處理器可以和較老的處理相兼容。事實上,所有的BIOS程序都是在實模式下運行的。但是,Linux內核是在保護模式下運行,而不是在實模式下。因此,一旦初始化完成后,Linux就不再使用BIOS,而是完全由自己來為計算機上的所有硬件提供驅動程序(這點和DOS是不一樣的)。

  那么什么時候Linux使用保護模式?為什么BIOS不能使用相同的模式?BIOS使用實模式是因為其在操作過程中使用的是實模式地址,并且在計算機剛打開電源時,只有實模式地址可用。一個實模式地址由段地址和偏移地址組成,因此,相應的物理地址就為段地址×(2×8)+偏移。

  那么,這是不是意味著在整個啟動過程中,Linux就從來不使用BIOS了呢?答案是否定的。在啟動階段,Linux從硬盤或者其它外部設備加載內核時,需要使用BIOS。

  讓我們來看一下啟動時BIOS主要做了哪些操作:

  1.BIOS要對硬件進行一系列徹底的檢測。這個步驟主要是檢查系統安裝有哪些設備,以及它們工作是否正常。通常把這個步驟叫做自檢(Power-On Self-Test,POST),這時會顯示版本及其它很多相關的硬件信息。

  2.BIOS要對硬件進行初始化。這一步非常重要,因為它要保證所有的硬件設備在IRQ(中斷請求)和I/O端口操作時都沒有沖突。等這步完成以后,它會顯示一個已經安裝的PCI設備表。

  3.接著到了操作系統,BIOS將查找一個可以引導的操作系統。這取決于BIOS的設置,它可以從軟盤、硬盤或者光盤啟動。

  4.一旦發現一個合法的設備,BIOS就會把其第一扇區的內容復制到物理地址,即從0x00007c00開始的內存中,然后跳至剛加載的地址并執行之。

  到此為止,BIOS所要做的工作就全部完成了。

熱詞搜索:

上一篇:Linux DNS的負載均衡及子域委派3
下一篇:Linux啟動過程全接觸2

分享到: 收藏