主要内容
2.1 作業系統的目标和功能
2.2 作業系統的發展史
2.3 主要成就
2.4 現代作業系統的特征
2.5 容錯性
2.6 多處理器和多核作業系統設計考慮因素
2.7 微軟Windows系統簡介
2.8 傳統的UNIX系統
2.9 現代UNIX系統
2.10 Linux作業系統
作業系統是控制應用程式執行的程式, 并充當應用程式和計算機硬體之間的接口。
它有三個主要目标:
- 友善
- 有效
- 擴充能力
2.1.1 作為使用者/計算機接口的作業系統
計算機接口
典型計算機系統中的三種重要接口
指令系統體系結構(ISA) :
定義了計算機遵循的機器語言指令系統,該接口是硬體與軟體的分界線。注意,應用程式和公用程式都可直接通路ISA,這些程式使用ISA的一個子集(使用者級ISA)。作業系統能使用其他一些處理系統資源的機器語言指令(系統級ISA)
應用程式二進制接口(ABI):
定義了程式間二進制可移植性的标準。
應用程式程式設計接口(API):
允許應用程式通路系統的硬體資源和服務。這些服務使用者級ISA和進階語言庫(HLL)調用來提供
使用者接口
指令接口
由一組“指令”集組成,分為聯機和脫機使用者接口
1.聯機使用者接口2.脫機(批處理使用者接口)
- 由一組鍵盤操作指令及指令解釋程式Shell所組成
- 用JCL寫作業說明書
程式接口
- 系統調用,作業系統提供的應用程式接口(API),提供給使用者在程式設計時使用
- 進階語言的庫函數,例如:讀磁盤操作,在C程式代碼裡将加入語句
result=read (fd, buffer, nbytes);
圖形接口
如 win的copy檔案,采用“拖”來完成,生動,不需記憶
作業系統提供的服務
- 程式開發
- 程式運作
- I/O裝置通路
- 檔案通路控制
- 系統通路
- 錯誤檢測和響應
- 記賬
2.1.2 作為資料總管的作業系統
作業系統的作用
- 一台計算機就是一組用于移動、存儲和處 理資料的資源
- 作業系統負責管理這些資源
從軟體視角看作業系統
- 作業系統與普通計算機軟體的作用相同, 即它是由處理器執行的一段程式或一組程式
- 作業系統經常會釋放控制,而且必須依賴 處理器才能恢複控制
下圖顯示了由作業系統管理的主要資源
2.1.3 作業系統的易拓展性
重要的作業系統應能不斷發展,原因如下:
- 硬體更新和新型硬體出現
- 新的服務
- 糾正錯誤
作業系統為什麼改變
主要功能: 硬體抽象和協調管理
原則: 設計随着各種相關技術的改變而做出一定的改變,在過去二十年底層技術有極大的改變 !!
發展階段
2.2.1 串行處理
串行處理時期(20世紀40年代後期到50年代中期),沒有作業系統,使用者必須順序通路計算機。
存在兩個主要問題:
- 排程
- 準備時間
作業系統=裝載器+通用子程式庫
問題: 昂貴元件的低使用率
2.2.2 簡單批處理系統
産生原因
早期計算機非常昂貴,同時由于排程和準備而浪費的是件令人難以接受,是以最大限度利用處理器是非常重要的。
中心思想
使用一個稱為監控程式的軟體。通過使用這類作業系統,使用者不再直接通路機器,相反使用者把卡片或錄音帶中的作業送出給計算機操作員,由操作員把這些作業按順序組織成批,并将整個批作業放到輸入裝置上,供監控程式使用。每個程式完成處理後傳回到監控程式,同時監控程式自動加載下一個程式。
第一個作業系統(第一個批處理作業系統):20世紀50年代中期,General Motors開發,用于IBM
701
順序執行與批處理
想要了解這一方案如何運作,可以從以下兩個角度分析
監控程式視角
監控程式控制事件的順序。常駐監控程式總是處于記憶體中 并且可以執行。其他部分包括一些實用程式和公用函數,他們作為使用者程式的子程式,在需要用到他們的作業開始執行時才被載入。
監控程式每次從輸入裝置(通常是卡片閱讀機或錄音帶驅動器)中讀取一個作業,并把控制權交給這 個作業。作業完成後,它将控制權傳回給監控程式,監控程式立即讀取下一個作業。每個作業的結果被發送到輸出裝置,傳遞給使用者。
處理器視角
處理器執行記憶體中存儲監控程式區域部分的指令,這些指令讀入下一個作業并存儲到記憶體中的另一部分。處理器繼而執行使用者程式中的指令,直到遇到一個結束指令或錯誤條件。
“控制權交給作業” 意味着處理器目前取的和執行的都是使用者程式中的指令
“控制權傳回給監控程式” 意味着處理器目前從監控程式取指令并執行指令
作業控制語言JCL
作業控制語言JCL是一種特殊類型的程式設計語言, 用于為監控程式提供指令。
其他必要的硬體支撐
- 記憶體保護機制
當使用者程式正在運作時,不能改變包含監控程式的記憶體區域
- 定時器
防止一個作業獨占系統
- 特權指令
某些機器指令被設計成特權指令,隻能由監控程式執行
- 中斷
為作業系統在讓使用者程式放棄控制權或讓使用者程式獲得控制權時,具有更大的靈活性
運作模式
使用者模式
使用者程式在使用者模式下執行,使用者程式所占據的記憶體區域是受保護的,特權指令也不允許執行
核心模式
監控程式在核心模式下執行,可以執行特權指令,可以通路受保護的記憶體區域
簡單批處理系統開銷
處理器時間用于交替執行使用者程式和監控程式, 犧牲了一部分記憶體傳遞給監控程式使用,同時監控程式消耗了一部分處理器時間。盡管存在系統開銷,簡單批處理系統還是提高了計算機
的使用率
2.2.3 多道批處理系統
即便簡單批處理系統提供自動作業序列,處理器仍經常處于空閑狀态。但問題在于I/O裝置相對于處理器而言速度太慢,下圖列出了一個代表性的計算過程
單道程式設計
隻有一個單獨程式的情況稱為單道程式設計,如下圖
處理器花費一定的運作時間進行計算,直到遇到一個I/O指令,這是它必須等到該I/O指令結束後才能繼續進行。
缺點:效率低
多道程式設計
當一個作業需要等待I/O時,處理器可以切換到另一個可能并不在等待I/O的作業,這種處理模式稱為多道程式設計或多任務處理。
這種處理方式需要有足夠的記憶體空間加載作業系統(常駐監控程式)和不少于1個使用者程式。
進一步還可以擴充記憶體確定可加載3個、4個程式 或更多的程式,且在它們之間進行切換
多道程式設計是現代作業系統的主要任務方案。它可以保持多個工作在記憶體中并且在各工作間 複用CPU。
多道程式設計執行個體
資源使用效果
多道程式設計作業系統要比單個程式或單道程式設計系統複雜。待運作的多個作業須保留在記憶體中,是以需要記憶體管理。此外,準備運作多個作業時,處理器必須決定運作哪個作業,是以需要某種排程算法。
2.2.4 分時系統
為什麼要有分時系統?
批處理使用者不能幹預自己程式的運作,無法得知 程式的運作情況,不利于程式調試和排錯。
多道程式設計允許處理器同時處理多個批處理作業,還可以處理多個互動作業。對于後者而言,由于多個使用者分享處理器時間,是以該技術稱為分時。
分時系統允許多個聯機使用者同時使用一個計算機系統進行互動式計算,由作業系統控制每個使用者程式在很短的時間内交替執行。
分時和多道程式設計引發的新問題:
- 作業的互相幹擾
- 檔案系統的保護
- 處理資源的競争
在分時系統中,作業系統會定時中斷用于工作對CPU的複用。
批處理多道程式設計 vs.分時
相容分時系統CTSS
第一個分時作業系統,由MIT Project MAC項目組最初于1961年為IBM 709開發。
該系統運作在一台記憶體為32,000個36位字的計算機上,常駐監控程式占用了5000個字,使用者程式通常在第5000個字位置開始載入,這簡化了監控程式和記憶體管理。
系統時鐘以約每隔0.2s的速度産生一個中斷,在每個時鐘中斷處,作業系統恢複控制權,并将處理器配置設定給另一個使用者在固定的時間間隔内,目前使用者被搶占,另一個使用者被載入。老使用者程式和資料被寫出到磁盤。随後在獲得下一次機會時,老使用者程式代碼和資料被恢複到記憶體中。
2.2.5* 個人電腦/移動終端作業系統
特點
- 單使用者
- 使用率已不再是關注點
- 重點是使用者界面和多媒體功能
- 很多老的服務和功能不存在
演變
- 最初: 作業系統作為一個簡單的服務提供者 (簡單庫)
- 現在:支援協調和溝通的多應用系統
- 越來越多的安全問題 (如,電子商務、醫療記錄)
2.2.6* 分布式作業系統
- 網絡支援成為一個重要的功能
- 通常支援分布式服務
跨多系統的資料共享和協調
- 可能使用多個處理器
松、緊耦合系統
- 高可用性與可靠性的要求
作業系統是最複雜的軟體之一。
4個重要理論進展
- 程序
- 記憶體管理
- 資訊保護和安全
- 排程和資源管理
2.3.1 程序
程序概念是作業系統設計的核心。
一個程序可以定義為:
程序概念的發展
計算機系統的發展有三條主線,它們在時間安排和同步中所産生的問題推動了程序概念的發展:
多道程式批處理操作分時
- 作業系統對記憶體中駐留的不同程式進行處理器切換
實時事務系統
- 能及時響應單個使用者的要求,但由于成本原因,又要可以同時支援多 個使用者
- 很多使用者都在對資料庫進行查詢或修改
設計出能夠協調各種不同活動的系統軟體非常困難
産生錯誤原因
不正确的同步失敗的互斥
- 一個程式啟動了一個I/O讀操 作,在繼續進行前必須等到緩沖區中有資料
- 這時需要來自其他例程的一個信号,而設計得不正确的信号機制可能導緻信号丢失或接收到重複信号
不确定的程式操作
- 常常會出現多個使用者或程式試圖同時使用一個共享資源的情況
- 必須有某種互斥機制保證一次隻允許一個例程對一部分資料執行事務處理
- 很難證明這類互斥機制的實作對所有可能的事件序列都是正确的
死鎖
- 當程式共享記憶體且處理器控 制它們交替執行時,它們可能會因為重寫相同的記憶體區域而發生不可預測的互相幹擾
- 程式排程順序可能會影響某 個特定程式的輸出結果
- 很可能有兩個或多個程式互相挂起等待
- 可能依賴于資源配置設定和釋放的時機安排
一個程序由三部分構成
- 一段可執行的程式
- 程式所需要的相關資料(變量、工作空間、緩沖區等)
- 程式的執行上下文(或程序狀态)
執行上下文是根本,執行上下文又稱程序狀态。
- 作業系統用來管理和控制程序所需的内部資料
- 包括各種處理器寄存器的内容,如程式計數器和資料寄存器
- 還包括作業系統使用的資訊,如程序優先級、程序是否在等待特定I/O事件的完成
程序管理
任何時候整個程序狀态都包含在其上下文環境中。
在作業系統中可能會設計和并入一些新的特征(如優先級),這可通過擴充上下文環境以包括支援這些特征的新資訊。
2.3.2 記憶體管理
作業系統擔負着5項存儲器管理職責:
- 程序隔離
作業系統必須保護獨立的程序,防止互相幹擾各自的存儲空間,包括資料和指令
- 自動配置設定和管理
程式應該根據需要在存儲層次間動态地配置設定,配置設定對程式員是透明的。是以,程式員無須關心與存儲限制有關的問題,作業系統會有效地實作配置設定問題,可僅在需要時才給作業配置設定存儲空間
- 支援子產品化程式設計
程式員應該能夠定義程式子產品,并動态地建立、銷毀子產品,動态地改變子產品的大小
- 保護和通路控制
不論在存儲層次中的哪一級,存儲器的共享都會産生一個程式通路另一個程式存儲空間的潛在可能性。當某個特定的應用程式需要共享時,這是可取的。但在其他時候,它可能會威脅到程式的完整性,甚至威脅到作業系統自身。作業系統必須允許一部分記憶體可以由各種使用者以各種方式進行通路。
- 長期存儲
許多應用程式需要在計算機關機後長時間地儲存資訊。
虛拟存儲
虛存機制允許程式以邏輯方式通路存儲器,而不考慮實體記憶體上可用的空間數量,虛存的構想是為滿足有多個使用者作業同時駐留在記憶體中的要求,是以在一個程序被寫出到輔存中且後續程序被讀入時,連續的程序執行之間将不會脫節。
分頁
在分頁系統中,程序由許多固定大小的塊組成,這些塊稱為頁
程式通過虛位址通路字
- 虛位址由頁号和該頁中的偏移量組成
- 程序的每頁都可能置于記憶體中的任何地方
分頁系統提供了程式中使用的虛位址和記憶體中的實位址或實體位址之間的動态映射
2.3.3 資訊保護和安全
環境不同,企業所面臨的威脅也不同。我們更關注計算機系統 的通路控制和資訊安全。
2.3.4 排程和資源管理
作業系統的一個關鍵任務是抽象化管理各種可用資源(記憶體空間、I/O裝置、處理器),并排程各種活動程序來共享使用這些資源
資源配置設定政策必須考慮:
- 公平性: 通常希望給競争使用某一特定資源的所有程序提供幾乎同等和公平的通路機會。對同一類作業,即有類似請求的作業,更需要如此
- 有差别的響應性: 另一方面,作業系統可能需要區分具有不同服務要求的不同作業類别。作業系統将試圖做出滿足所有要求的配置設定和排程決策,并動态地做出決策。例如,若某個程序正在等待使用一個I/O裝置,作業系統會盡可能迅速地排程這個程序,進而釋放該裝置以友善其他程序使用
- 有效性: 作業系統希望獲得最大的吞吐量和最小的響應時間,并在分時情形下,能夠容納盡可能多的使用者。這些标準互相沖突,在給定狀态下适當折中是作業系統的一個正在研究的問題。
人們對作業系統要求的變化,不僅要求設計人員修改和增強作業系統的現有體系結構,而且要求設計人員采用新的作業系統組織方法。
設計人員采用了很多不同的方法和設計要素:
- 微核心結構
- 多線程
- 對稱多處理
- 分布式作業系統
- 面向對象設計
OS結構
- 簡單結構,宏/單體(Macro/Uni kernel)
- 分層結構,宏/單體(Macro/Uni kernel)
- 微核心結構(Microkernel)
- 外核結構
簡單結構
MS-DOS – 在最小的空間,設計用于提供大部分功能 (1981~1994)
- 沒有拆分為子產品
- MS-DOS 在接口和功能水準沒有很好地分離,主要用彙編語言編寫
- 其它作業系統一般用C語言等進階語言編寫,主要好處在于代碼可以寫得更快、更緊湊、更容易了解和調試,更易于移植到其他硬體
分層結構
分層結構将作業系統分為多層 (levels)
- 每層建立在低層之上
- 最底層(layer 0), 是硬體
- 最高層(layer N) 是使用者
每一層僅使用更低一層的功能(操作)和服務
THE系統是第一個分層結構的作業系統
缺點: 清晰定義層次間接口非常困難
僅給核心配置設定一些最基本的功能:
- 位址空間
- 程序間通信(IPC)
- 基本的排程
這種方法設計簡單、易于實作、提高靈活性,非常适用于分布式環境。
微核心結構盡可能把核心功能移到使用者空間,一般隻包含程序間通信、程序管理與排程、存儲管理,檔案系統之類功能移出核心。
使用者子產品間的通信使用消息傳遞。
好處: 靈活/安全…
缺點: 性能
設計理念
盡可能減少軟體的抽象化,使 得開發者可以專注于硬體的抽象化;同時簡化傳統微核心的消息傳遞機制,以及整塊核心的軟體抽象層,讓核心配置設定機器的實體資源給多個應用程式 , 并讓每個程式決定如何處理這些資源。程式能連結到作業系統庫(libOS) 實作了作業系統抽象,保護與控制分離
VMM(虛拟機管理器)
虛拟機管理器将單獨的機器接口轉換成很多的虛拟機,每個虛拟機都是一個原始計算機系統的有效副本, 并能完成所有的處理器指令。
多線程技術是把執行一個應用程式的程序劃分為可以同時運作的多個線程
線程
• 可分派的工作單元
• 包括處理器上下文環境(包含程式計數器和棧指針)和棧中自身的資料區域(用于啟用子程式分支)
• 線程順序執行且可以中斷
• 一個或多個線程和相關系統資源(如包含資料和代碼的存儲器空間、打開的檔案和裝置)的集合
• 通過把一個應用程式分解成多個線程,程式員可以在很大程度上控制應用程式的子產品性及其相關事件的時間安排
對稱多處理SMP
該術語不僅指計算機硬體體系結構,也指采用該體系結構的作業系統行為
若幹程序可以并行運作,多處理器的存在對使用者是透明的。
- 這些處理器共享記憶體和I/O裝置
- 所有處理器可以執行相同的功能
作業系統負責在多個處理器中排程線程或程序,并負責處理器間的同步
對稱多處理SMP優勢
性能 | 多個程序可分别在不同的處理器上同時運作 |
---|---|
可用性 | 單個處理器的失效不會導緻系統停機 |
增量/增長 | 使用者可通過添加額外處理器的數量來提高系統的性能 |
可擴充性 | 廠商可以提供一系列不同價格和性能名額的産品,其中産品性能可通過系統中的處理器數量來配置 |
作業系統設計
分布式作業系統會使使用者産生錯覺,多機系統好像具有:
- 單一的記憶體空間
- 單一的外存空間
- 統一的存取措施
分布式作業系統的技術發展水準仍落後于單處理器作業系統和對稱多處理作業系統
用于給小核心增加子產品化的擴充,基于對象的結構可使程式員定制作業系統,而不會破壞系統的完整性。
面向對象技術還使得分布式工具和分布式作業系統的開發變得更容易。
容錯性指系統或部件在發生軟/硬體錯誤時,能夠繼續正常運作的能力。通常會涉及一定程度的備援,它旨在提高系統的可靠性,通常需要在經濟層面或性能層面付出一定的代價。 在多大程度上采取容錯措施必須要由所消耗資源的重要程度來決定
基本概念(基本度量名額)
可靠性
- R(t)
- 從時刻t=0開始系統正确運作,到時刻t時該系統正确運作的機率
平均失效時間(MTTF)
平均修複時間(MTTR)
指修複或替換錯誤部分所花費的平均時間
可用性A
- 系統能夠有效服務使用者請求的時間段
- 系統不可用的時間稱為當機時間(downtime)
- 系統可用的時間稱為正常運作時間(uptime)
作業系統機制
作業系統軟體中采用了許多技術來提高容錯性:
- 并發控制
- 虛拟機
- 檢測點和復原機制
多處理器作業系統不僅要提供多道系統的所有功能,而且必須提供适應多處理器需要的額外功能
關鍵設計問題:
衆核系統的設計挑戰是,如何有效利用多核計算能力以及如何智能且有效地管理晶片上的資源,核心關注點在于如何将衆核系統固有的并行能力與應用程式的性能需求相比對
可以從三個層次開發其潛在的并行能力:
- 每個核内部的硬體并行,即指令級并行
- 每個處理器上多道程式或多線程程式的執行能力
- 在多核上一個應用程式以并發多程序或多線程形式執行的潛在并行能力
多線程優化技術GCD
應用層并行
必須由開發者來判斷應用的哪部分應異步執行,哪部分應并行執行,最有效的方法是Grand Central Dispatch (GCD)
在Mac Os X 10.6上實作
雖然GCD不能幫助開發者決定如何将任務或應用分解成單獨的并發部分,但一旦開發者辨別出可獨立運作的子任務,GCD将使其盡可能更容易實 現
本質上,GCD是一種線程池機制
GCD的新意在于對程式設計語言的擴充,這使得匿名方法(稱為塊)成為指 定任務的一種方式
虛拟機方法
如果為一個程序配置設定一個或更多的核,并讓處理器隻去處理該程序,就能避免很多由任務切換及排程引起的開銷。多核作業系統就成為了管理程式,負責為應用程式配置設定“核”資源的高層次決策,而不用過多地關注其他資源的配置設定
曆代版本
- MS-DOS
- Windows 3.0
- Windows 95
- Windows 98
- Windows Me
- Windows NT 3.1
- NT 4.0
- Windows 2000
- Windows XP
- Windows Vista
- Windows Server 2008
- Windows 7
- Windows 10
- 面向雲計算的NT版本Windows Azure
Linux是由芬蘭藉科學家Linus Torvalds于1991年編寫完成的作業系統核心。 許多人對Linux進行改進、擴充、完善,做出了關鍵性貢 獻。Linux由最初一個人寫的原型變成在Internet上由無數志同道合的程式高手們參與的一場運動。
Linux作業系統的技術特點
- 自由軟體(開源軟體)
- 核心品質高
- 高度子產品化
- 易于配置
作業系統演變中的計算機系統
參考教材
《作業系統——精髓與設計原理(第九版)》 [美] William Stallings 著 陳向群 陳渝 譯 電子工業出版社
課堂筆記,如有錯誤之處,敬請指正!
本文同時釋出在CSDN中,連結:https://blog.csdn.net/tangkcc/article/details/114852154