第8章作業系統
本堂課重點 8-1 何謂作業系統 8-2 作業系統的演進 8-3 行程管理 8-4 常見的作業系統
8- 1 何謂作業系統 8-1-1 電腦的軟硬體組成 8-1-2 作業系統的功能 8-1-3 提供使用者介面 8-1-4 管理系統資源 8-1-5 提供程式執行的環境及系統呼叫服務
8-1-1 電腦的軟硬體組成 當我們新購買了一部電腦, 或自行組裝好電腦硬體後, 首先要安裝的就是作業系統, 裝完作業系統之後, 才可以接著安裝文書處理軟體、影像處理軟體、遊戲…等各種應用軟體。
8-1-2 作業系統的功能 提供使用者介面。 管理系統資源。 提供程式執行的環境及系統呼叫服務。
8-1-3 提供使用者介面 使用者介面依使用者在操作時, 主要是以滑鼠或鍵盤操作的不同, 可分為 命令列介面 (CLI, Command-Line Interface) 圖形使用者介面 (GUI, Graphical User Interface)
8-1-3 提供使用者介面 命令列介面 以文字模式呈現, 需由鍵盤輸入指令, 方能執行所需要的 功能。
8-1-3 提供使用者介面 圖形使用者介面 以視窗圖形模式呈現操作介面及各種電腦資源, 讓使用者透過滑鼠點選圖示、視窗、功能表、工作列…來指揮電腦工作。
8-1-4 管理系統資源 系統資源包含了以下幾種: 行程管理:是指目前正在執行的程式。 記憶體管理:當程式要被執行時, 需要先被載入到記憶體才行, 作業系統即負責了記憶體的管理 檔案系統管理:檔案是電腦儲存資訊的單位。 輸入/ 輸出設備管理:由於輸入/ 輸出 (I/O, Input/Output) 設備的種類繁多, 包含滑鼠、鍵盤、螢幕、印表機…等, 因此作業系統需要有能力控制這些設備, 讓使用者、應用軟體能方便的使用。
8-1-5 提供程式執行的環境及系統呼叫服務 作業系統提供了應用軟體的執行環境, 及使用各種資源 (如檔案、網路、I/O……) 時所需的各種系統呼叫 (System Call) 服務函式。如此一來, 程式設計師在撰寫程式時, 就不用辛苦地處理低階的工作, 只要呼叫這些『系統呼叫服務函式』即可。
8-2 作業系統的演進 8-2-1 真空管電腦時代 8-2-2 批次系統 8-2-3 多元程式系統 8-2-4 分時系統 8-2-5 個人電腦系統 8-2-6 多處理器系統 8-2-7 分散式系統 8-2-8 叢集系統 8-2-9 即時系統 8-2-10 手持式系統
8-2-1 真空管電腦時代 1940年代中期, 真空管 電腦問市, 當時需要 一個大房間才能容納。
8-2-2 批次系統 1950年代中期, 為了讓電腦 運作更有效率, 會將同類型 程式集中, 只需載入一次 編譯/連結/載入器, 即可 整批輸入電腦執行
8-2-3 多元程式系統 發展背景 相較於 CPU, I/O 設備的執行效率還是很慢, 在批次系統中, 雖然程式可以一個接一個地執行, 但只要某份工作正在等待 I/O 設備 (例如讀取或儲存資料),CPU 就會為了要等待其執行完成, 而處於閒置狀態。為了改善此一情況, 於是發展出多元程式 (Multi-programming) 系統。
8-2-3 多元程式系統 優點 相較於批次系統的工作是一個接著一個執行,在多元程式系統中, 作業系統會先在記憶體載入多個工作。 因此, 就不用為了要等待某些I/O 動作完成, 使 CPU 處於閒置狀態, 因而能有效地發揮電腦效率。
8-2-3 多元程式系統 主要功能 在多元程式系統中, 當同時有多個工作準備好要被載入記憶體時, 由於記憶體空間有限, 作業系統必須選擇要將哪一個工作載入到記憶體中。 這個選擇的功能即稱為工作排程 (Job Scheduling), 而作業系統中負責這項功能的稱為排程程式 (Scheduler)。
8-2-4 分時系統 在多人同時使用的系統中, 多元系統是沒辦法與使用者產生迅速的互動。於是發展出了分時 (Time-sharing) 系統 (或稱為多工系統)。 在分時系統中, 系統會將各種資源 (主要是 CPU) 的執行時間分成很多小片段, 稱為時間配額 (Time Quantum) 或時間片段 (Time Slice), 然後分配給執行的工作。
8-2-5 個人電腦系統 發展背景 早期的電腦大都屬於多人共同使用的大型主機, 例如 Unix。隨著電腦硬體技術的提升, 價格日益低廉, 於是發展出只供單人使用的個人電腦系統, 例如 DOS 、Windows 95/98/Me/XP/Vista 及 MacOS。 主要功能 個人電腦系統主要是為了供個人使用, 因此相較而言, 其較強調操作介面的友善度, 讓使用者可以更方便地使用。
8-2-6 多處理器系統 發展背景 有些電腦為了有更好的執行能力, 會採用支援多 CPU 的主機板, 並同時插上 2 顆以上的 CPU。此時即需搭配支援多顆 CPU 的多處理器系統 (Multiprocessor System)。 主要功能 多處理器系統會充分利用每個 CPU 的運算能力, 將程式指派給不同的 CPU同時執行, 以加快程式的執行速度。
8-2-6 多處理器系統 優點 提高產能:由於同時間有多個 CPU 可執行程式, 因此能減少每個程式的執行時間。 提高可靠度:由於有多個 CPU, 若電腦在運作時, 有其中一個 CPU 故障, 其他 CPU 仍可繼續工作, 雖然效能會降低, 但可確保系統持續運作, 而提升其可靠度。
8-2-7 分散式系統 發展背景 前面所提到的幾個作業系統特性, 都是由單一電腦來完成要執行的工作。但隨著工作量需求的日益提升, 單一電腦能提供的效能已無法滿足需求;再加上這幾年網路的快速發展, 於是開始發展出分散式系統 (Distributed System)。在分散式系統中, 是將網路上的多台電腦相串連, 以單一電腦的形式提供服務。
8-2-7 分散式系統 主要功能 在分散式系統中, 同一個工作會被拆成幾個部分, 分配給不同的電腦同時運算, 以提升整體的執行效率。
8-2-8 叢集系統 叢集系統 (Clustered System) 也是透過網路將多台電腦串連在一起。但目前叢集系統尚未有統一的定義, 以下分別介紹 2 種主要的類型。 高可用性叢集 『高可用性 (HA, High Availability)』叢集的目的就在於提高服務的可用性, 減少停擺的機率, 終極的目標為 100%可用性, 也就是提供一年 365 天、一天 24 小時的服務, 讓使用者可以隨時連線, 完全不會發生服務中斷的情形。
8-2-8 叢集系統
8-2-8 叢集系統 負載平衡叢集 『伺服器端負載平衡叢集系統』架構可將使用者需求分配到多台電腦執行,因此能有效地達到負載平衡的目的。
8-2-9 即時系統 即時系統 (Real-Time System) 設計的目的是:指定的工作不僅要正確完成, 而且還需要在指定的時間前完成。
8-2-9 即時系統 即時系統分成硬即時系統及軟即時系統兩種 硬即時系統 (Hard Real-Time System) 保證所執行的工作一定會在指定的時間內完成。 軟即時系統 (Soft Real-Time System) 所執行的工作只是有更高的執行優先權, 但並不保證能在期限內完成。
8-2-10 手持式系統 手持式系統是近幾年來頗受注目的發展, 包含了 PDA (Personal Digital Assistant, 個人數位助理)、行動電話等。
8-3 行程管理 8-3-1 何謂行程 8-3-2 行程的狀態 8-3-3 先到先做排程 8-3-4 最短工作先做排程 8-3-5 優先權排程 8-3-6 循環分配排程
8-3-1 何謂行程 行程與程式主要有以下 3 點的差異: 程式是儲存在儲存媒體上, 如硬碟機、光碟片、軟碟片、隨身碟……;行程則由於正在執行中, 因此是在記憶體內。 程式是靜態的, 是一組可被執行的固定程式碼;行程則是動態的, 除了程式碼外, 還包含以下會變動的資料:
8-3-1 何謂行程 程式是一直存在的, 如果沒有被刪除, 會一直存在磁碟中;而行程則是暫時的, 當行程執行結束, 行程就不在了。 程式記數器 暫存器 (Register) 行程堆疊 (Process Stack) 資料區段 (Data Section) 程式是一直存在的, 如果沒有被刪除, 會一直存在磁碟中;而行程則是暫時的, 當行程執行結束, 行程就不在了。
8-3-2 行程的狀態 一個行程在執行的過程中, 會處於以下 5 種狀態: 新建 (New) :行程正在產生中。這是每個 行程初始的狀態。 就緒 (Ready) :行程已經準備好被執行。 執行 (Running) :CPU 正在執行此行程。 等待 (Waiting) :行程在等待某個事件 (Event) 或 I/O 動作完成。 結束 (Terminated) :行程已經完成。
8-3-2 行程的狀態
8-3-3 先到先做排程 先到先做 (FCFS, First-Come First-Served) 排程是一個最簡單的演算法,它挑選行程的方式, 就是依照其要求使用 CPU 的先後順序, 先提出要求的行程會先被執行, 而不考慮其他的條件
8-3-3 先到先做排程 以下 3 個處於就緒狀態的行程, 其所需的 CPU 執行時間分別如下:
8-3-3 先到先做排程 若進入就緒狀態的先後順序分別為 P1、P2、P3 (但幾乎同時到達)。此時, 我們以甘特圖 (Gantt Chart) 來表示執行這 3 個行程所需要的時間:
8-3-3 先到先做排程 如果這 3 個行程進入就緒狀態的先後順序改為 P3、P2 、P1, 則其甘特圖將變成如下:
8-3-4 最短工作先做排程 當挑選行程時, 最短工作先做 (SJF, Shortest Job First) 排程會從目前處於就緒狀態的行程中, 挑選所需 CPU 執行時間最短的行程來執行, 而不管其提出要求的先後順序。
8-3-4 最短工作先做排程 由於其所需時間由短至長, 分別為 P2 、P3、P1, 因此其甘特圖將如下所示:
8-3-5 優先權排程 在優先權 (Priority) 排程中, 每個行程都會有一個優先權, 排程程式會依照每個行程優先權的高低, 來依序執行。
8-3-5 優先權排程 這 3 個行程的優先權由高至低, 分別為 P3、P2、P1, 因此其甘特圖將如下所示:
8-3-6 循環分配排程 循環分配 (RR, Round Robin) 排程主要是針對分時系統而設計的。排程程式會設定一個時間配額, 然後依 『先到先做 (FCFS, First-Come First-Served) 』的順序輪流執行就緒狀態中的每個行程。
8-3-6 循環分配排程 若時間配額為 4 毫秒, 且成為就緒狀態的先後順序為 P1、P2 、P3 (但幾乎同時到達), 則其甘特圖如下:
8-4 常見的作業系統 8-4-1 DOS 8-4-2 Windows 95/98/Me/XP/Vista 8-4-3 Windows NT/2000/Server 2003/2008 8-4-4 Unix/Linux/FreeBSD 8-4-5 Mac OS 8-4-6 Palm OS/Windows Mobile
8-4-1 DOS DOS (Disk Operating System) 是早期 x86 (286、386...) 個人電腦常安裝的作業系統。它只有命令列介面, 使用者必須記住命令名稱, 才能下達操作命令。
8-4-2 Windows 95/98/Me/XP/Vista
8-4-3 Windows NT/2000/Server 2003/2008
8-4-4 Unix/Linux/FreeBSD
8-4-5 Mac OS
8-4-6 Palm OS/Windows Mobile 目前 PDA 所使用的作業系統, 早期佔有率最高的是 Palm OS, 而現今主流則是 Windows Mobile。 Palm OS Windows Mobile