操作系統(tǒng)之起源(一)

        從今天開始,我們來進(jìn)行一個(gè)微型的操作系統(tǒng)(基于 x86 架構(gòu))的編寫。當(dāng)然了,也是跟著別人學(xué)習(xí),只是為了做個(gè)總結(jié)。將之記錄下來,和大家一起學(xué)習(xí),也方便日后進(jìn)行復(fù)習(xí)。

科爾沁網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),科爾沁網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為科爾沁上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個(gè)售后服務(wù)好的科爾沁做網(wǎng)站的公司定做!

        那么什么是操作系統(tǒng)呢?我們常見的操作系統(tǒng)有:Windows、Unix、Linux、Mac OS、Android 以及 iOS 等。簡單來說,操作系統(tǒng)是直接運(yùn)行于硬件之上的計(jì)算機(jī)程序。它的一個(gè)作用是用于管理和控制計(jì)算機(jī)的硬件與軟件資源;另一個(gè)重要的作用是為用戶軟件的開發(fā)提供必要的服務(wù)和接口。下來我們來看看現(xiàn)代計(jì)算機(jī)系統(tǒng)的架構(gòu),如下圖所示

操作系統(tǒng)之起源(一)

        我們看到在最上層是應(yīng)用層,也就是我們平時(shí)所說的軟件開發(fā)層。而軟件開發(fā)又分為兩種:用戶軟件開發(fā)和編譯軟件的開發(fā)。接下來便是操作系統(tǒng)了,操作系統(tǒng)提供了軟件運(yùn)行的環(huán)境和各種服務(wù)與接口。再往下便是 BIOS,對于這個(gè)詞,我們裝過電腦系統(tǒng)的人都知道,后面會(huì)進(jìn)行詳細(xì)的分析。最底下便是硬件層了,它為操作系統(tǒng)提供所必需的硬件環(huán)境。

        我們下來來看看 BIOS,它的全名為 "Basic Input & Output System"。BIOS 的本質(zhì)也是一段程序,它是計(jì)算機(jī)上電后第一個(gè)運(yùn)行的程序。它所做的工作主要分為以下幾個(gè):a> 首先檢測硬件狀態(tài),檢測通過后立即進(jìn)行硬件初始化;b> 它會(huì)在內(nèi)存中建立中斷向量表,其作用是提供硬件訪問的方法;c> 最后便是將控制權(quán)交由主引導(dǎo)程序執(zhí)行,進(jìn)入操作系統(tǒng)。注意:BIOS 不是軟件(Software),而是固件(firmware)!那么什么是固件呢?固件是固化于硬件中的程序,在硬件出廠前已經(jīng)燒寫固定。

        下來我們來看看 x86 架構(gòu)的系統(tǒng)啟動(dòng)流程,如下圖所示

操作系統(tǒng)之起源(一)

        我們看到先是系統(tǒng)硬件上電,接著運(yùn)行 BIOS,初始化硬件;緊接著建立中斷向量表,加載運(yùn)行主引導(dǎo)程序;軟件初始化,加載運(yùn)行操作系統(tǒng)內(nèi)核,最后是系統(tǒng)初始化。那么 BIOS 是如何被運(yùn)行起來的呢?下來我們來看看 BIOS 的運(yùn)行機(jī)制。BIOS 存儲(chǔ)于 ROM 中,地址映射為 0xF0000 - 0xFFFFF(物理地址),它的入口地址為 0xFFFF0。那么在硬件電路的特殊設(shè)計(jì)下,會(huì)使得系統(tǒng)在開機(jī)后,CPU 從 0xFFFF0處開始執(zhí)行。BIOS 會(huì)按照用戶設(shè)置來掃描各個(gè)存儲(chǔ)介質(zhì)(光驅(qū)、軟驅(qū)、U 盤等),在發(fā)現(xiàn)主引導(dǎo)區(qū)后,將主引導(dǎo)區(qū)中的主因到程序載入內(nèi)存;主因到程序在內(nèi)存中的入口地址為 0x7c00,最后將控制權(quán)交由主引導(dǎo)程序執(zhí)行。怎么交給呢?其實(shí)也就是一句指令:jmp0x7c00

        那么 BIOS 如何在存儲(chǔ)介質(zhì)中尋找主引導(dǎo)區(qū)呢?進(jìn)而如何判斷引導(dǎo)區(qū)中有沒有主引導(dǎo)程序呢?下來我們先來介紹下主引導(dǎo)區(qū),它的簡寫為:MBR,即 Master Boot Record。MBR 位于存儲(chǔ)介質(zhì)的最開始位置處,大小為 512 字節(jié);它的特點(diǎn)是前 512 字節(jié)的最后 2 個(gè)有效字節(jié)為 0x55aa;它的數(shù)據(jù)是 0x55aa 之前的數(shù)據(jù)都被視為主引導(dǎo)程序。那么前 512 字節(jié)是否一定為 MBR 呢?不一定哦!如果判斷是主引導(dǎo)區(qū),進(jìn)而將主引導(dǎo)程序加載到內(nèi)存中,當(dāng)運(yùn)行完之后,有可能會(huì)發(fā)現(xiàn)它是不合法的,進(jìn)而執(zhí)行出錯(cuò)。所以說,主引導(dǎo)區(qū)存儲(chǔ)的程序不見得就是一個(gè)合法可用的程序。那么怎么進(jìn)行判斷是否是合法可用的程序呢?我們將在下節(jié)博客中進(jìn)行介紹。

        下來我們來看看更加詳細(xì)的系統(tǒng)啟動(dòng)流程,如下圖所示

操作系統(tǒng)之起源(一)

        在運(yùn)行 BIOS 后,先進(jìn)行存儲(chǔ)介質(zhì)的掃描,如果在存儲(chǔ)介質(zhì)中存在 MBR,那么便開始加載主引導(dǎo)程序,地址為 0x7c00;接著將控制權(quán)交由主引導(dǎo)程序執(zhí)行,進(jìn)行軟件的初始化,最后加載運(yùn)行操作系統(tǒng)內(nèi)核,進(jìn)行系統(tǒng)的初始化。那么通過今天對操作系統(tǒng)的基礎(chǔ)知識(shí)的學(xué)習(xí),總結(jié)如下:1、BIOS 是計(jì)算機(jī)上電后第一個(gè)運(yùn)行的程序;2、BIOS 進(jìn)行必要的初始化,并加載運(yùn)行主引導(dǎo)程序;3、主引導(dǎo)程序位于存儲(chǔ)介質(zhì)的最開始的 512 字節(jié)處;4、主引導(dǎo)程序負(fù)責(zé)后續(xù)的初始化,并加載運(yùn)行操作系統(tǒng)內(nèi)核。

當(dāng)前名稱:操作系統(tǒng)之起源(一)
分享地址:http://muchs.cn/article24/jejece.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)、微信小程序、電子商務(wù)、做網(wǎng)站、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)