第一章-----作業系統導論

飄過的小熊發表於2016-08-31

第一章—–作業系統導論

標籤(空格分隔): 作業系統之哲學原理


人造與神造

仔細觀察身邊的事物,發現所有的東西可以分為兩類

  1. 本來就存在於自然中,人類所做的事情不過就是發現
  2. 本來並不存在,人類做的就是發明

計算機學科就是一個人造學科

人造學科的四個特點

  • 不精確,具有相對性
  • 從對人類活動的觀察匯出
  • 依賴於人的主觀判斷力
  • 通常符合人的直覺

明白了計算機是人造事物,作業系統是一個人造系統,就可以按照人造事物的特點來學習

程式是如何執行的

從程式到微指令
首先是需要用高階語言進行程式設計,例如Java,C++(使用的程式語言稱為高階程式語言)。但是計算機並不認識高階語言編寫的程式,編好的程式需要進行編譯變成計算機能夠識別的機器語言程式,這就需要編譯器和彙編器的幫助。其次,機器語言程式還要載入到記憶體,形成一個運動中的程式,程式。這就需要作業系統的幫助。程式需要在計算機晶片CPU上執行才算是真正的執行,而將程式排程到CPU上執行也是由作業系統完成。最後在CPU上執行的機器語言需要變成能夠在一個個時鐘脈衝裡進行的基本操作,這需要指令集結構和計算機硬體的支援,而整個過程還需要作業系統提供的服務和程式語言提供的執行環境。

因此程式的執行至少需要四個因素

  • 程式設計語言
  • 編譯系統
  • 作業系統
  • 指令集系統(計算機硬體系統)

什麼是作業系統

作業系統是介於計算機和應用軟體之間的一個軟體系統
作業系統定義
- 作業系統是一個軟體系統
- 作業系統使計算機變得好用
- 作業系統使計算機運作變得有序

作業系統的功能
- 替使用者及其應用管理計算機上的軟硬體資源
- 保證計算機資源的公平競爭和使用
- 防止對計算機資源的非法侵佔和使用
- 保證作業系統自身正常運轉

魔術與管理

作業系統充當兩個角色:管理者和魔術家

魔術家

魔術家的目的是把差的東西變好,把少的東西變多,把複雜變簡單。
例如程式設計,因為各種資料轉移均需要使用者自己控制,對不同的裝置要用不同的命令來驅動,而對一般人來說是很難勝任的。但是作業系統將這些工作從使用者中接過來,從而讓使用者覺得程式設計是一件很容易的事情。

管理者的角色

作業系統管理計算機上的軟硬體資源
根據管理的資源不同,作業系統的具體功能如下

  • CPU管理,如何分配CPU給不同應用的使用者
  • 記憶體管理,如何分配記憶體給不同應用的使用者
  • 外存管理,如何分配外存(磁碟)給不同的使用者
  • IO管理,如何分配輸入輸出裝置給應用和使用者

作為一切軟硬體資源的管理者,還要保持自身的穩定和安全,因此在設計作業系統時還有包括如下兩項
- 健壯性管理:如何確保作業系統自身的穩定性
- 安全性管理:如何防止非法操作和入侵

為了完成作業系統的上述功能,設計人員構思了很多的機制,這些機制的背後隱含的是人的哲學思維,因此本書就是講述作業系統背後的哲學原理,並依據這些原理闡述作業系統是通過何種機制,何種方式完成的上述各種管理功能

使用者程式與作業系統

作業系統上下分別是虛擬機器器介面和物理機器介面。物理機器下面的是硬體,硬體與作業系統的關係是本書關注的重點

作業系統與應用程式的關係
簡單說:作業系統為應用程式提供了一個虛擬器介面,而應用程式執行在這個介面之上。
終極解答:作業系統通過虛擬機器器介面為使用者程式提供各種服務,使用者程式在執行過程中不斷使用作業系統提供的服務來完成自己的任務

應用程式與作業系統的之間的呼叫關係:

  • 使用者程式在執行過程中呼叫作業系統的服務,作業系統為應用程式的呼叫返回一定的資料,這樣看來應用程式是主程式,而作業系統是子程式。
  • 系統啟動之後最先啟動的是作業系統,之後每自動一個應用程式都相當於是作業系統將控制轉移給應用程式,而應用程式執行完後又將控制返回給作業系統。因此這樣看來作業系統是主程式而應用程式是子程式。
    說法不一,兩種方式都是可以保留的,人造學科沒有對錯之分,只有好與壞。實際上,作業系統和應用程式之間是相互呼叫形成了一個非常複雜的動態關係,瞭解並闡述這種複雜的動態關係就是本書的目的

作業系統的範疇

作業系統的功能再加上一個批處理,批處理提供一種無需人機互動的程式執行模式,主要目的是達到吞吐量最大化。

為什麼學習作業系統

  • 首先:作業系統的功能應用於很多的領域,開發併發程式:Web Service,分散式系統和網路
  • 其次:作業系統的技巧也應用於很多的領域,如抽象,快取和併發

最重要的是作業系統很有趣

相關文章