計算機的靈魂——操作系統

操作系統是計算機學科的基礎課程,是理解計算機運行原理的重要基石,學習操作系統不僅能夠讓編程人員瞭解計算機運行邏輯而且還有助於培養編程“軟實力”,如果想真正在編程之路上走下去,那麼操作系統將會是重要的加速器,本系列將走進操作系統課程,瞭解在計算機世界的規則...

一、操作系統是什麼

說到操作系統,不少人會瞬間想到微軟的Windows系列,有經驗的編程人員或許會想到unix,Linux等,但對於操作系統的定義,不少人恐怕就說不上來了,其實在計算機學科領域至今也未形成一個統一的標準化的定義,出現這個問題一方面由於操作系統實現兩項相對獨立的功能---擴展機器和管理資源,另一方面取決於從什麼角度來看待操作系統---用戶觀點還是系統觀點。

1、操作系統作為擴展機器

操作系統可以將硬件細節與編程人員隔離開,用戶可以使用操作系統提供的各種命令,直接打開文件、讀寫文件、更改目錄等,在做這些事情時,只需要關心自己要實現的目標,並不用考慮硬件是如何動作,從而隱藏了底層硬件的特性。通過操作系統的加工,呈現在用戶面前的機器是功能更強,使用更方便的機器,通常把邏輯之上覆蓋各種軟件,從而形成功能更強的機器稱為擴展機器或虛擬機。

2、操作系統作為資源管理器

操作系統可以用來管理硬件資源和數據、程序等軟件資源,控制、協調各個程序對這些資源的利用,儘可能地充分發揮各種資源的作用,作為資源管理者,操作系統主要做以下工作:

  • 監視各種資源,隨時記錄它們的狀態
  • 實施某種策略以決定誰獲得資源、如何獲得、獲得多少
  • 分配資源提供需求者使用
  • 回收資源,以便再分配

3、用戶角度看操作系統

操作系統應當處於用戶與計算機硬件系統之間,為用戶提供使用計算機系統的接口。

4、系統角度看操作系統

操作系統是硬件之上的第一層軟件,它要管理計算機系統中各種硬件資源和軟件資源的分配問題,要解決大量對資源請求的衝突問題,決定把資源分配給誰,何時分配,分配多少等,使得資源的利用高效而且公平。此外操作系統要對IO設備和用戶程序加以控制,保證設備正常工作,防止非法操作,及時診斷設備的故障等。

綜上所述,可以得到:

  • 操作系統是軟件,而且是系統軟件,即操作系統由一整套程序組成。
  • 操作系統基本職能是控制和管理系統內各種資源,有效地組織多道程序的運行。
  • 操作系統提供眾多服務,方便用戶使用,擴充硬件功能。

總之,通常可以這樣定義操作系統:操作系統是控制和管理計算機系統內各種硬件和軟件資源,有效地組織多道程序運行的系統軟件,是用戶和計算機之間的接口。

二、操作系統的主要功能

操作系統主要功能有一下5個方面:存儲管理、作業和進程管理、設備管理、文件管理和用戶接口服務

1、存儲管理

存儲管理的主要功能包括:內存分配,地址映射,內存保護和內存擴充

1.1 內存分配

內存分配的主要任務是為每道程序分配一定的內存空間,為此操作系統必須記錄整個內存的使用情況,處理用戶提出的申請,按照某種策略實施分配,接收系統或用戶釋放的內存空間。由於內存是寶貴的系統資源,在制定分配策略時應該如何考慮提高內存的利用率,減少內存浪費。

1.2 地址映射

CPU在執行用戶程序時,要從內存中取出指令或數據,為此就必須把所用的相對地址(或稱邏輯地址)轉換成內存的物理地址。

1.3 內存保護

不同用戶的程序都放在同一個內存中,就必須要保證它們在各自的內存空間中活動,不能相互干擾,更不能侵佔操作系統的空間,為此需要建立內存保護機制。

1.4 內存擴充

一個系統中的內存容量是有限的,不能隨意擴充其大小。然而,當對內存“求大於供”的局面時,就需要採取虛擬存儲技術。將程序當前使用的部分放在內存,而其餘部分放在磁盤上,以後根據程序執行時的要求和內存當時使用的情況,隨機地將所需部分調入內存;必要時還要把已分配出去的內存回收,供其他程序使用(內存置換)

2、作業和進程管理

操作系統中有兩個重要概念,即作業與進程,簡言之,用戶的計算任務稱為作業,程序的執行過程稱作進程(進程是分配資源和在處理機上運行的基本單位)。眾所周知,計算機系統中最重要的資源是CPU,對它管理的優劣直接影響整個系統的性能。所以,作業和進程管理的基本功能包括:作業和進程調度、進程控制和進程通信。

2.1 作業和進程調度

一個作業通常經過兩級調度才能在CPU上執行,首先是作業調度,它把選中的一批作業放入內存,並分配其他必要資源,為這些作業建立相應的進程,然後進程調度按照一定的算法從就緒進程中選出一個合適進程,使之在CPU上運行、

2.2 進程控制

進程是操作系統中活動的實體,進程控制包括創建進程、撤銷進程、封鎖進程、喚醒進程等。

2.3 進程通信

多個進程在活動過程中彼此間會發生相互依賴或者相互制約的關係,為保證系統中所有的進程都能正常活動,就必須設置進程同步機制,它分為同步方式與互斥方式。相互合作的進程之間往往需要交換信息,為此,操作系統需要提供通信機制。

3、設備管理

設備的分配和驅動由操作系統負責,即設備管理的主要功能包括:緩衝區管理,設備分配,設備驅動和設備無關性

3.1 緩衝區管理

緩衝區管理的目的是解決CPU和外設速度不匹配的矛盾,使它們充分並行工作,提高各自的利用率。

3.2 設備分配

根據用戶的IO請求和相應的分配策略,為該用戶分配外部設備、通道和控制器等

3.3 設備驅動

實現CPU與通道和外設之間的通信,由CPU向通道發出IO指令,後者驅動相應設備進行IO操作。當IO任務完成後,通道向CPU發出中斷信號,由相應的中斷處理程序進行處理

3.4 設備無關性

設備無關性又稱設備獨立性,即用戶編寫的程序與實際使用的物理設備無關,由操作系統把用戶程序中使用的邏輯設備映射到物理設備。

4、文件管理

文件管理功能包括:文件存儲空間的管理,文件操作的一般管理,目錄管理,文件的讀寫管理和存取控制

4.1 文件存儲空間的管理

系統文件和用戶文件都要放在磁盤上,為此,需要由文件系統對所有文件以及文件的存儲空間進行統一管理:為新文件分配必要的外存空間,回收釋放的文件空間,提高外存的利用率。

4.2 文件操作的一般管理

文件操作的一般管理包括:文件的創建、刪除、打開、關閉等

4.3 目錄管理

目錄管理包括目錄文件的組織、實現用戶對文件的“按名存取”,以及目錄的快速查詢和文件共享等

4.4 文件的讀寫管理與存取控制

根據用戶的請求,從外存中讀取數據或者將數據寫入外存中。為了保證文件信息的安全性,防止未授權用戶的存取或破壞,對各個文件(包括目錄)進行存取控制

5、用戶接口服務

用戶上機操作時直接使用到操作系統提供的用戶接口,操作系統對外提供多種服務,使得用戶可以方便、有效地使用計算機硬件和運行自己的程序,使得軟件開發變的容易、高效。現代操作系統提供三種用戶接口:程序接口,命令行接口以及圖形用戶接口。

5.1 程序接口

也稱系統調用接口,系統調用是操作系統內核與用戶程序、應用程序之間的接口,它位於操作系統核心層的最外層。所有內核之外的程序都必須經由系統調用才能獲得操作系統的服務。系統調用只能在程序中使用,不能直接作為命令在終端上輸入和執行。由於系統調用能夠改變處理機的執行狀態,從用戶態變為核心態,直接進入內核執行,所以執行效率很高。用戶在自己程序中使用系統調用,從而獲取系統提供的眾多基層服務,

5.2 命令行接口

在提示符之後用戶從鍵盤上輸入命令,命令解釋程序接收並解釋這些命令,然後把它們傳遞給操作系統內部程序,執行相應功能。命令行接口不屬於操作系統內核,相應的程序是在用戶空間中運行的。

5.3 圖形用戶接口

用戶利用鼠標,窗口,菜單,圖標等圖形用戶界面工具,可以直觀、方便,有效地使用系統服務和各種應用程序及實用工具。圖形用戶接口也不屬於操作系統內核,相應的程序是在用戶空間中運行的。

三、操作系統的類型

操作系統基本類型可分為5種:批處理系統,分時系統、實時系統、網絡系統和分佈式系統

1、批處理系統

早期的計算機操作系統大多數是批處理系統,在這種系統中,把用戶的計算任務按“作業”進行管理。其工作流程一般如下:

  • 操作員把用戶提交的作業卡片放到讀卡器上,通過SPOOLing輸入程序及時把這些作業送入直接存取的後援存儲器(如磁盤)
  • 作業調度程序根據系統的當時情況和各後背作業特點,按一定的調度原則,選擇一個或幾個搭配得當的作業裝入內存準備運行
  • 內存中多個作業交替執行,當某個作業完成時,系統把該作業的計算結果交給SPOOLing輸出程序準備輸出,並回收該作業的全部資源

上述步驟將一直重複下去,使得各作業一個接一個地流入系統,直到沒有作業。各個作業經過處理後又順序地退出系統,形成一個源源不斷的作業流。

可以看出批處理系統具有兩個特點---“多道”與“成批”

  • “多道”是指內存中存放多個作業,並且在外存上存放大量的後備作業。因此,這種系統的調用原則相當靈活,易於選擇一批搭配合理的作業調入內存運行,從而充分發揮系統資源的利用率,增加系統的吞吐量。
  • “成批”是指系統運行過程中不允許用戶和機器之間發生交互作用,也就是說,用戶一旦把作業提交系統,他就不能直接干預該作業的運行了。

批操作系統優點:

  • 系統資源利用率高
  • 系統吞吐量大

批操作系統缺點:

  • 用戶作業的等待時間長
  • 沒有交互能力

2、分時系統

針對批操作系統的缺點,人們提出了分時系統,它讓用戶通過終端設備聯機使用計算機。

在單CPU系統中無法真正的實現多個程序的並行(兩個或兩個以上事件或活動在同時刻發生就稱作並行),為了在多道程序環境中提高資源利用率,往往採用多道程序分時共享硬件和軟件資源的技術,分時就是對時間的共享。在分時系統中,分時主要是指若干程序對CPU時間的共享。分享的時間單位稱為時間片,它往往很短,如幾十毫秒。這種分時的實現,需要有中斷機構和時鐘系統的支持。利用時鐘系統把CPU時間分成一個一個的時間片,操作系統輪流把每個時間片分給各個程序,每道程序一次只可以運行一個時間片。當時間片計數到時後,產生時間中斷,控制轉向操作系統,操作系統選擇另一道程序並分給它時間片,讓其投入運行。到達給定時間,再發中斷,重新選程序(或作業)運行,如此反覆。

兩個或兩個以上的程序在一段時間內,在同一CPU上執行就稱作併發,在分時系統中利用併發機制實現了一個物理CPU(也可以是多個物理CPU)在若干道程序之間的多路複用。

分時系統的基本特徵:

  • 同時性,若干用戶可以同時上機使用計算機系統
  • 交互性,用戶能夠方便地與系統進行人機交互
  • 獨立性,系統中各用戶可以批次獨立地操作,互不干擾或破壞
  • 及時性,用戶能在很短時間內得到系統的響應

分時系統的優點:

  • 為用戶提供友好的接口,即用戶能在較短時間內得到響應,能以對話方式完成對程序的編寫,調試,修改,運行和得到運算結果
  • 促進了計算機的普及應用,一個分時系統可帶多臺終端,同時為多個遠近用戶使用
  • 便於資源共享和交換信息,為軟件開發和工程設計提供良好的環境

常用的通用操作系統是分時系統與批處理系統的結合,其原則是:分時優先,批處理在後。“前臺”響應需頻繁交互的作業,“後臺”處理時間性不強的作業。

3、實時系統

在計算機的很多應用領域內,要求對實時採樣數據進行及時處理,做出相應的反應,如果超出限定的時間就可能丟失信息或影響下一批信息的處理。實時系統是指計算機能及時響應外部事件的請求,在規定的時間內完成對該事件的處理,並控制所有設備和任務協調一致工作的操作系統。實時系統的目標是:對外部請求在嚴格時間範圍內做出反應,並有高可靠性和完整性。其主要特點是:資源的分配和調度首先要考慮實時性,然後才是效率。此外實時系統還應該具有較強的容錯能力。實時系統現在有三種典型的應用形式:過程控制系統、信息查詢系統和事務處理系統。

實時系統與分時系統的差別:

  • 交互性:分時系統提供一種隨時可提供多個用戶使用、通用性很強的計算機系統,用戶與系統之間具有較強的交互作業或會話能力,而實時系統的交互能力相對來說比較差
  • 實時性:分時系統響應時間的要求是人能夠接受的等待時間,數量級通常是秒;而實時系統對響應時間要求較高,數量級可達到毫秒,甚至微秒。
  • 可靠性:雖然分時系統也要求系統可靠,但是實時系統對可靠性要求更高

4、網絡操作系統

由於單臺計算機資源畢竟有限,為了實現異地計算機之間的數據通信和資源共享,可將分佈在各處的計算機和終端設備通過數據通信系統聯結在一起,構成一個系統,這就是計算機網絡,計算機網絡需要兩大支柱----計算機技術和通信技術。

計算機網絡的特徵:

  • 分佈性:網上節點機可以位於不同地點,各自執行自己的任務
  • 自治性:網上的每臺計算機都有自己的內存,IO設備和操作系統,能夠獨立地完成自己承擔的任務
  • 互連性:利用互連網絡把不同地點的資源(包括硬件資源和軟件資源)在物理上和邏輯上連接在一起,在統一的網絡操作系統控制下,實現網絡通信和資源共享
  • 可見性:計算機網絡中的資源對用戶來說是可見的,用戶任務通常在本地機器上運行,利用網絡操作系統提供的服務可共享其他主機上的資源

網絡操作系統一般建立在各個主機的本地操作系統基礎之上,其功能是實現網絡通信,資源共享和保護,以及提供網絡服務和網絡接口等。在網絡操作系統的作用下,對用戶屏蔽了各個主機對同樣資源所具有的不同存取方法。

網絡操作系統的特性:

  • 接口一致性:網絡操作系統要為共享資源提供一個一致的接口,而不管其內部採取什麼方法予以實現。
  • 資源透明性:網絡操作系統能夠實現對資源的最優選擇,它瞭解整個網絡系統中共享資源的狀態和使用情況,能夠根據用戶的要求自動做出選擇。
  • 操作可靠性:網絡操作系統利用硬件和軟件資源在物理上分散的優點,實現可靠的操作。
  • 處理自主性:網絡操作系統中的各個主機都具有獨立的處理能力,在各主機上的資源被認為是局部所有的
  • 執行並行性:計算機網絡中任何一個工作站或通信計算機都稱作一個節點,網絡操作系統不僅實現本機上多道程序的併發執行,而且實現網絡系統各節點機上進程執行的真正並行。

5、分佈式操作系統

分佈式操作系統把大量的計算機組織在一起,彼此通過高速網絡進行連接。分佈式系統有效地解決了地域分佈很廣的若干計算機系統間的資源共享,並行工作,信息傳輸和數據保護等問題。

分佈式操作系統特點:

  • 靈活性:根據用戶需求和使用情況,方便地對系統進行修改或者擴充
  • 可靠性:如果系統中某臺機器不能工作了,就有另外的機器做它的工作。可靠性包括可用性,安全性和容錯性
  • 高性能:分佈式具有執行速度快,響應及時,資源利用高,而且網絡通信能力強
  • 可擴充性:分佈式系統可以根據使用環境和應用的需要,方便地擴充或縮減其規模

分佈式系統是網絡操作系統的更高形式,它保持了網絡操作系統的全部功能,而且還具有可靠性和高性能。網絡操作系統和分佈式操作系統雖然都屬於管理分佈在不同地理位置的計算機,但最大的差別是:網絡操作系統知道計算機確切的地址,而分佈式系統則不知道計算機的確切地址;分佈式操作系統負責整個資源的分配,能很好地隱藏系統內部的實現細節,如對象的物理位置,這些對用戶都是透明的。

四、計算機硬件結構

從硬件的角度看,現代通用計算機系統是由CPU、內存和若干IO設備組成,它們經由系統總線鏈接在一起,實現彼此通信。從功能上講,是由五大功能部件組成,即運算器、控制器、存儲器、輸入設備和輸出設備。這五大功能部件相互配合,協同工作。其中運算器和控制器集成在一片或幾片大規模或超大規模集成電路中,稱為中央處理器(CPU)。

1、處理器

CPU是計算機的“大腦”,它從內存中提取指令並執行它們。CPU工作的基本週期是:提取指令,譯碼分析,執行指令。對後面的的指令按類似步驟進行處理。CPU內部包含若干寄存器,其中,一類是通用寄存器,用來存放關鍵變量和中間結果。另一類是專用寄存器,如程序計數器(PC),棧指針寄存器和程序狀態字(PSW)。同時一般操作系統都提供核心態與用戶態兩種處理機執行狀態。其目的是為了保護操作系統程序(特別是內核部分),防止受到用戶程序的損害。當執行操作系統程序時,處理機處於核心態。這時它具有較高特權,可以執行所有指令,包括普通用戶程序中不能使用的特權指令,從而能對所有寄存器和內存進行訪問,以及啟動IO操作等。而用戶程序是在用戶態下執行的,它的的權限較低,只能執行指令集中非特權指令。

2、存儲器

在任何計算機中,存儲器都是最主要的組成部分之一。按照速度、容量和成本劃分,存儲器系統構成一個層次結構,如下圖所示:

計算機的靈魂——操作系統

  • 頂層是CPU內部寄存器,其速度與CPU一樣快,所以存取它們沒有延遲。但是它的成本高,容量小,通常小於1KB。典型存取時間1ns
  • 下面一層是高速緩存,它們大多由硬件控制。Cache的速度很快,它們放在CPU內部或非常靠近CPU的地方。當程序需要讀取具體信息時,Cache硬件先查看它是否在Cache中,如果在其中,就直接使用它;如果不在,就從內存中獲取該信息,並把它放入Cache中,以備今後再次使用。但Cache成本很高,容量較小,一般小於4MB。典型存取時間2ns
  • 中間一層是內存或者稱為主存,它是存儲器系統的主力,也稱作RAM(隨機存取存儲器)。CPU可以直接存取內存及寄存器和Cache中的信息,但是不能直接存取磁盤上的數據。因此,機器執行的指令及所用的數據必須預先存放在內存及Cache和寄存器中。然而內存中存放的信息是易丟失的,當機器電源被關閉後,內存中的信息就全部丟失了。
  • 再往下一層是磁盤,稱作輔助存儲器,它是對內存的擴展。磁盤上可以永久的保留數據,而且容量特別大,現在常用的磁盤容量為250GB~2TB。磁頭是可以移動的,由於是機械裝置,所以磁盤上數據的存取速度低於內存存取速度
  • 最下層是磁帶,它記錄的數據可以永久保存,而已還可以根據情況換磁帶,故容量很大,但是由於它的存取速度很慢,所以不適宜進行隨機存取,所以,磁帶設備一般不能用做輔存,它的主要用途是作為文件系統的後備,存放一些不經常使用的信息或者用作系統間傳送信息的介質。

3、IO設備

IO設備是人機交互的工具,它通常由控制器和設備本身兩部分組成。控制器是IO設備的電子部分,它協調和控制一臺或多臺IO設備的操作,實現設備操作與整個系統操作的同步。設備控制器本身有一些緩衝區和一組專用寄存器,負責在外部設備和本地緩衝區之間移動數據。設備實際上隱藏在控制器的後面,因而,操作系統總是與控制器打交道,而不是與設備直接作用。由於設備的種類有很多,因而設備控制器的類別就很多,這就需要不同的軟件來控制它們。這些向控制器發佈命令並接收其回答信息的軟件就是設備驅動程序。不同操作系統上的不同控制器分別對應不同的設備驅動程序,理論上講,驅動程序可以在核心之外運行,但當前的系統都把它放在操作系統中,使其在核心方式下運行。

4、總線

按照總線上傳送的信息所起的作用,系統總線基本上可以分為如下三部分:

  • 數據總線:用於傳輸計算機各部件之間數據的通道,其寬度隨字節而定。32位結構的數據總線應是32根,64位結構的數據總線應為64根。數據總線是雙向總線,即兩個方向都可以傳送數據。
  • 地址總線:從CPU送來地址的地址線,它可以是存儲器的地址,也可以是IO設備控制器中控制寄存器或數據寄存器的地址。地址總線決定了CPU所能訪問的最大內存空間的大小。
  • 控制總線:在該線上出現的信號是各模塊之間傳送數據時所需的全部控制信號

本文內容參考孟慶昌老師所著《操作系統》一書


分享到:


相關文章: