002-發生在操作系統之前的事情

       操作系統這個概念應當來說,在計算機的層析結構中處於正中間的位置。計算機本身是由一系列電子元件和芯片組成,這些根據相應規則組成的電子電路就形成了計算機硬件。對於邏輯電路的設計來說,其實我們任何的需求都是可以直接用硬件來實現的,但是,由於我們幾乎無法實現預測到計算機將要完成的所有事情,因此,純硬件編程幾乎是不可能的,即便是可以再一定的範圍之內實現純硬件結構,硬件的成本也是相當驚人的,因此,我們有必要找到一種折中的方法,讓我們可以隨時添加和更改我們希望計算機實現的工作,通過轉換讓計算機使用有限的硬件就可以完成。這便是軟件。

       總有這麼一款軟件需要起着承上啓下的作用,它需要直接來操作硬件,與此同時,承載着在其之上的軟件。換句話說,它要爲別的軟件提供一個平臺,它自己來操作計算機硬件,然後別的軟件來操作它。並且,還要有一個理念,那就是讓其他軟件具有高度可移植性。也就是說,操作具體硬件的工作在不同體系的計算機上實現的方式是不同的,但是這款軟件卻可以把它們統一起來,提供一個相對應的接口,之後,所有的軟件都基於這個軟件所提供的接口上進行設計,也就可以讓同一款軟件間接地操控了不同體系的計算機。而這樣的軟件,就被稱爲操作系統內核(OS Core),而基於操作系統內核之上開發出的軟件就叫做應用軟件。

       隨着計算機越來越普及化,計算機被使用在生活的方方面面,因此,我們有必要來降低用戶對計算機操作的門檻。一些常用的應用軟件和通用設備的驅動軟件就應當與操作系統內核集成在一起,形成一套成熟的用戶交互平臺,這就有了我們今天的操作系統(Operating System)。

       總結一下就是說,操作系統應該首先具有內核,它可以直接驅動計算機硬件,並且爲應用軟件提供一個平臺,使之具有高度可移植性;其次還應當集成一些常用的應用軟件,形成一套用戶交互體系。

       所以我們首先就應當決定我們的操作系統到底應該運行在什麼樣的設備上。所謂操作計算機硬件,其核心爲操作計算機CPU和內存。內存一般是與CPU相匹配的,因此我們決定操作系統架構的主導因素就是CPU。CPU的硬件設計理念決定了其硬件的工作方式,硬件的工作方式決定了它支持哪些微命令(直接操作硬件的邏輯指令),而支持的微命令決定了它的指令集。目前主流的CPU指令集有RISC和SISC,由於SISC誕生時間較早,應用較廣泛,所以也較爲基礎。目前90%以上的桌面端計算機都使用的是SISC指令集,而SISC指令集中最具有影響力的就屬Intel x86架構了。x86架構指的是Intel 80386上所使用的架構,Intel 80386是一款32位處理器。之所以選用這個架構是因爲,現在大多數的計算機都是x86或x64架構的,而x64架構是兼容x86架構的,所以我們進行實驗會比較方便,而且對我們今後的幫助是比較打的,入手也較爲容易。

       當然了,要想真正的做出一款名副其實的操作系統,一個人的力量是微乎其微的,我們看微軟也好,蘋果也好,谷歌也好,都是一個非常大的團隊在經歷的很長時間的風雨才能製作出一款我們大家所認可的操作系統的,因此,這是一項非常浩大的工程,而我們作爲學習,主要還是領悟精神,學習核心的東西,爲以後發展打下堅實的基礎。

       現在操作系統也發展迅猛,不過由於很多歷史原因,核心的東西一直沒有改變。在本人的觀點看來,所謂的“復古學習”和所謂的“激進學習”都是偏激的學習方法,並不是說我們要研究底層操作系統,我們就應該弄個80386的機器來,也並不是說因爲現在設備都很先進,所以我們一上手就來操作這些先進設備。本人認爲最好的學習方法就是藉助先進的設備的便利來創造更好的學習環境,打好基礎再慢慢日益壯大。所以,本人要利用很多便利的軟件來搭建出一個模擬的x86環境,也會利用很多方便的工具來減輕我們的工作量。

       本人所使用的機器是微軟公司在2016年發佈的Surface Book,CPU是Intel Core i5 6300U,內存是8GB LPDDR3,操作系統是Windows 10 Pro。在此之上使用VMware Workstation來搭建一個虛擬的x86環境來運行每一階段所書寫的操作系統。因此本系列文章的一切實體機的操作(例如按下電源鍵)都指的是在虛擬環境下的對應虛擬動作。由於VMware是利用軟件來模擬硬件環境的,因此我們仍然可以看到我們的程序在實際計算機上的運行的狀態(雖然也會有差異,但我們還是應當相信它)。

       這裏繼續介紹關於剛纔提到的x86架構,這裏的架構和指令集之間的關係是什麼呢?簡單來說,就是我們的那些Intel大神們對SISC指令集的第一次封裝。由於CPU芯片的內部構造和生產工藝屬於商業機密,因此,Intel不可能把它直接告訴你讓你來操作,而且話又說回來,就算真的告訴你了你就會操作嗎?等過幾天Intel再生產一個新的芯片,難道說我們的操作系統內核也要重新寫嗎?爲此,Intel就對這些最底層的硬件控制進行了第一層封裝,在我們啓動計算機以後,計算機會先執行這些實現編寫好的指令(以前用硬指令,後來發展爲ROM存儲指令,再後來發展爲EPROM),我們就可以通過其提供的一些接口來完成很多事情,這部分硬件就叫做BIOS(Basic Input Output System)。

  在計算機電源剛接通的時候,計算機會加載BIOS,此時,硬件的狀態是完全暴露出來的,我們的任何行爲都是直接對硬件進行操作的,所以此時的計算機是實模式運行。內存會以一個字節爲單位進行地址編排,在實模式下我們操作的內存地址就是內存實際的物理地址。我們就需要通過實模式來在內存中書寫一些指令,來實現我們操作系統的目的。

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