計(jì)算機(jī)系統(tǒng)008 - 操作系統(tǒng)概況

本篇開始,將介紹操作系統(tǒng)相關(guān)知識(shí),這一部分的知識(shí)涵蓋操作系統(tǒng)通識(shí)到具體的平臺(tái)。和本系列前面所有文章一樣,力求精簡(jiǎn)但有所突破。

1. 硬件使用回顧

如果已經(jīng)閱讀過(guò)前面的文章,那么應(yīng)該對(duì)計(jì)算機(jī)硬件執(zhí)行計(jì)算的概念有所了解,這里做一下簡(jiǎn)單回顧,也是作為操作系統(tǒng)必要性的基礎(chǔ)。
計(jì)算機(jī)硬件主要可以分為如下四大部分:

  • CPU,包括控制單元CU和執(zhí)行單元EU,執(zhí)行單元其實(shí)還是通過(guò)算術(shù)邏輯單元ALU來(lái)實(shí)現(xiàn)功能
  • 存儲(chǔ)器,包括內(nèi)存、Cache,以及最貼近CPU的寄存器等
  • 輸入輸出設(shè)備,包括鍵盤、鼠標(biāo)、顯示器、磁盤等等
  • 總線,連接上述三種元器件的電氣線纜,起到連通的作用

那么典型的計(jì)算過(guò)程是:

  • 基于CPU支持的指令集ISA編寫任務(wù)描述
  • 通過(guò)輸入設(shè)備輸入到存儲(chǔ)器中,注意這期間使用到了總線
  • CPU執(zhí)行計(jì)算任務(wù),期間同樣使用到了總線
  • 通過(guò)輸出設(shè)備輸出結(jié)果,期間使用到了總線

看起來(lái)也沒(méi)什么問(wèn)題,程序員應(yīng)該有能力獨(dú)立完成上述步驟,順利調(diào)用CPU進(jìn)行計(jì)算。但有一個(gè)問(wèn)題要先引起重視,那就是總線的使用時(shí)機(jī)。

1.1 總線使用

圖中可以看出,總線分為地址總線、數(shù)據(jù)總線、控制總線三種,這里不去討論分類的細(xì)節(jié),畢竟從名稱上所能觀察到的含義足夠使用。思考的問(wèn)題是,為什么總線要分類?

總線之所以要分類,首先是因?yàn)榭偩€總數(shù)有限,就是說(shuō)從硬件層面,不能將每?jī)蓚€(gè)可能發(fā)生通信的組件之間全部用總線相連。既然不能形成點(diǎn)對(duì)點(diǎn)專線,而組件之間又確實(shí)有通信的需求,那就只能采取一個(gè)辦法,共用總線

共用總線是好事,畢竟遠(yuǎn)離CPU的線纜大部分時(shí)候都是處于空閑狀態(tài)的,假如能夠共享硬件總線,無(wú)論是從經(jīng)濟(jì)還是電路設(shè)計(jì)的角度來(lái)講,都是一件節(jié)約成本的事。簡(jiǎn)單的共用無(wú)非就是大家約定俗成,分時(shí)段使用,不過(guò)這樣一點(diǎn)也不高效,畢竟使不使用總線要看任務(wù)描述中的指令順序,要看指令的操作對(duì)象是數(shù)據(jù)、地址還是需要控制。為了更加高效地利用線纜,那么一定需要一個(gè)類似總線控制的單元。該單元管理并維護(hù)著所有總線的使用,擁有調(diào)度的能力,這樣才能夠及時(shí)填補(bǔ)空檔,并有效響應(yīng)其他組件使用總線的需求。

到了這里,就自然明白總線為什么要分類了。分類是為了更好地管理總線,不僅要分,最好是能進(jìn)一步細(xì)分,分類越細(xì),越能在調(diào)度時(shí)提供更多信息支持,越能物盡其用。

說(shuō)了這么些關(guān)于總線使用的問(wèn)題,主要是引出一個(gè)概念:硬件資源獨(dú)占時(shí),可以隨意使用,但帶來(lái)問(wèn)題是使用率低,不經(jīng)濟(jì)。如果要共享,就必須有所謂的控制單元,建立規(guī)則,進(jìn)行管理。否則各個(gè)用戶不僅無(wú)法正常完成自己的計(jì)算任務(wù),而且還很有可能干擾其他人的計(jì)算需求。

1.2 資源管理

如上所述,當(dāng)需要共享某一硬件資源來(lái)達(dá)到提高利用率并同時(shí)保持良好響應(yīng)的目標(biāo)時(shí),就需要有控制單元進(jìn)行管理。對(duì)于計(jì)算機(jī)硬件整體而言,如獨(dú)占使用,每次只運(yùn)行一個(gè)計(jì)算任務(wù),那么只要在總線這一層實(shí)現(xiàn)控制即可。然而如果要運(yùn)行多個(gè)計(jì)算任務(wù),或是多個(gè)用戶共享使用,那就需要一個(gè)控制單元來(lái)完成管理、調(diào)度的功能。而在計(jì)算機(jī)系統(tǒng)中,這個(gè)單元就叫做操作系統(tǒng)。

2. 操作系統(tǒng)

那么不言而喻,操作系統(tǒng)最根本的工作是進(jìn)行資源管理,確保計(jì)算任務(wù)可以正確執(zhí)行。當(dāng)然任何管理總是有管理理念的差異存在,對(duì)應(yīng)的也就是操作系統(tǒng)調(diào)度算法各有側(cè)重。對(duì)比操作系統(tǒng)發(fā)展史,主要有如下兩個(gè)方向:

  • 追求高CPU利用率,即盡可能填滿CPU指令周期。典型的有批處理操作系統(tǒng)、多道操作系統(tǒng)
  • 追求低響應(yīng)時(shí)長(zhǎng),即有更好的交互體驗(yàn)。典型的有分時(shí)操作系統(tǒng)

這兩個(gè)方向有各自相違背的點(diǎn),因?yàn)樗^的低響應(yīng)時(shí)長(zhǎng),就代表著必須能夠中斷執(zhí)行中的任務(wù),而每次中斷,實(shí)質(zhì)上,對(duì)于單個(gè)任務(wù)來(lái)講,都是延長(zhǎng)了總執(zhí)行時(shí)長(zhǎng)的因素。不過(guò)如果能因此服務(wù)于更多用戶、更多計(jì)算任務(wù),甚至更好地將使用到不同組件的任務(wù)同時(shí)執(zhí)行,一點(diǎn)點(diǎn)中斷開銷還是值得的。

2.1 操作系統(tǒng)的定義

道理講到這里,也不能免俗,需要為操作系統(tǒng)下一個(gè)定義。操作系統(tǒng)是一種系統(tǒng)軟件,它管理計(jì)算機(jī)硬件和軟件資源,并向計(jì)算機(jī)應(yīng)用程序提供通用服務(wù)。

換成圖示的話,它在整個(gè)計(jì)算任務(wù)中的位置如下所示:

貌似前文中我們只講到操作系統(tǒng)是管理計(jì)算機(jī)硬件的,但這里的定義中還出現(xiàn)了軟件資源,那么這些軟件資源指的又是什么?

我們知道,所謂軟件、應(yīng)用程序這些名詞代表的無(wú)非是計(jì)算任務(wù)描述,它從根本上是由CPU ISA中指令加上操作對(duì)象有序組合而成。既然核心元素是CPU ISA,而各廠家CPU又有所不同,那么編寫程序時(shí),一定需要根據(jù)具體ISA去編寫。這就帶來(lái)一個(gè)問(wèn)題,每個(gè)軟件想要運(yùn)行在某一CPU上,先要找到手冊(cè),逐字逐句進(jìn)行翻譯(指令映射),才能運(yùn)行。但這些工作其實(shí)都是機(jī)械重復(fù)且低效的,也就意味著要重復(fù)地投入大量人力物力來(lái)完成這個(gè)步驟,然而有一個(gè)設(shè)備很擅長(zhǎng)干這種臟活累活,那就是計(jì)算機(jī)。如果我們可以將指令映射的步驟自動(dòng)化,讀取CPU ISA手冊(cè),自動(dòng)映射,就無(wú)需再手動(dòng)處理。而這個(gè)過(guò)程,就是編譯器的雛形。

所以軟件資源指的是一些基礎(chǔ)功能資源,提供一些基礎(chǔ)功能,以供編寫計(jì)算任務(wù)描述時(shí)使用,簡(jiǎn)化任務(wù)描述的編寫時(shí)間。而也是因?yàn)檫@些基礎(chǔ)軟件資源,對(duì)底層硬件(如CPU)進(jìn)行了封裝(wrap),才使得操作系統(tǒng)可以提供通用服務(wù)。

2.2 操作系統(tǒng)提供了哪些服務(wù)

由于個(gè)人無(wú)法給出準(zhǔn)確定義,而又不能誤人誤己,只能選擇翻譯大牛書籍,書籍名稱為《Operating Systems Internals and Design Principles》 2.1.1小節(jié)內(nèi)容。

通常,一個(gè)完整的操作系統(tǒng)需要提供以下幾個(gè)方面的服務(wù):

  • 程序開發(fā)
    操作系統(tǒng)提供各式各樣的工具和服務(wù),如編輯器、調(diào)試器,用于幫助程序員開發(fā)程序。這些工具按照封裝程度可以進(jìn)一步劃分為以下兩種:

    • Instruction Set Architecture
      指令系統(tǒng)體系結(jié)構(gòu)ISA,定義了操作系統(tǒng)使用的機(jī)器語(yǔ)言指令系統(tǒng)。事實(shí)上,應(yīng)用程序和操作系統(tǒng)均可以直接訪問(wèn)ISA。

    • Applicaiton Binary Interface
      應(yīng)用程序二進(jìn)制接口ABI,定義了操作系統(tǒng)的系統(tǒng)調(diào)用接口,以及在系統(tǒng)中通過(guò)ISA能夠使用的硬件資源和服務(wù)。每個(gè)操作系統(tǒng)或平臺(tái)會(huì)選擇使用一種二進(jìn)制格式作為可執(zhí)行格式,同一程序如需在不同操作系統(tǒng)上實(shí)現(xiàn)可移植,就必須在ABI層進(jìn)行適配。

    • Application Programming Interface
      應(yīng)用程序編程接口API,API封裝了操作系統(tǒng)所提供的硬件資源和服務(wù),使用API可以降低應(yīng)用程序復(fù)雜度,移植時(shí),也可以直接在API層進(jìn)行映射。

  • 程序運(yùn)行
    程序運(yùn)行需要很多步驟,包括加載指令和數(shù)據(jù)、初始化I/O設(shè)備和文件,以及其他相關(guān)資源。有了操作系統(tǒng),程序員只要在編寫程序是遵循所提供接口即可,而無(wú)需關(guān)心執(zhí)行所需的具體細(xì)節(jié)。

  • I/O設(shè)備訪問(wèn)
    同樣的,操作系統(tǒng)中可能會(huì)同時(shí)運(yùn)行多個(gè)程序,程序之間對(duì)I/O設(shè)備的訪問(wèn)需要管理以便順利協(xié)作。操作系統(tǒng)封裝I/O設(shè)備的硬件細(xì)節(jié),為程序提供統(tǒng)一接口,同時(shí)也管理、維護(hù)I/O設(shè)備使用情況以便調(diào)度。

  • 文件訪問(wèn)控制
    文件從操作系統(tǒng)的角度來(lái)看,是I/O設(shè)備磁盤上的一種對(duì)象。通過(guò)對(duì)象的抽象,將一組二進(jìn)制值約束為文件內(nèi)容,同時(shí)通過(guò)額外的二進(jìn)制值來(lái)代表各種訪問(wèn)屬性。所以文件實(shí)際上可以成為磁盤類I/O設(shè)備的訪問(wèn)單元,因此,對(duì)于I/O設(shè)備本身的管理自然包括了內(nèi)部所有文件情況的維護(hù)。

  • 系統(tǒng)訪問(wèn)
    操作系統(tǒng)管理資源,也維護(hù)這大量有關(guān)資源的信息。這些信息的訪問(wèn)必須有所保護(hù),否則一旦被惡意修改,輕則系統(tǒng)信息錯(cuò)誤,重則直接崩潰。同時(shí),對(duì)于同一資源的訪問(wèn),系統(tǒng)層也應(yīng)當(dāng)進(jìn)行調(diào)度,以保證相互間互不沖突。

  • 錯(cuò)誤檢測(cè)和響應(yīng)
    計(jì)算機(jī)硬件終歸是電氣電路組成的,電氣電路在使用環(huán)境、壽命等因素的影響下,會(huì)出現(xiàn)潛在錯(cuò)誤。同時(shí),軟件編寫中也可能引入錯(cuò)誤,如除零。操作系統(tǒng)會(huì)對(duì)這些潛在錯(cuò)誤進(jìn)行檢測(cè),并嘗試修復(fù)。如無(wú)法修復(fù),則提示用戶或最終關(guān)機(jī)。

  • 統(tǒng)計(jì)信息
    對(duì)于所有資源的管理調(diào)度,需要基于對(duì)應(yīng)的維護(hù)信息,只有在各相關(guān)組件間共享這些內(nèi)容,才能更加精確地達(dá)成提高CPU利用率或更低響應(yīng)時(shí)長(zhǎng)的目標(biāo)。

3. 操作系統(tǒng)組織架構(gòu)


上一節(jié)中給出了操作系統(tǒng)的定義,列出了需要提供的服務(wù),這一節(jié)就從操作系統(tǒng)本身內(nèi)部如何實(shí)現(xiàn)的角度,來(lái)談?wù)劜僮飨到y(tǒng)組織架構(gòu)。所謂組織架構(gòu),實(shí)際上就是操作系統(tǒng)中是如何提供各服務(wù)的,是每個(gè)服務(wù)作為一個(gè)程序,聚集而形成操作系統(tǒng),還是走大而全的策略一個(gè)程序包含所有操作系統(tǒng)內(nèi)容。這兩種方式,分別對(duì)應(yīng)單內(nèi)核和微內(nèi)核兩種架構(gòu)。

3.1 單內(nèi)核

單內(nèi)核中所有服務(wù)如文件系統(tǒng)、存儲(chǔ)管理等都由多個(gè)運(yùn)行在內(nèi)核態(tài)(Kernel Mode)的模塊來(lái)完成。雖然每個(gè)模塊單獨(dú)服務(wù),但由于高度集成,一旦某一模塊產(chǎn)生bug,則會(huì)使整個(gè)內(nèi)核崩潰。不過(guò)同樣因?yàn)榧啥雀撸胁僮魑挥谕坏刂房臻g內(nèi),控制代碼的運(yùn)行效率會(huì)更高。

傳統(tǒng)UNIX、DOS以及早期的Mac OS系統(tǒng)均采用單內(nèi)核形式。

3.2 微內(nèi)核

微內(nèi)核的原則是將服務(wù)的實(shí)現(xiàn)和基礎(chǔ)操作分離,如某些功能可以通過(guò)運(yùn)行在微內(nèi)核之外的服務(wù)組件來(lái)提供。對(duì)比單內(nèi)核,一個(gè)模塊的錯(cuò)誤并不會(huì)引起整個(gè)內(nèi)核的崩潰,而且服務(wù)的擴(kuò)展也更加便捷。當(dāng)然微內(nèi)核在效率上就略有劣勢(shì)。

3.3 混合內(nèi)核


既然單內(nèi)核和微內(nèi)核均有各自優(yōu)缺點(diǎn),那么自然而然就能想象得到會(huì)有人將兩者混合使用。通過(guò)讓一些微內(nèi)核結(jié)構(gòu)代碼運(yùn)行在內(nèi)核空間上,提高內(nèi)核整體運(yùn)行效率。典型混合內(nèi)核例子有Windows NT及之后系列、Mac OS X等。

下圖是Windows和Linux操作系統(tǒng)結(jié)構(gòu)圖,感興趣的話可以先有個(gè)概念,具體討論將放在后續(xù)文章中。

Windows

Linux

4. 總結(jié)

本篇定位于介紹操作系統(tǒng)的由來(lái)、必要性、所提供的服務(wù),以及服務(wù)組織形式。掌握了這些概念,就應(yīng)該要朝著提高CPU使用率、降低響應(yīng)時(shí)長(zhǎng)的目標(biāo)去,進(jìn)一步了解內(nèi)部具體實(shí)現(xiàn)原理,而這些,均會(huì)在接下來(lái)幾篇中慢慢道來(lái)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,071評(píng)論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評(píng)論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,360評(píng)論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,895評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,123評(píng)論 0 286
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,643評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,559評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,742評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評(píng)論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,981評(píng)論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評(píng)論 1 280
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,354評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,707評(píng)論 2 370

推薦閱讀更多精彩內(nèi)容

  • 計(jì)算機(jī)組成原理課程在計(jì)算機(jī)系統(tǒng)中的位置 圖1描述了計(jì)算機(jī)系統(tǒng)抽象層的轉(zhuǎn)換。從圖1可以看出,計(jì)算機(jī)系統(tǒng)由不同的抽象層...
    開點(diǎn)工作室閱讀 3,394評(píng)論 16 55
  • 總線 計(jì)算機(jī)的各個(gè)功能部件通過(guò)總線連接在一起構(gòu)成完整的計(jì)算機(jī)系統(tǒng),總線是多個(gè)系統(tǒng)功能部件之間進(jìn)行數(shù)據(jù)傳送的公共通路...
    羅蓁蓁閱讀 4,857評(píng)論 0 10
  • 課程地址 南京大學(xué)的駱斌老師主講的,考研可能會(huì)用得上 計(jì)算機(jī)系統(tǒng)的組成 計(jì)算機(jī)系統(tǒng):包括硬件子系統(tǒng)和軟件子系統(tǒng) 硬...
    _SilverBullet閱讀 1,795評(píng)論 0 23
  • 2017年5月4日 這兩天松原大風(fēng)一直在刮,空氣污染指數(shù)達(dá)頂級(jí)。不見了往日的藍(lán)天白云。 瓊枝漫舞伴黃沙,落盡飛紅滿...
    曼殊兆蘭閱讀 325評(píng)論 2 8
  • 當(dāng)今的大學(xué)生是有夢(mèng)想、敢于拼搏的一族。很多大學(xué)生開始通過(guò)創(chuàng)業(yè)來(lái)展示自我,開啟美好人生,但是資金卻成為了一大難題。向...
    微校金服閱讀 347評(píng)論 0 0