590 likes | 788 Views
第一章 作業系統概述. 1-1 作業系統之功能與架構 1-2 作業系統的演進 1-3 處理單元之狀態 1-4 中斷. 1-1 作業系統之功能與架構.
E N D
第一章 作業系統概述 • 1-1 作業系統之功能與架構 • 1-2 作業系統的演進 • 1-3 處理單元之狀態 • 1-4 中斷
1-1 作業系統之功能與架構 • 何謂作業系統(Operating System,OS)?(1)它可以視為是一個擴充的機器(extended machine),因為對整個電腦系統而言,除了由處理機(processor)、記憶體(memory)、硬碟(hard disk)、螢幕(monitor)、網路卡(network interface)、輸出/輸入設備(input/output device)等硬體裝置所組成外,其實尚須安裝作業系統(如:Windows系統、Linux系統)才能稱為一個電腦系統,使用者也才能藉由作業系統所提供的功能才能順利的操控電腦硬體(如:拷備檔案、列印文件等),故作業系統也稱為擴充機器。
(2)它是整個電腦系統的資源管理員,當處理單元(processs亦可稱行程)在電腦系統內執行時,作業系統會負責分配CPU的使用權、記憶體配置、處理單元的優先權等。(2)它是整個電腦系統的資源管理員,當處理單元(processs亦可稱行程)在電腦系統內執行時,作業系統會負責分配CPU的使用權、記憶體配置、處理單元的優先權等。 • 作業系統其功用是做為使用者與腦硬體之間的介面 ,讓使用者方便的使用電腦系統並且對硬體設備做有效的管理,提高系統的效能。
簡言之,作業系統(Operating System,OS) 為一個程式,其功用是做為使用者與電腦硬體之間的介面(Interfere),讓使用者可以方便的使用電腦系統並且對整個電腦硬體設備做有效的管理,提高整個電腦系統的效能。
2. 整個電統整體而言,可分成四個部分: • (1) 硬體 (Hardware) • (2) 作業系統 (Operating System,OS) • (3) 應用程式 (Application Program) • (4) 使用者 (User)
4. 作業系統對四大類型的資源做管理 • (1) 資訊管理 (Information Management) • (2) 設備管理 (Device Management) • (3) 記憶體管理 (Memory Management) • (4) 處理機管理 (Processor Management)
1-2 作業系統的演進 • 1. 監督程式 (Monitor) -監督程式是一種常駐於電腦系統內的系統軟體,它慢慢地變成為今天的作業系統。監督程式使得某種終端機能夠順利的連接上電腦系統,並控制整個電腦系統。它提供了簡單但很有用的命令;例如:從鍵盤上輸入程式、顯示出記憶體的內容、以及利用現有的界面來輸入程式等。在早期的電腦系統中,監督程式可以讓使用者與計算機更容易溝通。起初,監督程式的某些功能是直接做在計算機的控制面板上;後來,這些功能慢慢的被以軟體的方式撰寫出來,取代了直接以硬體設計的觀念。
一個簡單的監督程式具有如下的功能: • (1) 將程式送入記憶體 (經由鍵盤)。 • (2) 將記憶體內的程式或資料顯示出來。 • (3) 修改記憶體的內容、變更程式。 • (4) 負責程式的執行。 • (5) 將程式儲存於外在的儲存體。例如:磁帶、磁片。 • (6) 將存放在外部儲存體上的程式載入記憶體。 • <註>:監督程式是最基本的作業系統,它是現今作業系統的雛型。
2. 連線作業 (On - Line Operation) - • CPU 直接由讀卡機 (Card Reader) 輸入資料,並將結果由列表機 (Line Printer) 輸出。其中讀卡機與列表機皆由 CPU 所直接操控,故稱之為連線作業。 • 由於 I/O 配備之操作速度與 CPU 之執行速度無法配合,使得 CPU 常處於閒置 (Idle) 的狀態。
早期的電腦系統,I/O 配備與 CPU 是採用直接連線 (On-Line) 的作業方式。但由於 I/O 配備之操作速度與 CPU 之執行速度無法配合,使得 CPU 常處於閒置 (Idle) 的狀態。即當CPU在處理讀卡機的輸入作業時,因讀卡機讀取資料的速度實在太慢,使得CPU早已將先前輸入之資料處理完畢,而又再等候新資料的輸入,但因系統設計的關係,CPU雖然閒置卻也無法去服務印表機(即CPU只能專注服務某一輸入或輸出設備直至其工作完成為止),導致系統效能低落。
3. 離線作業 (Off - Line Operation) - • 所謂離線作業是指 I/O 設備不是由 CPU 所直接操控,故稱之為離線作業。其特性有: • (1) 在 CPU 與 I/O 配備間需加裝其它的硬體配備。 • (2) CPU 的輸出/輸入對象為磁帶,故可視磁帶為邏輯性的輸出/輸入設備 (Logical I/O Device)。 • (3) CPU 與輸出/輸入工作為相互獨立的進行。
輸入:將要輸入的資料儲存至磁帶中,待 CPU 有空時,再將磁帶中的資料載入 CPU 中執行。 • 輸出:先將要輸出的資料寫入磁帶中,待列表機有空時,再將磁帶中的資料由列表機印出。 • CPU 的執行與輸出/輸入的動作重疊 (Overlay),可減少 CPU 的閒置時間 ,提昇 CPU 的效能 (Performance)。
4. 緩衝區作業方式 (Buffering) - • 離線作業功能是將I/O 的動作與CPU 的執行時間相重疊以提昇系統效能,但由於離線作業的輸出/輸入對象為磁帶,而磁帶的存取速度實在太慢,為了免除磁帶存取速度太慢導致系統所提昇的效能有限,緩衝區作業方式即是針對磁帶存取速度慢的缺失加以改善(將磁帶以記憶體取代)。
其方法是在記憶體中預留一塊空間作為 I/O 設備存取資料的緩衝區 (Buffer),將要輸入之資料事先寫入緩衝區中,CPU 再由此緩衝區讀取資料執行,在 CPU 讀取資料的同時,輸入設備 (Input Device) 可立即再將下一筆資料寫入緩衝區中。同樣的,CPU將處理完要輸出的資料也是先寫入緩衝區中,等待輸出設備 (Output Device) 來處理。
<註>:若某工作(Job) 花費大量的時間於CPU 計算上,而僅有少量的I/O 動作,則稱此類的工作為以CPU 為主的工作(CPU - Bound)。當執行此類的工作時因工作一直佔用CPU,然而資料卻不斷的輸入至輸入緩衝區無法即時處理掉,導致輸入緩衝區(Input Buffer) 總是填滿資料的;也因CPU為主的工作僅有少量的輸出,所以即使有資料(工作)輸出至輸出緩衝區(Output Buffer) 總是空的。
反之,若某工作花費大量的時間於I/O 動作上,而僅做少量的CPU 計算,則稱此類的為以I/O 為主的工作( I/O - Bound)。當執行此類的工作時,因工作只佔用極少的CPU時間,對於輸入至輸入緩衝區的資料皆能馬上處理,所以輸入緩衝區(Input Buffer) 總是空的,也因I/O為主的工作會有大量的輸出資料,導致輸出緩衝區(Output Buffer) 總是填滿資料的。
5. 週邊設備同時連線作業 (Simultaneous Peripheral Operation On - Line,Spooling) - • 無論是離線作業系統或是緩衝區作業方式皆是使用CPU的執行與I/O動作重疊,讓CPU在執行的同時,輸入/輸出設備也能進行輸入/輸出,藉此特性以提昇系統的效能。然而,由於在離線作業中,I/O 的對象為磁帶,故僅能以循序的方式存取資料,速度上仍嫌緩慢,對於系統整體效能提昇有限。以緩衝區方式的方式處理,因直接在記憶體上處理資料,速度上提昇非常多,也能確實配合CPU的運作速度,效能上能大幅提昇,但是緩衝區的大小有限且價格昂貴,整體系統成本會較高。
為了考量系統的成本與效能,其折衷方案便是採用能夠高速存取資料且價格也不算太昂貴的磁碟(Disk) 來取代磁帶與緩衝區。 • 用能夠高速存取資料的磁碟 (Disk) 來取代磁帶與緩衝區。因此,在 CPU 執行某個程式或處理資料時,讀卡機便先將下一筆要輸入的資料先行寫入磁碟中。同理,程式準備要輸出資料可先寫入磁碟中,待程式執行完畢後,再由印表機輸出,此種操作方式稱為週邊設備同時連線作業 (Spooling)。
緩衝區作業方式 (Buffering) 與週邊設備同時連線作業 (Spooling) 皆是使 I/O 工作與 CPU 工作重疊,但其間仍有差別。 • (1) 緩衝區作業方式 (Buffering) 僅能使某個工作的 I/O 工作與其本身之 CPU 執行時間相重疊。 • (2) 週邊設備同時連線作業 (Spooling) 則能使某個工作的 I/O 工作與其它工作的 CPU 執行時間相重疊,故真正的提供了多程式 (Multiprogramming) 的功能。
6. 多程式系統 (Multiprogramming System) - • 為了有效的提昇CPU的使用率,讓系統內同時存放多個工作於記憶體中,使CPU服務完某一工作後能馬上再從記憶體挑選另一工作服務,無須等待輸入設備去載入另一工作時,致使CPU閒置 • 在多程式系統的環境下,作業系統會從工作集中區中選擇一個工作來執行,待該工作 (Job) 執行完畢或該工作進人等待狀態 (Wait State) 時,再由工作集中區中另擇一個工作執行。如此,有如多個程式同時在 CPU 中執行,故謂之多程式 (Multiprogramming)。
<註>:在Spooling作業方式下,多個工作能同時存放於硬碟中,等待CPU執行,這個用以儲存一些等待執行之工作的硬碟空間稱為工作集中區(Job Pool),這也是Spooling作業方式所提供的一種重要的資料結構。
7. 分時作業系統 (Time Sharing System) - • 多程式系統感覺上似乎是可以同時讓多個工作 (程式) 同時在系統內執行,其實不然,雖然是多個在系統內,但CPU每次也只能服務某一個工作,直到該工作完成或進入等待狀態,才再另行選擇一個工作服務。所以,雖然是多個工作同時在系統內,但只有一個工作真正被CPU執行,其餘皆在等待。
分時作業系統為了改善此缺失,它讓每位使用者或程式都以交談式的方式與作業系統溝通,而且它將CPU服務每個工作的時間做切割,每位使用者(或程式) 都以輪流的方式使用一小段的CPU 時間(稱為Time Quantum,Time Unit,...),當使用者用完該分配之CPU 時間或需要去執行I/O 動作時,系統便會將CPU 之控制權交給下一位使用者(工作)。此種方式可以讓多位使用者同時使用電腦,讓使用者感覺好像僅有他一個人在使用此一電腦系統。此種系統對每一個工作都是公平的,不會導致某些工作等待過久,而從未被CPU服務。
8. 即時作業系統 (Real Time System) - • 即時系統是一個為特殊目的而建構的使用系統,它對於時間上的限制是非常嚴格的,它必須在限定的時間內做出反應,否則,將會造成重大的損失或災害,故一般此系統的硬體設備都是專屬於某種用途之特殊控制設備。 • 即時系統一般應用於國防或工業上的控制系統。電腦系統必須於限定的時間內做出反應,此種系統內具有快速的 CPU 及大量的記憶體空間,其處理工作的方式是採用優先權高的工作優先處理。
9. 分散式系統 (Distributed System) - • (1) 緊耦合系統是指所有的處理機共用一個儲存設備,並共用同一個時間脈衝 (Clock),訊息的傳遞是透過共享記憶體 (Shared Memory) 來達到,整個系統由一個作業系統所控制。
(2) 鬆耦合系統是指每個處理機為一獨立的系統,每個處理機各有自己的作業系統、記憶體與時間脈衝 (Clock),其間的訊息傳遞可透過高速的匯流排 (Bus) 或電話線。
至於建立分散式系統的理由 (優點) 則為: • a. 資源的共享 (Sharable)。 • b. 提高計算的可靠度 (Reliability)。 • c. 縮短計算所耗費的時間。 • d. 可藉通信線路交換訊息。
<補充資料> • 1. 多元處理作業 (Multiprocessing) - • 係由許多的處理機共用一個記憶體,而由一個作業系統來負責管理。 • 2. 批次處理系統 (Batch Processing System) - • 此類系統一般而言具有週期性,每隔一段時間才處理資料。先將欲處理的程式或資料加以分門別類,依其特性給予所需的配備,等待處理的週期來臨時,再一併處理。其優點為績效高,而缺點則為無法直接與系統交談,且時效很差。
1-3 處理單元之狀態 • 使用者把程式撰寫修改完成後 (如:test.c),經過系統編譯及連結,就形成一個可執行程式 (亦即一個 Job 如:test.exe)。當工作 (Job)進入系統執行就變成所謂的處理單元 (Process) 。簡言之,一個處理單元就是一個進入系統中執行的程式,它是由一些 CPU 執行時間 (CPU burst) 與一些執行 I/O的時間 (I/O burst) 所組合而成。下圖是一個處理單元的簡單概念:
<註>:在、與發生了 CPU 控制權轉移 (dispatch),即發生了背景切換(context switch) (參見1-4節)。
1. 執行狀態 (Running State): • 處理單元目前正被 CPU 執行中。 • 2. 預備狀態 (Ready State): • 此狀態為可執行狀態,但並未佔有 CPU,一旦有 CPU 可用,則立即可執行 (取得 CPU 使用權)。若考量平衡系統的負荷,可再增加一個暫止預備 (Suspend Ready) 狀態。 • 3. 等待狀態 (Blocked State 或稱 Wait State): • 處理單元正等待某一事件完成。若考量平衡系統的負荷,可再增加一個暫止等待 (Suspend Blocked) 狀態。
各個狀態之間的轉移原因如下: • (a) 當使用者所要執行之工作 (Job) 尚未載入記憶體中,則由 OS 負責將之記錄於磁碟工作區 (Disk Job Pool) 中。 • (b) 由長程排班器 (Long - Term Scheduler)將工作 (Job) 由磁碟載入記憶體內(即載入預備佇列中,隨時準備執行。 • (c) 由短程排班器 (Short - Term Scheduler) 將 CPU 的使用權轉移給預備佇列中的某一個處理單元。 • (d) 在分時系統中,處理單元的 CPU 時段已經用盡,將處理單元移回到預備佇列中。 • (e) 其發生之原因有: • 需要處理 I/O。 • 執行到訊號機 (Semaphore) 中的 Wait () 指令。
(f) 其發生之原因有: • I/O 處理完畢。 • 執行到訊號機中的 signal () 指令。 • (g) 其發生之原因有: • 處理單元 (Process) 執行完畢。 • 使用者逕行中止該處理單元。 • 處理單元執行時發生錯誤。 • (h) 因系統運轉不良或失常,可暫停所有的處理單元;或因負荷過重,系統可以暫停一部份的處理單元。 • (i) 系統之負荷減輕時,可以將暫停之處理單元重新啟動。
<註>:分配程式 (Dispatcher) 是短程排班器中一個成員,它負責將CPU的使用權轉換至由短程排班器所選取的處理單元。所以由分配程式將CPU使用權轉換至處理單元的動作稱為分配 (Dispatch),而轉換所花費的時間稱為分配延遲 (Dispatch Latency)。
1-4 中斷 • 1.當中斷發生時處理步驟為: • (1) 作業系統取得控制權。 • (2) 作業系統將被中斷的處理單元 (Process) 之狀態保存於處理單元控制區塊 (Process Control Block,PCB) 中。 • (3) 作業系統判斷中斷的原因及種類並將控制權交給適當的中斷處理程式 (Interrupt Handling Routine) (或稱中斷服務程式 (Interrupt Service Routine,ISR)) 處理。
(4) 當中斷服務程式處理完畢後,交出控制權給作業系統。 • (5) 作業系統再將原被中斷程式的 PCB 取出。 • (6) 處理單元取得CPU的控制權繼續執行剛才未完成的程式。
2. 當中斷發生時,作業系統將暫存被中斷處理單元的狀態,同時把被中斷之處理單元的處理單元控制區塊 (PCB) 予以儲存,並且將控制權交給中斷處理程式的過程稱為背景切換 (或稱本文轉換(Context Switch))。
3. 處理單元控制區塊 (Process Control Block,PCB) 是作業系統儲存有關於處理單元之訊息的地方。PCB 內含有下列七種最重要的記錄: • (1) 處理單元的目前狀態(Ready、Blocked...)。 • (2) 處理單元的識別名稱。 • (3) 處理單元的優先等級;即有關於排班之相關資訊。 • (4) 用以指明處理單元之記憶體位置的指標;即記憶管理之相關資訊。 • (5) 指到所分得到的資源之指標。 • (6) 記錄器暫存區。 • (7) 處理單元所花費於執行的時間。
4. 中斷的類型在 IBM 的機器中可分成五大類: • (1) SVC (Supervisor Call) (監督程式呼叫或稱系統呼叫) • (2) I/O (輸出/輸入中斷) • (3) External (外部中斷) • (4) Program Check (程式檢查中斷) • (5) Machine Check (機器檢查中斷)
其發生之原因分述如下: • (1) 程式中斷 (Program Interrupt): 中斷是由程式本身所產生的。如程式在執行時 • 執行到不合法之指令 • 做除以零之運算 • 數字資料在運算時產生溢位 (Overflow 或 Underflow) • 運算之資料型態 (Data Type) 不符合
(2) 監督程式呼叫 (Supervisor Call,SVC): 由執行中的處理單元進行監督程式呼叫所產生的。SVC 為使用者要求系統支援或要與操作員連繫所發出的呼叫。 (3) 輸出/入中斷 (I/O Interrupt): 由輸出/入硬體發出中斷訊息來通知 CPU 處理中斷。如 • 輸出/入完成 • 輸出/入設備已經準備妥善 • 輸出/入設定發生錯誤
(4) 外部中斷 (External Interrupt):如 • CPU 與 CPU 通訊 • 所分配之 CPU 時間配額已經用完 • 操作員按下中斷鈕 (5) 機器故障中斷 (Machine Check Interrupt): 由於機器發生故障所產生的中斷。