1. 程式人生 > >作業系統筆記第一章(2)

作業系統筆記第一章(2)

第一章:作業系統引論(2)

<三>、作業系統的基本特徵
不同作業系統都具有各自不同的特徵:
批處理系統:有高的資源利用率和系統吞吐量
分時系統:能及時獲得響應
實時系統:具有實時特徵
他們有共同的基本特徵:併發,共享,虛擬,非同步(多道併發是最根本的特徵)
①併發:(併發和程序是現代OS最重要的基本概念 )
並行性:兩個或多個事件在同一時刻發生
併發性:兩個或多個事件在同一時段發生
②共享:系統中的資源可供記憶體中多個併發執行的程序(執行緒)共同使用
臨界資源(如印表機)採用互斥共享方式方式,資源分配給某程序後未釋放前,不能被其他程序所用。
臨界資源(獨佔資源):一段時間內只允許一個程序訪問的資源。
允許“同時”訪問的資源(如磁碟)採用同時訪問方式,但“同時”仍然是“巨集觀並行微觀序列”的,不是真正同時。
③虛擬:通過某種技術把一個物理實體變為若干個邏輯對應物(1虛擬為n)
1)時分複用技術:利用某裝置為一使用者服務的空閒時間,又轉去為其他使用者服務,使裝置得到最充分的利用
1>虛擬處理機技術 2>虛擬裝置技術
2)空分複用技術:將一個信道範圍比較廣的通道劃分為多個信道範圍比較窄的通道
1>虛擬處理機
時分複用:多道程式分時間使用一個cpu,直觀上似乎n個程式有n個CPU一樣。
2>虛擬印表機
時分複用:對一臺印表機的n個列印請求進行時間的合理調配,直觀上就產生互斥性質的印表機可
共享使用,似乎有n個印表機的效果。
3>虛擬磁碟
時分複用:多個程式可“同時”讀寫
空分複用:1個硬碟對應成4個邏輯區
4>虛擬記憶體
時分複用:一塊記憶體空間分時的分配給多個程序使用,邏輯上擴大記憶體空間。
空分複用:充分利用記憶體空閒空間,提高記憶體利用率
④非同步:程序的執行順序和執行時間的不確定性
<四>、作業系統的主要功能


①處理機管理功能(作業管理)
傳統多道程式系統,處理機分配和執行都以程序為基本單位,對處理機的管理,就是對程序的管理。引入執行緒後,也包括對執行緒的管理。
1)程序控制:(可理解為對單個程序基本資訊進行管理)
為作業建立程序、撤銷已結束的程序,控制程序在執行過程中的狀態轉換。以及執行緒的建立撤銷等。
2)程序同步:(包括互斥和同步)
為多個程序(含執行緒)執行進行協調
3)程序通訊:(直接通訊和網路通訊)
用來實現在相互合作程序間的資訊交換
4)排程:
作業排程(入記憶體)和程序排程(分配CPU)
②儲存器管理功能
1)記憶體分配:為每道程式分配記憶體空間,提高儲存器利用率,允許正在執行的程式申請附加的記憶體空間,以適應程式和資料動態增長的需要。
包括靜態分配方式(每個作業的記憶體在裝入時確定,裝入後執行期間不可調整)和動態分配方式(作業的基本記憶體空間在裝入時是確定的 但後期可申請附加新的記憶體空間)
2)記憶體保護(可設定兩個界限暫存器,分別用於儲存的上界和下界)
1.確保程式在自己的記憶體空間執行,彼此互不干擾;
2.不允許使用者程式訪問作業系統的程式和資料,也不允許使用者程式轉移到其他非共享的其他使用者程式中執行。
3)地址對映(將地址空間中的邏輯地址轉換為記憶體空間中與其對應的實體地址)
程式編譯和連結後形成的可裝入程式的地址都是從0開始的,但不可能從0地址(物理)裝入記憶體。
4)記憶體擴充(用虛擬儲存技術從邏輯上擴充記憶體容量)
實現功能:
1.請求調入功能:程式執行時繼續執行所需資料和程式尚未裝入記憶體,可呼叫此功能,os從磁碟中將所需功能調入記憶體
2.置換功能:記憶體中無足夠空間裝入需執行的程式和資料呼叫此功能將不用的程式和資料調至磁碟將所需部分裝入記憶體
③裝置管理功能
任務:
1.完成使用者程序提出的I/O請求,為使用者程序提供所需的I/O裝置,並完成指定的I/O操作;
2.提高CPU和I/O裝置的利用率,提高I/O裝置的速度,方便使用者使用I/O裝置。
1).緩衝管理
緩解CPU和I/O裝置速度不匹配的矛盾,提高I/O裝置的利用率,進而提高系統的吞吐量。
2).裝置分配
設定裝置控制表等資料結構記錄裝置及其控制器的識別符號和狀態,按某種裝置分配策略,為之分配所需的裝置,
不同的裝置,分配方式不同
3).裝置處理(裝置驅動程式)
實現CPU與控制器之間的通訊,即CPU向控制器發I/O命令,要求他完成指定的I/O操作,反之CPU接收從控制器
傳送來的中斷請求,並給予快速響應和相應的處理
④檔案管理功能
1)儲存空間的管理:分配外存空間,提高外存的利用率,提高檔案系統的存取速度;
設定相應的資料結構,記錄檔案儲存空間的使用情況;要有對儲存空間分配和回收的功能
2)目錄管理:為檔案建立目錄項,並有效組織,實現方便的按名存取;提供快速的目錄查詢手段,提高檔案檢索速度;還需實現檔案共享。
3)檔案的讀寫管理和保護:
1.檔案的讀寫管理:根據使用者請求,從外存讀取資料,或將資料寫入外存;
2.檔案保護:防止未經核準的使用者存取檔案;
防止冒名頂替存取檔案
防止以不正確的方式使用檔案
⑤作業系統與使用者之間的介面
1)命令介面:使用者可通過鍵盤終端發出命令以控制作業的執行。
聯機使用者介面:由一組磁碟操作命令和命令解釋程式組成。
離線使用者介面:由一組作業控制語言組成,如批處理檔案。
2)程式介面:使用者程式在執行中訪問系統資源而設定,由一組系統呼叫組成。
早期組合語言才能使用,後高階語言及C語言中都給出了系統呼叫對應的庫函式。
3)圖形介面
⑥現代作業系統的新功能
1)系統安全
包括認證技術,密碼技術,訪問控制技術,反病毒技術
2)網路的功能和服務
網路通訊,資源管理,應用互操作
3)支援多媒體
接納控制功能,實時排程,多媒體檔案的儲存
<五>、os結構設計

①傳統作業系統結構
1)無結構作業系統(早期開發OS,只追求實現和效率,缺乏貫穿的設計思想。是為數眾多的過程的集合)
這種os過程互相呼叫,沒有清晰的結構,程式錯誤很多,除錯複雜,閱讀維護困難
2)模組化結構os
概念:基於“分解”和“模組化”的原則控制大型軟體的複雜度,按其功能精心劃分為若干個具有一定獨立性和大小的模組
模組獨立性:(標準:內聚性 模組內部各部分間聯絡的緊密程度 耦合度 模組間相互聯絡和相互影響的程度)
內聚性和獨立性成正比,耦合度和獨立性成反比
優點:
(1)提高os設計的正確性、可理解性和可維護性
(2)增強了os的可適應性
(3)加速了os的開發過程
缺點:
設計初期模組劃分和介面規定不精確,且很難保證完全正確,介面規定與實際完成的模組需求不匹配發生裝配困難
各模組的設計齊頭並進,沒有決策順序,是一種“無序“模組,模組間仍會有複雜依賴關係,反而可能會使OS結構不清晰
3)分層式結構os(每一步都建立在可靠的基礎上,每一層僅能使用其底層所提供的功能,使系統除錯和驗證變容易)
優點:易保證系統正確性;易擴充和維護
缺點:分層單向依賴,執行一個功能,總要自下而上地穿越多層,增加系統通訊開銷,降低了效率。
②客戶伺服器方式(c/s client/server model)
由客戶端、伺服器、網路系統組成
互動方式:
1)客戶端傳送請求訊息
2)伺服器接收訊息
3)伺服器回送訊息
4)客戶機接收訊息
c/s優點:
1)資料分佈處理和儲存:客戶機可進行本地的處理和資料的分佈儲存,擺脫了將資料放在主機中造成的既不可靠又容
易產生瓶頸的困難局面
2)便於集中管理
3)靈活性和可擴充性:理論上客戶機和伺服器的數量不限,其靈活性還表現在可配置多種型別的伺服器和客戶機
4)易於改編應用軟體
c/s缺點:
存在不可靠性和瓶頸問題
③面向物件的程式設計(基於“抽象”和“隱蔽”原則控制大型軟體的複雜度)
物件:指在現實世界中具有相同屬性,服從相同規則的一系列事物
物件類:定義許多大體相似的物件,且定義了一組變數和針對該變數的一組方法用他們描述一組物件的共同屬性和行為
繼承:根據已有類(父類)定義一個新的類(子類),繼承是父類和子類之間共享變數的機制,子類自動繼承父類變數和方法,並允許子類在增加新的內容
優點:
1)通過“重用”提高產品的質量和生產率
2)使系統具有更好的易修改性和可擴充性
3)更易於保證系統的“正確性”和“可靠性”
④微核心os結構
微核心:精心設計、實現一個可在其上構建通用OS的基礎核心,該核心程式執行在核心態,開機常駐記憶體
微核心作業系統是:
1)足夠小的核心:微核心並非一個完整的OS。與硬體緊密相關,實現較基本功能,複雜客戶和伺服器通訊
2)基於C/S模式
3)應用”機制與策略分離“原理
機制——實現某一功能的具體執行機構,位於基層
策略——藉助某些引數和演算法實現功能優化或達到不同功能目標,位於系統高層
4)採用面向物件技術
微核心os的基本功能:
1)程序(執行緒)管理,包括程序排程、程序通訊、程序同步等
2)低階儲存管理
3)中斷和陷入處理
微核心的優點
1)靈活、可擴充,提高了系統的擴充套件性:可選配功能伺服器模組
2)增強系統可靠性:核心是穩定的核心,只有它能直接訪問硬體。伺服器在使用者態出錯絕不會導致系統癱瘓
3)可移植性強:作業系統絕大部分(各種伺服器程式)與硬體平臺無關,在不同硬體平臺間移植時修改比較小
4)該機制尤其適用於分散式系統
5)融入面向物件技術,減少開發開銷
微核心存在的問題
執行效率降低:
一次客戶請求需要多次訊息傳遞和使用者/核心模式的上下文切換,開銷增大
有的服務需要藉助其他服務,則需要的切換開銷更大
改進方法:
重新把一些常用基本功能由伺服器移入核心。代價就是核心容量增大,介面定義和效能也將受影響
Windows NT:是微核心的,嚴格意義上講,是混合核心
它讓一些微核結構執行在使用者空間的程式碼執行在核心空間,這樣讓核心的執行效率更高些。
LINUX:
單核心,層次化設計了模組機制