計算機是如何啟動的呢?
要啟動一台計算機,必須要讓啟動程式先執行,機器才能隨之啟動。然而通常又是,只有在機器啟動後,程式才能執行,這本身就是自相矛盾的。pull oneself up by one`s bootstrap,也就是某人通過自己的鞋帶將自己拉起來,也顯然是不可能的。
所以必須實現乙個機制,讓作業系統還未執行的時候,就注入一段啟動程式在記憶體中執行,這就是bios程式。當你點選電源按鈕後,cpu會自動定址到0xffff0,然後讀取bios程式到記憶體中執行,bios會進行硬體自檢,即檢查計算機硬體是否正常,如果一切正常,bios會進入下乙個啟動程式,然而它並不知道該啟動程式在**,可能在磁碟上,也可能在u盤中,也有可能通過網絡卡獲取,所以需要使用者自己選擇,計算機缺省會選擇第乙個(通常是磁碟),當然這個順序是可以調整的,這就是boot sequence。
如果是從磁碟啟動,那麼計算機會讀取磁碟的第乙個扇區mbr,也就是引導程式(最前面的512b,主引導記錄 master boot record)。
mbr由三個部分組成:
(1) 第1-446位元組:呼叫作業系統的機器碼(boot loader)。其中,第二部分"分割槽表"的作用,是將硬碟分成若干個區,因為每個區可以安裝不同的作業系統。如果最後兩個位元組-主引導記錄簽名是0x55和0xaa,那麼說明該裝置可以啟動(如果不是的話,就在boot sequence中依次選擇下一項進行啟動,例如u盤)。(2) 第447-510位元組:分割槽表(partition table)。
(3) 第511-512位元組:主引導記錄簽名(0x55和0xaa)。
如果裝置可以啟動,那麼計算機會首先讀取"主引導記錄"前面446位元組的機器碼,執行「啟動管理器」(boot loader,現在最流行的啟動管理器是grub),由使用者選擇啟動哪乙個作業系統。之後,boot loader會定位到某個特定的磁碟分割槽,並將作業系統核心(/boot)載入到記憶體,核心載入成功後,第乙個執行的程式是/sbin/init,所有其他程序都是由init程序fork出來的。
計算機是如何啟動的
感謝作者!從開啟電源到開始操作,計算機的啟動是乙個非常複雜的過程。我一直搞不清楚,這個過程到底是怎麼回事,只看見螢幕快速滾動各種提示.這幾天,我查了一些資料,試圖搞懂它。下面就是我整理的筆記。零 boot的含義 先問乙個問題,啟動 用英語怎麼說?回答是boot。可是,boot原來的意思是靴子,啟動 ...
計算機是如何啟動的?
從開啟電源到開始操作,計算機的啟動是乙個非常複雜的過程。我一直搞不清楚,這個過程到底是怎麼回事,只看見螢幕快速滾動各種提示.這幾天,我查了一些資料,試圖搞懂它。下面就是我整理的筆記。零 boot的含義 先問乙個問題,啟動 用英語怎麼說?回答是boot。可是,boot原來的意思是靴子,啟動 與靴子有什...
計算機是如何啟動的?
從開啟電源到開始操作,計算機的啟動是乙個非常複雜的過程。我一直搞不清楚,這個過程到底是怎麼回事,只看見螢幕快速滾動各種提示 這幾天,我查了一些資料,試圖搞懂它。下面就是我整理的筆記。零 boot的含義 先問乙個問題,啟動 用英語怎麼說?回答是boot。可是,boot原來的意思是靴子,啟動 與靴子有什...