在學習作業系統時總結了筆記,并分享出來,特别是藍色和紅色字型。有問題請及時聯系部落客:Alliswell_WP,轉載請注明出處。
參考書:《作業系統》谌衛軍等,清華大學出版社,2012年5月
參考視訊:清航全套計算機專業課視訊
目錄
1.計算機概述
2.作業系統的概念
3.作業系統的發展曆史
4.作業系統的類型
5.作業系統需要的硬體特性
第一章 作業系統概述(計算機體系結構圖、單道批處理、特權指令、程式狀态字PSW、棧幹嘛用)
1.計算機概述
思考兩個問題:1)在一個計算機系統中,包括哪一些硬體裝置?
2)如何把這些硬體裝置搭建成一個系統,什麼結構?
計算機指令:指令是計算機運作的最小的功能機關,是指揮計算機硬體運作的指令。
如:算術運算指令、邏輯運算指令、移位操作指令、資料傳送指令、輸入輸出指令、轉移指令等。
指令組成:操作碼+操作數1+操作數2……
如:模仿 小雞
加 1 3
2.作業系統的概念
為什麼計算機種要引入作業系統?
如果程式員直接對硬體程式設計……
需要了解:鍵盤的工作原理?如何把鍵盤緩沖區中的資料拷貝到記憶體?顯示器的工作原理?如何在螢幕的某個特定位置顯示某字元?
怎麼辦?
在硬體和應用軟體之間,引入一層軟體,其功能為:
1)管理系統的各個部件,使之能正常運轉;2)在上層的應用軟體提供一個易于了解和程式設計的接口;
這層軟體就是作業系統。
你眼中的OS是什麼?
不同人眼中的OS是不同的,
OS設計者:如何管理CPU、記憶體、I/O裝置等系統部件,使之能正常運轉;
應用程式開發人員:API應用程式程式設計接口
3.作業系統的發展曆史
Phase 1:1946-50年代 硬體非常昂貴,沒有作業系統;
程式設計語言:機器語言;
輸入輸出:紙帶或卡片;
使用者在控制台前調試程式,獨占全機。使用者既是程式員,又是操作員,手工操作;
一次完成一個功能(計算,I/O,使用者思考/反應),之間沒有重疊。
問題:手工操作的低效率造成CPU資源的浪費。
Phase 2:50年代末-60年代中,批處理管理程式
(硬體昂貴,人力便宜,為了提高計算機的使用效率,減少手工操作!)
程式員把作業(卡片或錄音帶)送出給負責排程的程式員(系統管理者);
操作員把作業“成批”地輸入到計算機;
常駐記憶體的批處理管理程式自動地識别、裝入一個作業,并運作之,軟後再取下一個作業。
串行地執行作業,因而稱為“單道批處理”。
問題:1)程式的調試比較困難;
2)由于慢速的輸入輸出處理仍然直接由主機來完成,使得CPU和I/O裝置使用忙閑不均:對計算為主的作業,外設空閑;對I/O為主的作業,CPU空閑。
60年代初,發展了通道計數和中斷技術,這些技術的出現使得I/O通路與CPU計算可以重疊進行。
通道:用于控制I/O裝置與記憶體間的資料傳輸,有專用的I/O處理器,啟動後可獨立于CPU運作,實作CPU與I/O的并行工作。
中斷:值CPU在收到外部中斷信号後,停止原來工作,轉去處理該中斷事件,在完成後回到原來斷點繼續工作。
60年代中-70年代中,多道批處理系統
(現代意義上的作業系統的出現)
多道:記憶體中同時存放多個作業,由CPU以切換方式為之服務。在目前運作的作業需作I/O處理時,CPU轉而執行另一個作業;
宏觀上并行運作:都處于運作狀态,但都未運作完;
微觀上串行運作:各作業交替使用CPU和I/O裝置
如何構造一個多道批處理系統?
需要解決的問題:1)記憶體管理,系統必須給多個作業配置設定記憶體;
2)記憶體保護,避免一個程式中的bug造成整個系統崩潰,或者是破壞了其他程式的執行;
3)CPU排程,系統必須在多個作業中不斷地進行切換,選擇其中的一個去使用CPU;
4)系統必須去管理各個并行運作的作業之間的互動關系。
Phase 3:70年代中-至今,分時系統(多個使用者通過各自的終端分享地使用同一台計算機。)
(硬體較以前便宜,人力昂貴)
互動式分時:
-計算機比較貴,隻有一台;
-終端比較便宜,人手一台;
-所有使用者可與系統立即互動,調試比較友善;
一些分時作業系統
CTSS:由MIT開發;最早的分時系統之一;在排程方面進行了一些開拓性的工作;
MULTICS(MULTiplexed Information and Computing Service):“公用計算服務系統”
UNIX(UNiplexed Information and Computing Service):
Phase 4:
(硬體很便宜,人力依然昂貴)
計算機非常便宜,可以人手一台,Apple II、IBM PC等;
1974年Intel推出8080晶片,請Gary Kidall設計了CP/M作業系統——第一個個人計算機作業系統。Gary由此成立Digital Research公司;
1980年,微軟——收購了DOS作業系統,建立了MS-DOS;
Phase 5:今天的作業系統
規模龐大:Windows NT是2千萬行代碼,Windows 2000約4千萬行;
極為複雜;
互聯時代;
4.作業系統的類型
批處理作業系統(多道批處理)
分時作業系統
實時作業系統
嵌入式作業系統
個人計算機作業系統
分布式作業系統
5.作業系統需要的硬體特性
OS需要的硬體特性:受保護的指令(特權指令);系統調用;記憶體保護;中斷機制;I/O系統;時鐘操作
受保護的指令(特權指令)
有些指令隻有作業系統才有權使用,例如:
1)通路某些硬體資源的指令,這些硬體資源禁止使用者程式直接通路;
2)對I/O裝置的直接通路指令,如磁盤、列印機等;
3)對記憶體管理狀态進行操作的指令(頁表指針、重新整理TLB等);
4)某些特殊的狀态位的設定指令;
5)停機指令。
如何從硬體上實作OS的這個要求?
根據運作程式對資源和機器指令的使用權限,把處理器設定為不同狀态。多數系統将處理器工作狀态劃分為管态和目态。
管态:作業系統的管理程式運作時的狀态,較高的特權級别,又稱為特權态、系統态、核心态
處理器處于管态時:可以執行所有的指令(包括特權指令)、使用所有的資源,并具有改變處理器狀态的能力。
目态:使用者程式運作時的狀态,較低的特權級别,又稱為普通态(普态)、使用者态
在此狀态下禁止使用特權指令,不能直接使用系統資源與改變CPU狀态,并且隻能通路使用者程式所在的存儲空間。
有些系統将處理器狀态劃分核心狀态,管理狀态和使用者程式狀态(目标狀态)三種
執行個體:x86系列處理器
-386、486、Pentium系列都支援4個處理器特權級别(特權環:R0、R1、R2、R3)
-從R0到R3特權能力依次降低
-R0相當于雙狀态系統的管态
-R3相當于目态
-R1和R2則介于兩者之間,它們能夠運作的指令集合具有包含關系
四個級别運作不同類别的程式:
R0-運作作業系統核心代碼
R1-運作關鍵裝置驅動程式和I/O處理例程
R2-運作其它受保護共享代碼,如語言系統運作環境
R3-運作各種使用者程式
現在基于x86處理器的作業系統,多數UNIX、Linux以及Windows系列大都隻用了R0和R3兩個特權級别。
問題一:CPU怎麼來判斷目前運作的程式是系統程式還是使用者程式呢?
程式狀态字PSW——一個專門的寄存器,用來訓示處理器的狀态,PSW(Program Status Word),通常包括:
1)CPU的工作狀态碼——指明管态還是目态,用來說明目前在CPU上執行的是作業系統還是一般使用者,進而決定其是否可以使用特權指令或擁有其它的特殊權力;
2)條件碼——反映指令執行後的結果特征;
3)中斷屏蔽碼——指出是否允許中斷
問題二:狀态之間如何轉換?
管态——>目态
通過設定PSW(修改程式狀态字)來實作;
目态——>管态
使用者程式無法直接修改程式狀态字;
那麼使用者程式如何才能去做一些帶有“特權” 的事情(如I/O)呢?
解決之道是——(系統調用)
系統調用
使用者程式通過特殊的防管指令,來請求作業系統為其提供某種功能的服務。系統調用指令的實作過程一般是:
-當CPU執行防管指令時,即引起防管中斷;
-處理器儲存中斷點的程式執行上下文環境(PSW,PC和其他的一些寄存器),CPU切換到管态。
-中斷處理程式開始工作,調用相應的系統服務;
-中斷處理結束後,恢複被中斷程式的上下文環境,CPU恢複為目态,回到中斷點繼續執行。
記憶體保護(先不講)
中斷機制(同步中斷和異步中斷)
I/O系統(先不講)
時鐘操作(先不講)