天天看點

作業系統學習筆記——第一章 作業系統概述

在學習作業系統時總結了筆記,并分享出來,特别是藍色和紅色字型。有問題請及時聯系部落客:​​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系統(先不講)

時鐘操作(先不講)