740 likes | 995 Views
第 0 章 作業系統導論. 內容 : 作業系統簡介 行程管理 處理機排班 記憶體管理 虛擬記憶體管理 輸入 / 輸出裝置管理 檔案系統管理. 0-1 作業系統簡介. 內容 何謂作業系統 電腦系統的架構 作業系統的功能 作業系統的種類. 第 0-1 章 作業系統簡介. 作業系統簡介 (1). 0-1-1 何謂作業系統 ? 使用者與電腦硬體間的溝通橋樑,提供使用者ㄧ個執行及操作程式的環境,讓使用者能夠很方便且迅速的操作電腦 主機與作業系統 MS-DOS 作業系統 單一使用者 / 單一工作 的工作平台 Windows 作業系統
E N D
第 0 章 作業系統導論 內容: • 作業系統簡介 • 行程管理 • 處理機排班 • 記憶體管理 • 虛擬記憶體管理 • 輸入/輸出裝置管理 • 檔案系統管理
0-1 作業系統簡介 • 內容 • 何謂作業系統 • 電腦系統的架構 • 作業系統的功能 • 作業系統的種類 第 0-1 章 作業系統簡介
作業系統簡介 (1) • 0-1-1 何謂作業系統 ? • 使用者與電腦硬體間的溝通橋樑,提供使用者ㄧ個執行及操作程式的環境,讓使用者能夠很方便且迅速的操作電腦 • 主機與作業系統 • MS-DOS 作業系統 • 單一使用者 / 單一工作 的工作平台 • Windows 作業系統 • Win 95.98.Me是單一使用者 / 多工作 的平台 • Win NT開始 是多使用者 / 多工作 的平台 • Linux 作業系統 • 完全免費且於網路上公開原始碼的作業系統 • Fedora
電腦系統的架構 • 硬體(含韌體) • 硬體為電腦的實體裝置,包含記憶體、磁碟機、磁帶機、螢幕、鍵盤、滑鼠等設備;這些設備都需透過適當的驅動程式來操作 • ㄧ般電腦都將管理程式燒錄在主機板上的EPROM,並保持隨時可以啟動,稱之為【韌體】(Firmware) • 核心 • 依照韌體提供的功能,編寫一些較容易連結的函數,以供其他程式連結並透過它來存取周邊設備,這些函數的整合體稱為【核心】(Kernel) • 外殼 • 編寫可以存取核心的程式,好讓ㄧ般使用者操作,這就是【外殼】(Shell) • 應用程式 • 使用者利用核心與外殼的標準介面程式來編寫應用軟體(Application Program) ,大部分情況與硬體無關,程式設計師可以完全不用理會周邊硬體
系統程式與系統呼叫 • 我們會將硬體控制程式與最基本的電腦運作程序整合成一個稱之為【系統程式】(System Program) ,該程式提供電腦最根本的運作平台,再由此平台擴充功能,整合ㄧ個強大的【作業系統】 • 系統程式提供許多關於週邊設備的函數,一般稱為【系統呼叫】(System call) ,藉由這些函數的呼叫,使用者就可以輕易存取周邊設備 • 我們習慣將常駐於記憶體的庫存函數稱為『核心』,因為這些函數隨時會被呼叫 • 通常Unix/Linux的核心可讓使用者選擇所欲載入的函數,這是Unix/Linux系統最引以為傲的地方,而widows就望塵莫及
作業系統的功能 • 控制程式(Control program) • OS提供控制所有周邊設備的功能 • 人機介面(User-machine interface) • 使用者透過OS所提供的人機介面工具方便的操作電腦 • 此類型工具大多稱之為【命令】(command) • 延伸機器(Extended machine) • 使用者不需利用0/1操作電腦,只要使用接近人類的語言就可以控制電腦,進一步讓電腦更接近人類的邏輯思維來處理事務 • 資源管理者(Resource manager) • 負責將CPU、記憶體空間、磁碟空間、印表機與資料等資源分配給使用者程式,為了避免衝突發生,OS必須快速且合適地分配資源
作業系統的種類 • 批次處理系統(Batch processing system) • 早期電腦資源昂貴,多利用整批方式輸入給系統一起處理 • 多元處理系統(Multi-programming system) • 多個程式同時存在記憶體中,CPU以某選定策略輪流執行這些程式 • 使用者會感覺好像多個程式同時被執行(實際某時刻只有ㄧ個程式執行) • 分時處理系統(Time-sharing system) • 將CPU執行時間平均分配給每一個使用者,讓多個程式可以共享CPU • 所以無論程式大小,只要ㄧ小段的時間用完,而不論工作是否執行完畢,都必須要換下一個程式使用
作業系統的種類 • 多工處理系統(Multi-task system) • 多處理機系統(Multi-processor system) • ㄧ部電腦中有多個CPU同時處理 • 提供快速運算環境 • 即時系統(Real-time system) • 每ㄧ個程式都有其優先權(優先順序) ,優先權高的工作有優先處理的特權 • 必須在限定的時間內完成,否則逾時可能不具任何實質意義
行程管理 (1) • 內容 • 何謂行程 ? • 行程的生命週期 • 行程的同步 • 行程的死結 • 行程的通訊
行程管理 (2) • 何謂行程 (Process)? • 行程--執行中的程式,屬於主動元件 • 程式 –屬於被動元件 • 行程在執行當中,會根據需要產生其他子行程(Child Process),交付給子行程所要執行的工作 • 行程又可分為【作業系統行程】與【使用者行程】 • 作業系統行程執行『系統程式碼』 • 使用者行程執行『使用者程式碼』
行程的特性與現象 • 行程的特性 • 行程式一個動態的概念 • 行程是程式與資料的結合體 • 行程可並行處理 • CPU速度夠快,可視為所有行程都正在執行中 • 行程的現象 • 以象棋為範例 • 行程間會互相競爭 • 因為CPUㄧ次僅能執行一個行程,所以系統中的行程可能需要經過競爭,才能得到CPU資源,所以會涉及行程的排班問題
行程生命週期 • 因為同ㄧ時間僅有一個行程被選入執行,所以一個行程從產生到執行完畢通常需要幾回合的執行周期才可以完成。 • 執行狀態 (Running state) • 行程執行中 • 預備狀態(Ready state) • 行程已經取得所需的資源,正準備進入CPU執行 • 等待狀態(Wait state) • 在執行當中可能因為無法獲得某些資源或者逾時退出執行,就會進入等待 • 停止狀態(Stop state) • 行程執行完畢,等待被註銷 • 死結狀態(Deadlock state) • 行程可能在等待一個永遠無法獲得的資源,並繼續無止境等待
行程生命週期 • 掛起等待狀態(Suspend waited state) • 當CPU工作負荷過重且難以承受時,會選擇某些行程將其掛起,並進入掛起等待狀態。甚至行程的程式與資料可能會被置換出去到外部輔助記憶體(Swap out) • 掛起預備狀態(Suspend ready state) • 被掛起的行程欲再次進入執行階段,須先到掛起預備狀態,然後等待進入預備狀態。
行程的命令 • 建立(fork) • Fork系統呼叫會產生一個子行程(Child Process) ,產生行程者稱為父行程 • 停止(stop) • 撤銷(destroy) • 無論行程是正常停止或非正常停止,都需藉由撤銷命令釋回行程所佔用的記憶體空間與相關資源 • 阻斷(block) • 行程從執行狀態 等待狀態 • 喚醒(wakeup) • 行程從等待狀態預備狀態 • 掛起(suspend) • 激活(activate) • 藉由激活讓系統重新配置記憶體空間以執行該行程
臨界區間(Critical Section) • 臨界區間 • 就是指『共享區域』 • 以交通系統為例,臨界區間就是交叉入口 • 以程式而言,臨界區間就是整體變數(Global Variable) • Ex.SUM 變數ㄧ次只能允許ㄧ個行程執行,否則會有競爭條件(Race Condition)出現 • 測試與設定(Test-And-Set, TAS) • K=flag; • If (flag == 0) • flag = 1; //flag = 表示該資源已經被取用
行程同步 • 號誌與 P/V 操作 (Semaphore) –多重資源 • S:可使用資源數量 • P(S) :取得共享資源 • if S >0 then • S = S-1 • else • Waiting ….. • V(S) :釋放共享資源 • S = S +1 • wakeup process
行程的死結預防 • 互斥(mutual exclusion) • 除非資源取之不盡用之不竭,否則不可能達到資源互斥的需求 • 佔用與等候(hold and wait) • 行程佔用一個資源,而另ㄧ個行程在等待被佔用的資源 • 有可能發生【饑餓現象】 • 不可搶先(no pre-emption) • 循環式等候(circular wait) • ㄧ個行程等ㄧ個行程
行程的通訊 • 阻斷傳送(Blocking Send) • 傳送端一直等到接收端接收訊息為止 • 無阻斷傳送 (Nonblocking send) • 傳送端送出訊息,無須等待接收端接收,馬上可以重新操作 • 阻斷接收(Blocking Receive) • 接收端一直等到有訊息出現 • 無阻斷接收(nonblocking Receive) • 接收端收到訊息或指示無有效資料 • Send (A, message) • Receive (B, message)
訊息緩衝通訊 • 訊息緩衝通訊 • 分時系統的任一時間只有一個行程會被啟動,欲達到兩個行程直接通訊是不可能的。 • 可以將傳送行程欲傳送給接收行程的訊息直接投入信箱內,接收行程再由信箱讀取信息,所謂『信箱』就是主記憶體的某ㄧ區塊空間,又稱為【訊息緩衝器】 • Send (A, message) • Receive (A, message)
管道通訊 • 管道通訊(Pipe) • 主要缺點是容量有所限制,針對大量傳輸往往會發生緩衝器空間不足的問題。 • 原則上共享檔案只允許相互通訊的兩行程使用,並不分享給其他行程
0-3 處理機排班 (1) • 內容 • 何謂處理機排班? • 先到先服務排班 • 最短工作優先排班 • 最高等級優先排班 • 循環點名排班 • 多層次佇列排班 • 多層次反饋佇列排班
處理機排班 • 何謂處理機排班 • 一部主機系統可以有很多個行程同時處於執行狀態,但是CPU在任一時間內僅能處理一個行程,所以CPU 如何由多個行程中選擇一個行程執行 • 排班的重要因素 • CPU 使用率 (Utilization) • CPU的等待是資源浪費,所以使用率越高越好 • 輸出量 (Throughput) • 回覆時間 (Turnaround time) • 行程工作進入電腦系統到執行完畢離開電腦這一段時間稱之 • 等候時間 (Waiting time) • ㄧ般行程備CPU執行的時間不會太長,大部分都是花在排班等候CPU
處理機排班 • 先到先服務排班(First Come First Served, FCFS) • 最基本也是最簡單的排班方法 • 系統只要挪出一個佇列器(Queue) ,將所有進入等待執行的行程依序排列,先進入者排在前面,後到者排在後面 • 萬一所選擇的行程執行時間很長,或者甚至發生『死結』現象,將可能導致整個系統停頓
處理機排班 • 最短工作優先排班 (Shortest Job First, SJF) • 在目前所產生的行程當中,選擇最短執行時間的行程優先處理 • 所以必須有預估每一行程所需執行時間的能力,一但行程產生後,就會依照所預估執行時間的長短插入行程佇列器中適當位置等待執行 • 缺點 • 預估行程的執行時間並不容易 • 針對較長時間的行程可能需耗費更多的等待時間,甚至永遠無法執行到,而產生『飢餓現象』
處理機排班 • 最高等級優先排班 (Highest Priority First, HPF) • 依照優先權等級由高而低逐一執行 • 當行程不斷產生的同時,一些較低優先權的行程,可能會不斷受到排擠,造成需要更長的等待時間,甚至在某些情況可能永遠執行不到,這就是飢餓現象。
處理機排班 (6) • 循環點名排班 (Round-Robin Timesharing, RRT) • 無論FCFS、SJF、HPF都是完成一個行程之後,才選擇下一個行程來執行,所以若是某一行程佔用時間過久或者執行當中發生死結現象,將會導致系統效率低落 • 每一個行程只會執行一小段時間,時間一到,系統會停止行程繼續執行且儲存該行程的所有狀態,然後由Queue選擇一個行程執行,以此類推,直到所有行程執行完畢為止 • 分割時間片段夠小,所有行程就會有並行的感覺,但先決條件是CPU速度要夠快,否則太短的時間片段會造成耗費在行程前置作業時間比例太大導致效能嚴重低落
處理機排班 • 多層次佇列排班 (Multi-Level Queue, MLQ) • 依照優先等級分成幾個不同型態 • 每一個佇列器內的行程具有相同等級的優先權 • 系統依照其優先權高低逐一執行 • 可想而知很容易造成肌餓現象
處理機排班 • 多層次反饋佇列排班 (Multi-Level Feedback Queue, MLFQ) • 基於前者會產生飢餓現象,所以加上會自動提升優先等級的功能 • 低優先權的會隨時間慢慢提升等級,所以最後一定會被執行到
處理器排班範例 • 分別就先到先服務、最短工作優先排班、循環點名排班(時間量=1) 、優先權排班 • 算出回覆時間 • 算出等候時間
回覆時間 • 等候時間
0-4 記憶體管理 (1) • 內容 • 記憶體種類 • 基本概念 • 記憶體分配 • 分區管理 • 分頁管理 • 分段管理 • 段頁式管理
記憶體種類 • 主記憶體 • 主機板上的半導體記憶體 (SRAM、DRAM、ROM) • CPU可以直接存取記憶體上的程式或資料 • 外部記憶體 • 大多指外接的磁碟、光碟、磁帶等輔助記憶體,通常存放CPU暫不執行的程式或資料 • CPU無法直接執行外部記憶體所存取的程式 • 一般而言當記憶體不足儲存所有行程時,會將一些暫不執行的程式儲存於外部記憶體,當需要使用時,再由外部記憶體移入主記憶體讓CPU執行
0-4 記憶體管理 (3) • 0-4-2 基本概念 • 主要工作 • 邏輯位址空間, 而不受實際空間限制 • 多個行程同時駐留於主記憶體內,提升系統效能 • 考慮四個問題 • 主記憶體分配 • 位址映射 • 由邏輯位址對應至實體位址的方法 • 主記憶體保護 • 分為系統程式與應用程式兩種位址空間,前者以儲存作業系統的核心程式或常駐系統呼叫為主,不允許使用者直接呼叫存取 • 虛擬記憶體 • 將外部輔助記憶體納入與主記憶體共同使用,讓使用者感覺主記憶體位址空間猶如邏輯位址空間一般
記憶體分配 • 分配策略 • 最先適合 (First Fit, FF) • 選擇第一個滿足請求容量的空閒區 • 最佳適合 (Best Fit, BF) • 找出能滿足請求容量的最小空閒區 • 最壞適合 (Worst Fit, WF) • 從所有空閒區找出能滿足請求的最大空閒區
0-4 記憶體管理 (5) • 0-4-3 記憶體分配 (2) • 位址映射與保護
0-4 記憶體管理 (6) • 0-4-3 記憶體分配 (3) • 覆蓋
0-4 記憶體管理 (7) • 0-4-3 記憶體分配 (4) • 置換 – 主記憶體與外部輔助記憶體間交換程式或資料 • 置換出 (Swap out) – 程式由主記憶體移至輔助記憶體 • 行程由等待狀態進入掛起狀態時 • 主記憶體空間不足時 • 置換入 (Swap in) – 程式由輔助記憶體移入主記憶體 • 行程由掛起狀態進入等待狀態時 • 某些程序被重新呼叫而須喚起時
分區管理 • 固定分區管理 (靜態分區管理) • 運作方式是將主記憶體分割成若干個固定區塊,各個區塊可以不相等 • 容易產生內部碎片(Internal Fragmentation)
分區管理 • 可變分區管理 (動態分區管理) • 系統一開始不會將記憶體分割成固定區塊,而是作業欲載入時,再依照作業的大小分配一個適當的區塊供其載入,且區塊大小剛好符合作業大小
0-4 記憶體管理 (10) • 0-4-5 分頁管理 (1) • 分頁管理之概念
0-4 記憶體管理 (11) • 0-4-5 分頁管理 (2) • 位址映射
0-4 記憶體管理 (12) • 0-4-6 分段管理 (1) • 實現原理
0-4 記憶體管理 (13) • 0-4-6 分段管理 (2) • 位址映射
0-4 記憶體管理 (14) • 0-4-7 段頁式管理 • 位址映射
0-5 虛擬記憶體管理 (1) • 內容 • 基本概念 • 動態分頁管理 • 動態分段管理
0-5 虛擬記憶體管理 (2) • 非虛擬記憶體系統之特性 • 整體性 • 一個行程的全部實體在執行之前必須載入主記憶體內 • 駐留性 • 作業系統一但進入主記憶體內,便一直駐留直到執行結束才離開 • 連續性 • 一個行程分配的是一連續的主記憶體空間