操作系統原理第一章:操作系統概述

1 操作系統概念

1.1 爲什麼要有操作系統

因爲計算機硬件( 裸機 )難於使用,用戶幾乎不可能使用裸機,計算機硬件只能識別0、1二值機器碼,機器碼直觀性差,容易出錯,難於交流,因此,通常在計算機硬件之上會覆蓋一層軟件,以方便用戶使用計算機硬件

1.2 什麼是操作系統

在計算機硬件中CPU是計算機硬件的核心,是計算機系統的心臟,操作系統則是計算機軟件的核心,是計算機系統的大腦操作系統是整個計算機系統的控制中心,是計算機系統中首要的、最重要的、最複雜的系統軟件,追其本質,操作系統是管理計算機硬件的程序,在計算機用戶和計算機硬件之間起媒介作用的一種程序

操作系統在整個計算機系統中所在的位置位於計算機硬件之上,應用程序之下,硬件之上的第一層軟件,是對硬件的首次擴充,又是其他軟件運行的基礎,如下圖所示:
在這裏插入圖片描述

1.3 計算機系統部件

  • 硬件(Hardware ):提供基本的運算資源,如CPU,內存,I/O設備等
  • 操作系統(Operating system ):在各種應用程序和用戶之間控制與協調對硬件的使用
  • 應用程序(Applications programs ): 定義解決用戶問題的資源使用方式(編譯、數據庫、視頻遊戲、事務程序等)
  • 用戶(Users):如人、其他計算機等

1.4 操作系統設計的目標

  • 執行用戶程序並使用戶問題更易解決
  • 使計算機系統更易使用
  • 以一種有效率的方式使用硬件

1.5 操作系統的其他定義

不同的地方對操作系統的定義有所差別,但是都從一些核心角度描繪了操作系統,以下是常見的幾個定義:

  • 資源分配者(Resource allocator ):管理和分配資源
  • 控制程序(Control program ):控制用戶程序的運行和 I/O 設備的操作
  • 內核(Kernel):在全時運行的一個程序(其他的是應用),因爲當計算機開機後,第一個運行的程序就是操作系統,當關閉計算機時,最後一個結束的也是操作系統

2 操作系統的發展

並不是有了計算機就有了操作系統,操作系統從無到有、從簡單到複雜、完善一步一步而來,操作系統隨着計算機硬件技術的發展而發展,爲滿足不同的需求,出現了多種類型的操作系統,發展的核心動力便是需求,如下:

  • 資源利用角度:爲了提高計算機資源利用率和系統性能,從單道到多道、集中到分佈、從專用到泛在等
  • 用戶角度:方便用戶,人機交互
  • 技術角度:物理器件發展, CPU的位寬度(指令和數據)、快速外存、光器件等,以及計算機體系結構的不斷髮展:單處理機、多處理機、多核、計算機網絡

2.1 操作系統的歷史

  • 第一代(1946 年-1955 年): 真空管時代,無操作系統
  • 第二代(1955 年-1965 年): 晶體管時代,批處理系統
  • 第三代(1965 年-1980 年): 集成電路時代,多道程序設計
  • 第四代(1980 年-至今): 大規模和超大規模集成電路時代,分時系統,現代計算機正向着巨型、微型、並行、分佈、網絡化和智能化幾個方面發展

2.2 操作系統的類型

  • 無操作系統(No operating system)
  • 簡單批處理系統(Simple Batch Systems)
  • 多道程序批處理系統(Multiprogramming Batched Systems)
  • 分時系統(Time-Sharing Systems)
  • 實時系統(Real -Time Systems)
  • 嵌入式系統(Embedded Systems)
  • 並行系統(Parallel Systems)
  • 分佈式系統(Distributed Systems)

2.3 單道批處理系統

世界上第一臺計算機叫做ENIAC計算機,它的運算速度是1000次/每秒,數萬個真空管,佔地100平方米,在它誕生的時候沒有程序設計語言(甚至沒有彙編),更談不上操作系統,程序員提前預約一段時間,然後到機房將他的插件板插到計算機裏期盼着在接下來的時間中幾萬個真空管不會燒斷,從而可以計算自己的題目

這種工作方式稱爲人工操作方式,用戶是計算機專業人員,這種方式的缺點是用戶獨佔全機,獨佔系統的全部硬件資源,設備利用率很低,CPU等待用戶手工裝入/卸取紙帶或卡片使CPU的利用率也非常低

50 年代早期,出現了穿孔卡片,如下圖,程序寫在卡片上然後讀入計算機,但計算過程則依然如舊,效率並沒有得到本質的提升
在這裏插入圖片描述


此時出現的主要矛盾是人工操作方式與機器利用率的矛盾和CPU與I/O之速度不匹配的矛盾,解決的方法有兩種即批處理脫機I/O

  • 脫機I/O方式:I/O工作在外圍機/衛星機的控制下完成,或者說是在脫離主機的情況下進行。使用磁帶作爲輸入/輸出的中介,這種具體的輸入/輸出不需要在主計算機上進行的方式稱“脫機輸入/輸出”,如下圖:
    在這裏插入圖片描述
  • 單道批處理系統:50年代末 ~ 60年代中(晶體管時代),把一批作業以脫機輸入方式輸入到磁帶/磁鼓,利用磁帶或磁盤把任務分類編成作業順序執行,每批作業由專門監督程序(Monitor)自動依次處理,批處理系統解決了高速計算機的運算、處理能力與人工干預之間的速度矛盾,實現了作業自動過渡,也就是自動執行程序,執行完這個程序後自動執行下一個程序,單道的含義就是一次只處理一個程序,如下圖所示,IBM1401爲外圍設備,負責讀入卡片和輸出打印,IBM7094爲主機,負責主要的計算處理工作:
    在這裏插入圖片描述
  • 單道批處理系統具有順序性,即磁帶上的各道作業是順序地進入內存,各作業的完成順序與他們進入內存的順序相同;具有單道性,即內存中僅有一道程序運行;具有自動性,即一個程序運行結束後會自動運行下一個程序
  • 單道批處理系統優點是減少了CPU的空閒時間,提高了主機CPU和I/O設備的使用效率,提高了吞吐量。它的缺點是CPU和I/O設備使用忙閒不均,因爲在讀入數據和輸出打印時,CPU是等待狀態,而外圍機是忙碌狀態,當CPU進行計算處理時處於忙碌狀態,而外圍機又處於等待狀態,也正是因爲忙閒不均問題導致了後面的多道批處理系統的出現

2.4 多道批處理系統

多道程序設計60年代中 ~ 70年代中(集成電路時代),它的思想是在內存中同時存放幾個作業,使之都處於執行的開始點和結束點之間多個作業共享CPU、內存、外設等資源,目的是爲了提高資源的利用率

多道批處理系統的出現得益於60年代通道中斷技術的出現:

  • 通道:是一種專用部件,負責外部設備與內存之間信息的傳輸
  • 中斷:指主機接到外界的信號(來自CPU外部或內部)時,立即中止原來的工作,轉去處理這一外來事件,處理完後,主機又回到原來工作點繼續工作

下圖是單道程序和多道程序的運行情況,豎軸爲設備,橫軸爲時間,可以發現在單道程序中,某個時間點只有一個設備在工作,而在多道程序中,在某個時間點可能有多個設備在同時工作,這就大大的提高了效率,有效改善了單道程序中各設備忙閒不均的問題
在這裏插入圖片描述

  • 多道程序批處理系統中在內存中同時有多個作業,CPU在其中切換,只要系統中總是存在可執行的作業,CPU就永遠不會因無事可幹而閒着,多道程序最大的優點就是通過組織作業使得CPU總在執行其中一個作業,從而提高了CPU的利用率
  • 多道程序批處理系統具有多道性,即內存中同時駐留多道程序併發執行,從而有效地提高了資源利用率和系統吞吐量;具有無序性,即作業的完成順序與它進入內存的順序之間無嚴格的對應關係,有可能某個程序是第一個進來的,但卻是最後一個被執行的;具有調度性,即作業調度、進程調度,當系統中有多個程序要執行的時候,將通過調度策略來決定哪個程序先執行
  • 多道程序批處理系統優點是提高系統資源利用率,提高系統吞吐量,它的缺點是無交互能力,用戶響應時間長,且作業平均週轉時間長

2.5 多道程序對操作系統特點的要求

多道程序從概念上來說只是增加了併發,提高了資源設備利用率,但是實際上它是對單道程序的質的飛躍,在設計過程中,也對操作系統提出了更高的要求:

  • 存儲管理(Memory management):系統必須爲若干作業分派空間
  • CPU調度(CPU scheduling):系統必須在就緒作業中挑選
  • 資源競爭和共享(Resource competition and sharing )
  • 設備分配(Allocation of devices)
  • 系統提供 I/O 程序( I/O routine supplied by the system)
  • 文件管理(File management )

2.6 分時系統

根據上面所述的多道批處理操作系統的缺點,即缺少用戶交互,於是在多道的基礎上用戶的新需求,第一點就是多任務處理(多用戶),第二點就是能支持人和機器的交互服務,這些需求也就是後來發明分時系統所實現的

分時系統,70年代中期至今,分時是指多個用戶分享使用同一臺計算機,分時共享硬件和軟件資源,分時系統的實現方式有兩種,多個用戶分時和前臺和後臺程序(foreground & background)分時:

  • 多個用戶分時:單個用戶使用計算機的效率低,因而允許多個應用程序同時在內存中,分別服務於不同的用戶。有用戶輸入時由CPU執行,處理完一次用戶輸入後程序暫停,等待下一次用戶輸入,表現的形式就是時走時停
  • 前臺和後臺程序(foreground & background)分時:前臺程序一般指的是和人有交互的程序,後臺程序通常是不與人交互的程序,後臺程序不佔用終端輸入輸出,不與用戶交互,表現的形式是現在的圖形用戶界面(GUI),除當前交互的程序(輸入焦點)之外,其他程序均作爲後臺

分時的具體實現方式是按時間片(time slice)分配:各個程序在CPU上執行的輪換時間,如下圖,主機連接多個終端,多個終端同時共享這個主機,那麼此時要解決的問題是如何才能及時接收,如何才能及時處理。及時接收可能比較簡單,可以設置一個輸入緩存,把多個終端的輸入放到緩存裏,然後主機輪流處理即可。那麼及時處理就比較複雜,這對系統提出了更高的要求,如果程序是在外存上顯然不在運行狀態,是不能做到及時處理的,原來的多道程序是由外存進入到內存中所以無法實現及時處理,那麼分時系統則要求作業直接進入內存,只有這樣系統才能及時的處理用戶的輸入和請求,另外通過時間片可以讓每個作業一次只運行很短的時間,這樣使得每個用戶的輸入都能被及時處理,給用戶的感覺就是自己獨佔了這臺計算機一樣

分時技術:把CPU的響應時間分成若干個大小相等(或不等)的時間單位,稱爲時間片(如100毫秒),每個終端用戶獲得CPU(獲得一個時間片)後開始運行,當時間片到,該用戶程序暫停運行,等待下一次運行


分時具有如下特點:

  • 多路性:衆多聯機用戶可以同時使用同一臺計算機
  • 獨佔性:即各終端用戶感覺到自己獨佔了計算機
  • 交互性:用戶與計算機之間可進行“會話”
  • 及時性:用戶的請求能在很短時間內獲得響應

在分時系統的基礎上,操作系統的發展開始分化,如實時系統、通用(桌面)系統、網絡系統、分佈式系統等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章