1.2 操作系統的基本特征
1.2.1 并發性
并發性(Concurrency)是指若干個事件或活動在同一時間段內發生。操作系統是一個并發系統,并發性是它的最基本特征。操作系統的并發性是指在某一段時間內,計算機系統中若干程序都處于已經啟動但尚未結束的狀態。也就是說,計算機系統的內存中允許同時有多個用戶程序,或內存中同時有操作系統程序和用戶程序被交替、穿插地執行。操作系統具有處理和調度多個程序并發執行的能力。在單處理器系統中,程序的并發執行是指宏觀上有多個程序在同時運行,微觀上多個程序只能輪流交替執行。
并行(Parallel)是與并發相似的另一個概念,它是指若干個事件在同一時刻發生,因此,并行是并發的一個特例。在多處理器系統中,由于多個程序同一時刻可在不同CPU上運行,因此程序的運行是并行的。但在單處理器環境下,由于每一時刻CPU只能運行一個程序,所以單處理器系統中并不存在多個程序真正的并行。舉個例子,可以把體育比賽中的接力賽看成是一種并發活動,接力棒相當于CPU,選手相當于程序,跑道相當于內存。單組接力(一個接力棒)就是單處理器下的并發活動;多組接力(多個接力棒)就是多處理器下的并發活動,此時會出現并行的情況(多名選手同時持棒在跑)。通常情況下,我們討論的并發活動主要指單處理器下的并發活動;而多處理器下的情況比較復雜,關注的多是并行活動。
那么,單處理器下的并發是如何實現的呢?這要從程序的邏輯結構說起。通常,每個程序都由兩部分組成:一是CPU處理部分,二是I/O處理部分,不同的程序中這兩部分所占比重也不同。在通道和中斷技術的支持下,一個程序的CPU處理與另一個程序的I/O處理可以同時進行,這也使得多道程序實現并發成為可能。事實上,單處理器系統中實現并發的本質思想:當一個程序發生事件(如等待I/O)時讓出其占用的CPU而由另一個程序運行,即一個程序在進行I/O處理的同時讓另一程序在CPU上運行。因此,實現并發技術的關鍵之一在于如何對系統內的多個運行程序進行調度和切換。
操作系統的并發性能夠消除計算機系統中各程序之間的相互等待,有效地改善系統資源的利用率,從而提高了系統效率。但是并發也會引發一系列的問題,使操作系統的設計和實現變得復雜化。例如,在系統中的多個程序之間如何分配資源、如何切換運行狀態、如何不對其他運行的程序造成影響等。
1.2.2 共享性
共享性(Sharing)是操作系統的另一個主要特性。共享是指計算機系統資源能被內存中的多個并發執行的系統程序和用戶程序共同使用,而不是讓某一個程序獨享。如果一次性向每個用戶程序分別提供它所需的全部資源不但是浪費的,有時也是不現實的。一種有效的做法是讓操作系統程序和其他用戶程序公用計算機系統的全部資源,這樣可以減少浪費,從而提高系統資源的利用率。從實現的角度來看,資源共享有兩種方式:互斥共享和同時共享。
(1)互斥共享是指系統中的某些資源,如打印機、磁帶機等,雖然它們可以被多個程序共同使用,但在某一段時間內只允許一個程序使用,其他程序不能使用,即程序之間要互斥使用該資源,只有等到一個程序使用完后其他程序才能使用。一次只允許被一個程序使用的資源稱為臨界資源。計算機系統中的許多物理設備,主要是字符設備,以及某些軟件中的數據、表格、變量等都可能是臨界資源,它們只能被互斥訪問。
(2)同時共享是指系統中的某些資源能夠在一段時間內被多個程序同時使用。但在單處理器系統中,這里的同時只是個宏觀上的概念,因為實際上這些程序是在一個時間段內并發使用這些資源,如對磁盤文件的同時訪問其實也是交替進行的。
1.2.3 虛擬性
虛擬性(Virtual)是指操作系統中的一種管理技術,它是把一個物理設備轉換為若干個對應的邏輯設備,或者把多個物理設備轉換成一個邏輯設備的技術。采用虛擬技術的目的是為用戶提供易于使用、方便管理的操作環境。例如,在分時系統中,雖然物理CPU只有一個,但通過使用分時技術,在宏觀上還是有多個程序在同時運行,就好像一個物理CPU變成邏輯上的多個CPU一樣,每個用戶程序就在屬于它自己的邏輯CPU上運行。還有,共享打印機技術也是利用某種虛擬I/O技術(SPOOLing技術)實現的。同樣,利用窗口技術可把物理上的一個屏幕變成邏輯上的多個虛擬屏幕。在操作系統中,虛擬性表現的另一個重要方面就是普遍采用的虛擬存儲技術。為了能運行比物理內存大得多的應用程序,虛擬存儲技術將內存和外存有機地結合起來,向用戶提供足夠大的虛擬內存空間。總之,虛擬技術的應用既方便用戶使用計算機,也提高了系統的性能和資源利用率。
1.2.4 異步性
異步性(Asynchronism)也稱隨機性或不確定性。在多道系統中,允許多個進程并發執行。但由于系統內資源數量有限,而進程數量又往往多于資源數量,因此,進程必須相互競爭使用資源。當一個進程申請的資源被另一個進程占用時,該進程只能暫停執行,直到該進程擁有這個資源后才能繼續執行。因此,進程的執行順序和執行時間存在著不確定性,即進程是以異步的方式運行,“走走停停”。很顯然,這種異步性給系統帶來了潛在的危險,若處理不好,可能會產生與時間有關的錯誤。可以說,操作系統是運行在隨機的環境下。但只要環境相同,操作系統必須保證同一進程的多次運行,都會獲得完全相同的結果。
在操作系統中,隨機性的例子到處可見。例如,作業進入系統的時間和類型是隨機的,操作員使用命令的時刻是隨機的,程序運行中發生錯誤或異常的時刻是隨機的,各種硬件中斷信號產生的時刻是隨機的,等等。面對這些隨機發生的事件,操作系統必須確保捕捉任何一種隨機事件并做出正確處理,否則將會導致嚴重后果。
- Linux網絡管理與配置(第2版)
- Linux Mint Essentials
- 新手易學:系統安裝與重裝
- Alfresco 4 Enterprise Content Management Implementation
- 嵌入式操作系統(Linux篇)(微課版)
- Windows Server 2012網絡操作系統企業應用案例詳解
- 網絡操作系統管理與應用(第三版)
- Dreamweaver CS5.5 Mobile and Web Development with HTML5,CSS3,and jQuery
- Windows Server 2012網絡操作系統項目教程(第4版)
- Fedora 12 Linux應用基礎
- NetDevOps入門與實踐
- Linux應用大全 基礎與管理
- Linux 從入門到項目實踐(超值版)
- Windows Server 2008組網技術與實訓(第3版)
- 完美應用Ubuntu(第2版)