溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

操作系統之起源(一)

發布時間:2020-08-14 09:56:04 來源:網絡 閱讀:1883 作者:上帝之子521 欄目:系統運維

        從今天開始,我們來進行一個微型的操作系統(基于 x86 架構)的編寫。當然了,也是跟著別人學習,只是為了做個總結。將之記錄下來,和大家一起學習,也方便日后進行復習。

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

操作系統之起源(一)

        我們看到在最上層是應用層,也就是我們平時所說的軟件開發層。而軟件開發又分為兩種:用戶軟件開發和編譯軟件的開發。接下來便是操作系統了,操作系統提供了軟件運行的環境和各種服務與接口。再往下便是 BIOS,對于這個詞,我們裝過電腦系統的人都知道,后面會進行詳細的分析。最底下便是硬件層了,它為操作系統提供所必需的硬件環境。

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

        下來我們來看看 x86 架構的系統啟動流程,如下圖所示

操作系統之起源(一)

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

        那么 BIOS 如何在存儲介質中尋找主引導區呢?進而如何判斷引導區中有沒有主引導程序呢?下來我們先來介紹下主引導區,它的簡寫為:MBR,即 Master Boot Record。MBR 位于存儲介質的最開始位置處,大小為 512 字節;它的特點是前 512 字節的最后 2 個有效字節為 0x55aa;它的數據是 0x55aa 之前的數據都被視為主引導程序。那么前 512 字節是否一定為 MBR 呢?不一定哦!如果判斷是主引導區,進而將主引導程序加載到內存中,當運行完之后,有可能會發現它是不合法的,進而執行出錯。所以說,主引導區存儲的程序不見得就是一個合法可用的程序。那么怎么進行判斷是否是合法可用的程序呢?我們將在下節博客中進行介紹。

        下來我們來看看更加詳細的系統啟動流程,如下圖所示

操作系統之起源(一)

        在運行 BIOS 后,先進行存儲介質的掃描,如果在存儲介質中存在 MBR,那么便開始加載主引導程序,地址為 0x7c00;接著將控制權交由主引導程序執行,進行軟件的初始化,最后加載運行操作系統內核,進行系統的初始化。那么通過今天對操作系統的基礎知識的學習,總結如下:1、BIOS 是計算機上電后第一個運行的程序;2、BIOS 進行必要的初始化,并加載運行主引導程序;3、主引導程序位于存儲介質的最開始的 512 字節處;4、主引導程序負責后續的初始化,并加載運行操作系統內核。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女