操做系統是計算機學科的基礎課程,是理解計算機運行原理的重要基石,學習操做系統不只可以讓編程人員瞭解計算機運行邏輯並且還有助於培養編程「軟實力」,若是想真正在編程之路上走下去,那麼操做系統將會是重要的加速器,本系列將走進操做系統課程,瞭解在計算機世界的規則...算法
正文編程
1、操做系統是什麼緩存
說到操做系統,很多人會瞬間想到微軟的Windows系列,有經驗的編程人員或許會想到unix,Linux等,但對於操做系統的定義,很多人恐怕就說不上來了,其實在計算機學科領域至今也未造成一個統一的標準化的定義,出現這個問題一方面因爲操做系統實現兩項相對獨立的功能---擴展機器和管理資源,另外一方面取決於從什麼角度來看待操做系統---用戶觀點仍是系統觀點。安全
一、操做系統做爲擴展機器網絡
操做系統能夠將硬件細節與編程人員隔離開,用戶可使用操做系統提供的各類命令,直接打開文件、讀寫文件、更改目錄等,在作這些事情時,只須要關心本身要實現的目標,並不用考慮硬件是如何動做,從而隱藏了底層硬件的特性。經過操做系統的加工,呈如今用戶面前的機器是功能更強,使用更方便的機器,一般把邏輯之上覆蓋各類軟件,從而造成功能更強的機器稱爲擴展機器或虛擬機。併發
二、操做系統做爲資源管理器分佈式
操做系統能夠用來管理硬件資源和數據、程序等軟件資源,控制、協調各個程序對這些資源的利用,儘量地充分發揮各類資源的做用,做爲資源管理者,操做系統主要作如下工做:工具
三、用戶角度看操做系統性能
操做系統應當處於用戶與計算機硬件系統之間,爲用戶提供使用計算機系統的接口。學習
四、系統角度看操做系統
操做系統是硬件之上的第一層軟件,它要管理計算機系統中各類硬件資源和軟件資源的分配問題,要解決大量對資源請求的衝突問題,決定把資源分配給誰,什麼時候分配,分配多少等,使得資源的利用高效並且公平。此外操做系統要對IO設備和用戶程序加以控制,保證設備正常工做,防止非法操做,及時診斷設備的故障等。
綜上所述,能夠獲得:
總之,一般能夠這樣定義操做系統:操做系統是控制和管理計算機系統內各類硬件和軟件資源,有效地組織多道程序運行的系統軟件,是用戶和計算機之間的接口。
2、操做系統的主要功能
操做系統主要功能有一下5個方面:存儲管理、做業和進程管理、設備管理、文件管理和用戶接口服務
一、存儲管理
存儲管理的主要功能包括:內存分配,地址映射,內存保護和內存擴充
1.1 內存分配
內存分配的主要任務是爲每道程序分配必定的內存空間,爲此操做系統必須記錄整個內存的使用狀況,處理用戶提出的申請,按照某種策略實施分配,接收系統或用戶釋放的內存空間。因爲內存是寶貴的系統資源,在制定分配策略時應該如何考慮提升內存的利用率,減小內存浪費。
1.2 地址映射
CPU在執行用戶程序時,要從內存中取出指令或數據,爲此就必須把所用的相對地址(或稱邏輯地址)轉換成內存的物理地址。
1.3 內存保護
不一樣用戶的程序都放在同一個內存中,就必需要保證它們在各自的內存空間中活動,不能相互干擾,更不能侵佔操做系統的空間,爲此須要創建內存保護機制。
1.4 內存擴充
一個系統中的內存容量是有限的,不能隨意擴充其大小。然而,當對內存「求大於供」的局面時,就須要採起虛擬存儲技術。將程序當前使用的部分放在內存,而其他部分放在磁盤上,之後根據程序執行時的要求和內存當時使用的狀況,隨機地將所需部分調入內存;必要時還要把已分配出去的內存回收,供其餘程序使用(內存置換)
二、做業和進程管理
操做系統中有兩個重要概念,即做業與進程,簡言之,用戶的計算任務稱爲做業,程序的執行過程稱做進程(進程是分配資源和在處理機上運行的基本單位)。衆所周知,計算機系統中最重要的資源是CPU,對它管理的優劣直接影響整個系統的性能。因此,做業和進程管理的基本功能包括:做業和進程調度、進程控制和進程通訊。
2.1 做業和進程調度
一個做業一般通過兩級調度才能在CPU上執行,首先是做業調度,它把選中的一批做業放入內存,並分配其餘必要資源,爲這些做業創建相應的進程,而後進程調度按照必定的算法從就緒進程中選出一個合適進程,使之在CPU上運行、
2.2 進程控制
進程是操做系統中活動的實體,進程控制包括建立進程、撤銷進程、封鎖進程、喚醒進程等。
2.3 進程通訊
多個進程在活動過程當中彼此間會發生相互依賴或者相互制約的關係,爲保證系統中全部的進程都能正常活動,就必須設置進程同步機制,它分爲同步方式與互斥方式。相互合做的進程之間每每須要交換信息,爲此,操做系統須要提供通訊機制。
三、設備管理
設備的分配和驅動由操做系統負責,即設備管理的主要功能包括:緩衝區管理,設備分配,設備驅動和設備無關性
3.1 緩衝區管理
緩衝區管理的目的是解決CPU和外設速度不匹配的矛盾,使它們充分並行工做,提升各自的利用率。
3.2 設備分配
根據用戶的IO請求和相應的分配策略,爲該用戶分配外部設備、通道和控制器等
3.3 設備驅動
實現CPU與通道和外設之間的通訊,由CPU向通道發出IO指令,後者驅動相應設備進行IO操做。當IO任務完成後,通道向CPU發出中斷信號,由相應的中斷處理程序進行處理
3.4 設備無關性
設備無關性又稱設備獨立性,即用戶編寫的程序與實際使用的物理設備無關,由操做系統把用戶程序中使用的邏輯設備映射到物理設備。
四、文件管理
文件管理功能包括:文件存儲空間的管理,文件操做的通常管理,目錄管理,文件的讀寫管理和存取控制
4.1 文件存儲空間的管理
系統文件和用戶文件都要放在磁盤上,爲此,須要由文件系統對全部文件以及文件的存儲空間進行統一管理:爲新文件分配必要的外存空間,回收釋放的文件空間,提升外存的利用率。
4.2 文件操做的通常管理
文件操做的通常管理包括:文件的建立、刪除、打開、關閉等
4.3 目錄管理
目錄管理包括目錄文件的組織、實現用戶對文件的「按名存取」,以及目錄的快速查詢和文件共享等
4.4 文件的讀寫管理與存取控制
根據用戶的請求,從外存中讀取數據或者將數據寫入外存中。爲了保證文件信息的安全性,防止未受權用戶的存取或破壞,對各個文件(包括目錄)進行存取控制
五、用戶接口服務
用戶上機操做時直接使用到操做系統提供的用戶接口,操做系統對外提供多種服務,使得用戶能夠方便、有效地使用計算機硬件和運行本身的程序,使得軟件開發變的容易、高效。現代操做系統提供三種用戶接口:程序接口,命令行接口以及圖形用戶接口。
5.1 程序接口
也稱系統調用接口,系統調用是操做系統內核與用戶程序、應用程序之間的接口,它位於操做系統核心層的最外層。全部內核以外的程序都必須經由系統調用才能得到操做系統的服務。系統調用只能在程序中使用,不能直接做爲命令在終端上輸入和執行。因爲系統調用可以改變處理機的執行狀態,從用戶態變爲核心態,直接進入內核執行,因此執行效率很高。用戶在本身程序中使用系統調用,從而獲取系統提供的衆多基層服務,
5.2 命令行接口
在提示符以後用戶從鍵盤上輸入命令,命令解釋程序接收並解釋這些命令,而後把它們傳遞給操做系統內部程序,執行相應功能。命令行接口不屬於操做系統內核,相應的程序是在用戶空間中運行的。
5.3 圖形用戶接口
用戶利用鼠標,窗口,菜單,圖標等圖形用戶界面工具,能夠直觀、方便,有效地使用系統服務和各類應用程序及實用工具。圖形用戶接口也不屬於操做系統內核,相應的程序是在用戶空間中運行的。
3、操做系統的類型
操做系統基本類型可分爲5種:批處理系統,分時系統、實時系統、網絡系統和分佈式系統
一、批處理系統
早期的計算機操做系統大多數是批處理系統,在這種系統中,把用戶的計算任務按「做業」進行管理。其工做流程通常以下:
上述步驟將一直重複下去,使得各做業一個接一個地流入系統,直到沒有做業。各個做業通過處理後又順序地退出系統,造成一個源源不斷的做業流。
能夠看出批處理系統具備兩個特色---「多道」與「成批」
批操做系統優勢:
批操做系統缺點:
二、分時系統
針對批操做系統的缺點,人們提出了分時系統,它讓用戶經過終端設備聯機使用計算機。
在單CPU系統中沒法真正的實現多個程序的並行(兩個或兩個以上事件或活動在同時刻發生就稱做並行),爲了在多道程序環境中提升資源利用率,每每採用多道程序分時共享硬件和軟件資源的技術,分時就是對時間的共享。在分時系統中,分時主要是指若干程序對CPU時間的共享。分享的時間單位稱爲時間片,它每每很短,如幾十毫秒。這種分時的實現,須要有中斷機構和時鐘系統的支持。利用時鐘系統把CPU時間分紅一個一個的時間片,操做系統輪流把每一個時間片分給各個程序,每道程序一次只能夠運行一個時間片。當時間片計數到時後,產生時間中斷,控制轉向操做系統,操做系統選擇另外一道程序並分給它時間片,讓其投入運行。到達給定時間,再發中斷,從新選程序(或做業)運行,如此反覆。
兩個或兩個以上的程序在一段時間內,在同一CPU上執行就稱做併發,在分時系統中利用併發機制實現了一個物理CPU(也能夠是多個物理CPU)在若干道程序之間的多路複用。
分時系統的基本特徵:
分時系統的優勢:
經常使用的通用操做系統是分時系統與批處理系統的結合,其原則是:分時優先,批處理在後。「前臺」響應需頻繁交互的做業,「後臺」處理時間性不強的做業。
三、實時系統
在計算機的不少應用領域內,要求對實時採樣數據進行及時處理,作出相應的反應,若是超出限定的時間就可能丟失信息或影響下一批信息的處理。實時系統是指計算機能及時響應外部事件的請求,在規定的時間內完成對該事件的處理,並控制全部設備和任務協調一致工做的操做系統。實時系統的目標是:對外部請求在嚴格時間範圍內作出反應,並有高可靠性和完整性。其主要特色是:資源的分配和調度首先要考慮實時性,而後纔是效率。此外實時系統還應該具備較強的容錯能力。實時系統如今有三種典型的應用形式:過程控制系統、信息查詢系統和事務處理系統。
實時系統與分時系統的差異:
四、網絡操做系統
因爲單臺計算機資源畢竟有限,爲了實現異地計算機之間的數據通訊和資源共享,可將分佈在各處的計算機和終端設備經過數據通訊系統聯結在一塊兒,構成一個系統,這就是計算機網絡,計算機網絡須要兩大支柱----計算機技術和通訊技術。
計算機網絡的特徵:
網絡操做系統通常創建在各個主機的本地操做系統基礎之上,其功能是實現網絡通訊,資源共享和保護,以及提供網絡服務和網絡接口等。在網絡操做系統的做用下,對用戶屏蔽了各個主機對一樣資源所具備的不一樣存取方法。
網絡操做系統的特性:
五、分佈式操做系統
分佈式操做系統把大量的計算機組織在一塊兒,彼此經過高速網絡進行鏈接。分佈式系統有效地解決了地域分佈很廣的若干計算機系統間的資源共享,並行工做,信息傳輸和數據保護等問題。
分佈式操做系統特色:
分佈式系統是網絡操做系統的更高形式,它保持了網絡操做系統的所有功能,並且還具備可靠性和高性能。網絡操做系統和分佈式操做系統雖然都屬於管理分佈在不一樣地理位置的計算機,但最大的差異是:網絡操做系統知道計算機確切的地址,而分佈式系統則不知道計算機的確切地址;分佈式操做系統負責整個資源的分配,能很好地隱藏系統內部的實現細節,如對象的物理位置,這些對用戶都是透明的。
4、計算機硬件結構
從硬件的角度看,現代通用計算機系統是由CPU、內存和若干IO設備組成,它們經由系統總線連接在一塊兒,實現彼此通訊。從功能上講,是由五大功能部件組成,即運算器、控制器、存儲器、輸入設備和輸出設備。這五大功能部件相互配合,協同工做。其中運算器和控制器集成在一片或幾片大規模或超大規模集成電路中,稱爲中央處理器(CPU)。
一、處理器
CPU是計算機的「大腦」,它從內存中提取指令並執行它們。CPU工做的基本週期是:提取指令,譯碼分析,執行指令。對後面的的指令按相似步驟進行處理。CPU內部包含若干寄存器,其中,一類是通用寄存器,用來存放關鍵變量和中間結果。另外一類是專用寄存器,如程序計數器(PC),棧指針寄存器和程序狀態字(PSW)。同時通常操做系統都提供核心態與用戶態兩種處理機執行狀態。其目的是爲了保護操做系統程序(特別是內核部分),防止受到用戶程序的損害。當執行操做系統程序時,處理機處於核心態。這時它具備較高特權,能夠執行全部指令,包括普通用戶程序中不能使用的特權指令,從而能對全部寄存器和內存進行訪問,以及啓動IO操做等。而用戶程序是在用戶態下執行的,它的的權限較低,只能執行指令集中非特權指令。
二、存儲器
在任何計算機中,存儲器都是最主要的組成部分之一。按照速度、容量和成本劃分,存儲器系統構成一個層次結構,以下圖所示:
三、IO設備
IO設備是人機交互的工具,它一般由控制器和設備自己兩部分組成。控制器是IO設備的電子部分,它協調和控制一臺或多臺IO設備的操做,實現設備操做與整個系統操做的同步。設備控制器自己有一些緩衝區和一組專用寄存器,負責在外部設備和本地緩衝區之間移動數據。設備實際上隱藏在控制器的後面,於是,操做系統老是與控制器打交道,而不是與設備直接做用。因爲設備的種類有不少,於是設備控制器的類別就不少,這就須要不一樣的軟件來控制它們。這些向控制器發佈命令並接收其回答信息的軟件就是設備驅動程序。不一樣操做系統上的不一樣控制器分別對應不一樣的設備驅動程序,理論上講,驅動程序能夠在覈心以外運行,但當前的系統都把它放在操做系統中,使其在覈心方式下運行。
四、總線
按照總線上傳送的信息所起的做用,系統總線基本上能夠分爲以下三部分:
本文內容參考孟慶昌老師所著《操做系統》一書