操作系統是控制應用程式執行的程式,是應用程式和計算機硬體的介面。它有三個目標:
如圖2.1所示。應用程式的使用者,即終端使用者,他們將計算機系統視爲一組應用程式,因爲他們只需要使用,並不需要思考應用程式是如何設計出來的,而一個應用程式是由程式設計師開發而成的。若程式設計師用一組完全負責控制計算機硬體的機器指令開發應用程式,則非常複雜。爲簡化這一任務,需要提供一些系統程式,其中一部分稱爲實用工具或庫程式,它們實現了建立程式、管理檔案和控制I/O裝置時經常使用的功能。程式設計師在開發應用程式時,將使用這些提供的介面;應用程式在執行時,將呼叫這些實用工具來實現特定的功能。最重要的系統程式是操作系統,操作系統爲程式設計師遮蔽了硬體的細節,併爲程式設計師使用系統提供了方便的介面。它可作爲中介,使程式設計師及應用程式更容易地存取與使用這些功能和服務。
操作系統通常提供了以下幾個方面的服務:
圖2.1也指明瞭典型計算機系統中有三種重要介面:
一臺計算機就是一組資源,這些資源用於移動、儲存和處理數據,並對這些功能進行控制,而操作系統負責管理這些資源。
圖2.2顯示了由操作系統管理的主要資源。操作系統的一部分在記憶體中,包括內核程式和當前正在使用的其他操作系統程式,內核程式包含操作系統中最常使用的功能。記憶體的其餘部分包含在使用者程式和數據,它的分配由操作系統和處理器中的儲存管理硬體聯合控制完成,後面會詳細介紹。操作系統決定在程式執行過程中何時使用I/O裝置,並控制檔案的存取和使用。處理器自身也是資源,操作系統必須決定在執行一個特定的使用者程式時,可以分配多少處理器時間,且在多處理器系統中,這一決定要傳達到所有處理器。
系統對作業的處理是成批進行的,但記憶體中始終保持一道作業。該系統是在解決人機矛盾和CPU與I/O裝置速率不匹配的矛盾中形成的。單道批次處理系統的主要特徵如下:
此時面臨的問題是:每次主機記憶體中僅存放一道作業,每當它執行期間發出輸入/輸出請求後,高速的CPU便處於等待低速的I/O完成狀態。爲了進一步提高資源的利用率和系統的吞吐量,引入了多道程式技術。
多道程式設計技術允許多個程式同時進入記憶體並執行。即同時把多個程式放入記憶體,並允許它們交替在CPU中執行,它們的共用系統中的各種硬、軟體資源。當一道程式因I/O請求而暫停執行時,CPU便立即轉去執行另一道程式。它沒有用某些機制 機製提高某一技術方面的瓶頸問題,而是讓系統的各個組成部分都儘量去「忙」,花費很少時間去切換任務,打到了系統各部件之間的並行工作,使其整體在單位時間內的效率翻倍。如圖2.5所示:
舉個例子,考慮一臺計算機,它有250MB的可用記憶體(未被操作系統使用)、一個磁碟、一個終端和一臺印表機,同時提交執行三個應用程式JOB1,JOB2,JOB3,它們的屬性如表2.1所示。假設JOB2和JOB3對處理器只有最低的要求,JOB3還要求連續使用磁碟和印表機。對於簡單的批次處理環境,這些作業將被順序執行,故耗時5+15+10=30分鐘。表2.2中的「單道程式設計」列出了平均資源利用情況、吞吐量和響應時間,圖2.6(a)顯示了各個裝置的利用率。顯然,在所需的30分鐘內,所有資源都未得到充分使用。
現在假設這些作業在多道程式操作系統下並行執行。由於作業間幾乎沒有資源競爭,因此三個作業都可以在計算機中同時存在其他作業的情況下,以幾乎最短的時間執行。即三個作業將在15分鐘內完成。表2.2中「多道程式設計」列的數據取自圖2.6(b)所示直方圖,從中可以看出效能的提高很明顯。
分時是指多個使用者分享使用同一臺計算機。多個程式分時共用硬體和軟體資源。分時操作系統是指在一臺主機上連線多個帶有顯示器和鍵盤的終端,同時允許多個使用者通過主機的終端,以互動方式使用計算機,共用主機中的資源。分時操作系統是一個多使用者互動式操作系統。
批次處理和分時都使用了多道程式設計,其主要差別如表2.3所示。
爲減小磁碟開銷,只有當新來的程式需要充血使用者儲存空間時,使用者儲存空間才被寫出。這一原理如圖2.7所示。假設有4個互動使用者,其記憶體需求如下:
圖2.7(a):最初,監控程式載入JOB1並把控制權轉交給它
圖2.7(b):稍後,監控程式決定把控制權轉交給JOB2。由於IOB2比JOB1需要更多的儲存空間,JOB1必須先被寫出,然後載入JOB2
圖2.7(c):接着,JOB3被載入並執行,由於JOB3比JOB2小,JOB2的一部分仍然留在記憶體中,以減少寫磁碟的時間;
圖2.7(d):稍後,監控程式決定把控制權交回JOB1,當JOB1載入記憶體時,JOB2的另一部分將被寫出;
圖2.7(e):載入JOB4時,JOB1和JOB2的一部分仍留在記憶體中
圖2.7(f):此時,若JOB1或JOB2被啓用,則只需載入一部分。在該例中是JOB2接着執行,這就要求JOB4和JOB1留在記憶體中的那一部分被寫出,然後讀入JOB2的其餘部分。
都是一字一字敲上去的,對於部分難理解的地方都新增了說明,希望大家都能夠看懂。大家的點贊、收藏和評論都是對我最大的支援呀!