行程管理簡介 日期 : 2018/9/21
行程管理 行程的慨念 行程的建立與結束 行程排程 行程合作與溝通 2 陳鍾誠 - 2018/9/21
行程的概念 行程的定義 : 多工 Multi-Tasking 解決辦法 中斷向量 作業系統 程式 1 程式 2 程式 3 執行中的程式 很多個程式共同執行 解決辦法 每次仍然只有一個程式真正佔用 CPU 執行。 要切換程式時,使用上述的 Task-Switching 程序 其他程式處於等待狀態 等甚麼 ? (I/O, 排程) 中斷向量 作業系統 程式 1 程式 2 程式 3 3 陳鍾誠 - 2018/9/21
行程的管理 作業系統所提供的行程相關功能 行程的建立與結束 行程排程 行程合作與溝通 4 陳鍾誠 - 2018/9/21
功能1 : 行程的建立與結束 建立新的行程 結束舊的行程 Windows, X-Window : 點兩下 DOS, Shell : 打命令 執行完畢,自動結束 Windows : 工作管理員 Linux : 指令 Kill 5 陳鍾誠 - 2018/9/21
Windows 的行程管理介面 – 工作管理員 6 陳鍾誠 - 2018/9/21
Linux 的行程建立函數 一個行程能在執行的期間透過系統呼叫建立很多新的行程。 建立新行程的行程稱為父行程,而新建立的行程稱為子行程。 UNIX 系統中,使用行程代號(PID)來分辦不同的行程。 系統呼叫 fork() execve() wait() 7 陳鍾誠 - 2018/9/21
Linux 的行程樹 root kswapd keventd init_task bash ypbind crond … 8 陳鍾誠 - 2018/9/21
Linux 的行程關閉函數 一個行程結束時,需要將執行期間內用到的資源如實體記憶體、虛擬記憶體、開啟的檔案和使用的 I/O 裝置等,都會交還給作業系統。 系統呼叫 exit() abort() 9 陳鍾誠 - 2018/9/21
功能2 : 行程排程 為了增加 CPU 的使用效率而提出多個行程的觀念。 哪個行程何時可以執行 下一個輪到誰執行 可以執行多久 行程順序的確定 下一個輪到誰執行 可以執行多久 10 陳鍾誠 - 2018/9/21
排程的範例 行程 CPU 暴衝時間(毫秒) 到達時間 P1 6 0 P2 3 1 P3 7 2 P4 4 3 P1 P2 P4 P1 P3 1 4 8 13 22 平均等待時間:(7 + 0 + 11 + 1)/ 4 = 4.75 毫秒 11 陳鍾誠 - 2018/9/21
排程器 作業系統中主要的排程器有: 長程排程器和短程排程器最大的不同點 中程排程器 目前的作業系統通常只有短程排程器 長程排程器 短程排程器 執行的頻率 中程排程器 最主要的用途在於降低系統多工的程度,以增加系統可用記憶體的大小。 目前的作業系統通常只有短程排程器 Linux, UNIX, Windows 12 陳鍾誠 - 2018/9/21
排程的方法 可搶先版:最短剩餘優先排程 先到先做排程 (First-Come, First Served) 最短工作優先排程 (Shortest Job First) 可搶先版:最短剩餘優先排程 優先權排程 – Priority Scheduling 循環分時排程 – Round Robin Scheduling (大輪迴的排法) 多層佇列排程 – Multilevel Queue Scheduling 多層反饋佇列排程 – Multilevel Feedback Queue Scheduling 13 陳鍾誠 - 2018/9/21
功能3 : 行程合作與溝通 溝通 合作 行程如何傳遞訊息給其他行程 誰在何時可以用哪些資源? 如何協調執行順序? 如何避免死結 ? 14 陳鍾誠 - 2018/9/21
行程的溝通 行程如何傳遞訊息給其他行程 直接溝通 指定行程,傳送訊息 共用記憶體 間接溝通 郵箱 訊息佇列 陳鍾誠 - 2018/9/21 15 陳鍾誠 - 2018/9/21
行程的合作 核心問題: 誰在何時可以用哪些資源? 同步 : 如何協調執行順序? 死結 : 如何預防死結 ? 如何解除死結 ? 16 陳鍾誠 - 2018/9/21
結語 行程管理是作業系統最重要的事情 行程管理的焦點是 排程 溝通合作 17 陳鍾誠 - 2018/9/21