1. 程式人生 > >第一章 作業系統概述-2

第一章 作業系統概述-2

                                                      上次內容

作業系統的目標和作用
作業系統定義
作業系統發展過程
三大基本作業系統型別
微機作業系統

UNIX 多使用者多工
WINDOWS 單使用者多工
DOS 單使用者單任務

                                                  1.3  作業系統的基本特徵

各種典型作業系統各有特色,但均具有共同的基本特徵:
併發
共享
虛擬
非同步
多道併發是最根本的特徵
併發引出五大管理功能
同時也使OS有了更多的特徵

1.併發concurrence
並行性:兩個或多個事件在同一時刻發生
併發性:兩個或多個事件在同一時段發生

理解CPU併發:
單處理器系統中,多道程式在巨集觀上看似並行,實際在微觀上是多道程式佔用cpu交替執行的,並不是真正的“並行”。多處理器系統才有CPU並行。
單處理器系統中的並行:
在硬體技術支援的條件下,CPU 和 I/O操作能實現並行,這也是多道程式設計能夠提高效率的原因之一。

ps:併發和程序是現代OS最重要的基本概念

2.共享sharing
系統中的資源可供記憶體中多個併發執行的程序(執行緒)共同使用。主要有兩種共享方式:
互斥共享方式:
對臨界資源(如印表機)採用該方式,資源分配給某程序後未釋放前,不能被其他程序所用。
臨界資源(獨佔資源):一段時間內只允許一個程序訪問的資源。
同時訪問方式:
對允許“同時”訪問的資源(如磁碟)採用該方式,但“同時”仍然是“巨集觀並行微觀序列”的,不是真正的同時

                                                 併發和共享互為存在的條件

多個程式併發才導致了資源需要共享
資源共享若沒有協調好,必然影響程式的併發執行

3. 虛擬virtual
通過某種技術把一個物理實體變為若干個邏輯對應物(使用者感覺上的東西),兩種實現方式:
時分複用
一個物品被多人分時使用,在一段時間內就表現為每個人都有一個該物品可用,1虛擬為n。
空分複用
一個物品劃分為多個部分,多個人每人都有一部分可用,主觀上看也是1虛擬成n。

	虛擬處理機
時分複用:多道程式分時間使用一個cpu,直觀上似乎n個程式有n個CPU一樣。
    虛擬印表機
時分複用:對一臺印表機的n個列印請求進行時間的合理調配,直觀上就產生互斥性質的印表機可共享使用,似乎有n個印表機的效果。
虛擬磁碟
時分複用:多個程式可“同時”讀寫
空分複用:1個硬碟對應成4個邏輯區
虛擬記憶體
時分複用:一塊記憶體空間分時的分配給多個程序使用,邏輯上擴大記憶體空間。
空分複用:充分利用記憶體空閒空間,提高記憶體利用率

虛擬是作業系統管理系統資源的重要手段,可提高資源利用率。用於實現虛擬的技術,就稱為虛擬技術。

4.非同步性asynchronism
指程序的執行順序和執行時間的不確定性
程序的執行速度不可預知
由於資源等因素限制,程序通常不能一氣呵成地執行完,多個程序併發執行是“時走時停”的,不可預知每個程序的執行推進快慢;
允許非同步,但結果應正確
只要環境相同,無論快慢,結果應該相同(可再現性),這需要程序互斥和同步手段來保證。

                                            1.4  作業系統的主要功能

處理機管理功能(作業管理)
儲存器管理功能
裝置管理功能
檔案管理功能
使用者介面

在這裡插入圖片描述

1.處理機管理功能
傳統多道程式系統,處理機分配和執行都以程序為基本單位,對處理機的管理,就是對程序的管理。引入執行緒後,也包括對執行緒的管理。
主要解決記憶體中多道併發執行的“程序”如何佔用CPU,如何執行的問題。

1)程序控制:
為作業建立程序、撤銷已結束的程序,控制程序在執行過程中的狀態轉換。以及執行緒的建立撤銷等。
(可理解為對單個程序基本資訊進行管理)
2)程序同步:
為多個程序執行進行協調(包括互斥和同步)
3)程序通訊:
用來實現在相互合作程序間的資訊交換;(直接通訊和網路通訊)
4)排程:
作業排程(入記憶體)和程序排程(分配CPU)

  1. 儲存器管理功能
    1)記憶體分配:為每道程式分配記憶體空間(包產到戶)具體分配涉及許多細節:
    分配方式:動態、靜態
    分配機制需要的資料結構、分配演算法、回收記憶體功能
    2)記憶體保護:確保每道使用者程式都只在自己的記憶體空間中執行
    需要一個硬體——界限暫存器,存放正在執行程序的記憶體上下界,每條指令的訪問地址都要進行越界檢查,一般用硬體實現檢查
    3)地址對映(變換):程序的邏輯地址到記憶體實體地址的對映。
    程式編譯形成的目標程式地址都是從0開始,是邏輯地址
    真正調入記憶體某個空間存放的地址是實體地址
    4)記憶體擴充:用虛擬儲存技術解決記憶體容量不足的問題;
    請求調入功能
    頁面置換功能

在這裡插入圖片描述

  1. 裝置管理功能
    1)緩衝管理:匹配CPU和外設的速度,提高兩者的利用率和並行操作程度;
    2)裝置分配:按某種裝置分配策略,為之分配所需的裝置;
    應設定裝置控制表等資料結構記錄裝置及其控制器的識別符號和狀態;不同的裝置,分配方式不同
    3)裝置處理:裝置處理程式即驅動程式,及時X響應裝置控制器請求,實現CPU和裝置控制器之間的通訊。

  2. 檔案管理功能
    1)儲存空間的管理:分配外存空間,提高外存的利用率,提高檔案系統的執行速度;
    需要相應的資料結構,記錄檔案儲存空間的使用情況;要有對儲存空間分配和回收的功能
    2)目錄管理:為檔案建立目錄項,並有效組織,實現方便的按名存取;提供快速的目錄查詢手段,提高檔案檢索速度;還需實現檔案共享。
    3)檔案的讀寫管理和保護:讀寫操作與有效的存取控制功能。

  3. 使用者介面
    1)命令介面
    使用者可通過鍵盤終端發出命令以控制作業的執行。
    聯機使用者介面:由一組磁碟操作命令和命令解釋程式組成。
    離線使用者介面:由一組作業控制語言組成,如批處理檔案。
    2)程式介面
    使用者程式在執行中訪問系統資源而設定,由一組系統呼叫組成。
    早期組合語言才能使用,後高階語言及C語言中都給出了系統呼叫對應的庫函式。
    3)圖形介面

                                                1.5  作業系統的結構
    

在這裡插入圖片描述
1.傳統的OS結構
1)無結構OS
早期開發OS,只追求實現和效率,缺乏貫穿的設計思想。是一組過程的集合。
問題:
過程互相呼叫,沒有清晰的結構
程式錯誤很多,除錯複雜,閱讀維護困難

2)模組化OS結構
20世紀60年代出現的一種程式設計技術。基於“分解”和“模組化”原則來控制大型軟體的複雜度。
制定功能模組
規定各模組介面
劃分子模組
稱為模組——介面的設計方法,關鍵是模組的劃分和規定介面。
優點:
提高設計的正確性、可理解性和可維護性;
增強了OS的可適應性,可選用相應功能模組,也可進行增減和修補以滿足新需求;
加速了開發過程;
問題:
設計初期,模組劃分和介面規定不精確並且很難保證完全正確;介面規定與實際完成的模組需求不匹配會發生裝配困難。
各模組的設計齊頭並進,沒有決策順序,是一種“無序“模組,模組間仍會有複雜依賴關係,反而可能會使OS結構不清晰。

3)分層式OS結構
改進設計方式,變無序為有序——分層的思想
在物理機器上逐漸新增具有一定功能的軟體層,每一層僅使用底層提供的功能和服務。(功能流水線)
優點:
易保證系統正確性
易擴充和維護
缺點:
分層單向依賴,執行一個功能,總要自下而上地穿越多層,增加系統通訊開銷,降低了效率。

2.微核心OS結構
Micro Kernel作業系統結構於20世紀80年代後期發展起來。尤其在多處理機環境下,更適用微核心技術。
與客戶/伺服器技術,面向物件技術同時發展起來的。微核心OS結構以OS為核心,以C/S為基礎,採用了面向物件程式設計方法。
1)客戶/伺服器技術
2)面向物件技術
3)微核心

1)Client/Server模式
三部分組成:客戶端、伺服器、網路系統
互動方式:客戶請求,伺服器接收訊息,回送訊息,客戶接收訊息,四步。
優點:資料分佈處理和儲存;靈活可擴充,易於修改維護,仍方便集中管理。

2)面向物件程式設計技術
Object-Orientated Programming
具有相同屬性、規則的事物抽象成物件,利用被封裝的資料結構對具體物件例項進行操作。
程序、執行緒、訊息、儲存器都可抽象成物件。
可修改、擴充,具有繼承性,容易保證正確和可靠性。

3)微核心
精心設計、實現一個可在其上構建通用OS的基礎核心,該核心程式執行在核心態,開機常駐記憶體。
當前微核心作業系統結構仍沒有一致公認的定義,但可從以下4方面進行描述:
1)足夠小的核心
微核心並非一個完整的OS。與硬體緊密相關,實現較基本功能,複雜客戶和伺服器通訊。
2)基於C/S模式
3)應用”機制與策略分離“原理
機制——實現某一功能的具體執行機構,位於基層;策略——藉助某些引數和演算法實現功能優化或達到不同功能目標,位於系統高層。
4)採用面向物件技術
在這裡插入圖片描述
微核心的優點:
靈活、可擴充:可選配功能伺服器模組
增強可靠性:核心是穩定的核心,只有它能直接訪問硬體。伺服器在使用者態出錯絕不會導致系統癱瘓。
可移植性:作業系統絕大部分(各種伺服器程式)與硬體平臺無關,在不同硬體平臺間移植時修改比較小。
該機制尤其適用於分散式系統
採用面向物件技術,減少開發開銷

微核心存在的問題:
執行效率降低:
一次客戶請求需要多次訊息傳遞和使用者/核心模式的上下文切換,開銷增大。
有的服務需要藉助其他服務,則需要的切換開銷更大。
如何改善:
重新把一些常用基本功能由伺服器移入核心。代價就是核心容量增大,介面定義和效能也將受影響。

微核心系統舉例——Mach OS
美國卡內基梅隆Carngie-Mellon大學研製
它實現了一個微小的核心,包括執行緒排程、訊息傳遞、虛擬記憶體和裝置驅動。除這些之外,其它各種應用程式介面、檔案系統、網路等等都執行在使用者模式下。
然而,在Mach微核心作業系統的商用實現中,基本上所有的檔案系統、網路和記憶體管理程式碼都執行在核心模式。因為純微核心系統過於低效,在商用上是不切實際的。

Windows NT
是微核心的,嚴格意義上講,是混合核心
它讓一些微核結構執行在使用者空間的程式碼執行在核心空間,這樣讓核心的執行效率更高些。
LINUX
單核心,層次化設計了模組機制

從整體上看,在當前的硬體條件下,微核心在效率上的損失小於其在結構上獲得的收益,故而選取微核心成為作業系統的一大潮流。微核心結構將是21世紀的主流OS結構。它可有效支援多處理機,非常適用分散式系統。