# 作業系統(Operating System)筆記 ###### tags: `作業系統` `排程` ## 作業系統的主要功能 1. 管理硬體(作業系統下層)資源,將硬體抽象化。 2. 提供抽象的介面給作業系統的上層使用。 ## 作業系統中的CPU資源分配 - 程式排程方式演進 * 由於CPU的資源很珍貴,人們開始嘗試寫監控程式讓CPU資源可以被充分利用。程式排程方式演進為:**多重程式(Multiprogramming) -> 分時系統(Time-Sharing System) -> 多工(Multi-tasking)系統**。以下將一一介紹。 ### 1. 多重程式(Multiprogramming) * 概念: * **當某程式暫時不需使用CPU的時候,監控程式會啟動另外的正在等待CPU資源的程式**。目的是讓CPU資源能充分被使用。 * 優點: * 看似原始但在當時確實大幅提高了CPU使用率。 * 缺點: * 程式之間的排程策略太過粗糙,因為CPU是前一程式不使用時才能輪到其他需要CPU資源的程式使用CPU,也就是**程式沒有優先序高低的差別**;這會讓一些急需使用CPU完成任務的程式(例如使用者互動的任務),可能需要等待很長的時間才分配到CPU資源。這會造成你在你的laptop按了一下滑鼠、或者在鍵盤上敲了幾個鍵,結果過了10分鐘系統才有反應。 ### 2. 分時系統(Time-Sharing System) * 概念: * 經過稍微改進後,程式執行模式變成一種合作模式: 每個程式執行一段時間後,會主動讓出CPU給其他程式。 * 優點: * 在一小段時間內讓每個程式都有機會被執行到,對一些互動式任務來說很重要,可以解決前述問題,按下鍵盤滑鼠時,程式需要處理的任務可能不多,但需要系統盡快處理任務,讓使用者能立即看到結果。 * 缺點: * 如果遇到程式在進行很耗時的計算,一直霸佔著CPU資源,那作業系統也沒辦法,其他程式都只能等著。整個系統會看起來像當機一樣卡住。例如程式進入while(1)無窮迴圈,會讓整個系統都卡住。 ### 3. 多工(Multi-tasking)系統 因為前兩種排程方式的缺點,因而演進成我們現在很熟悉的多工(Multi-tasking)模式。 * 概念: 使用一種叫**先佔式**(**Preemptive**)的CPU分配方式 * 作業系統接管了所有硬體資源,且本身是執行在受硬體保護的級別。 * 所有程式都以行程(Process)的方式執行在比作業系統權限更低的級別,每個行程都有自己獨立的位址空間、有單獨的記憶體,使行程間的位址空間互相隔離。 * CPU由作業系統統一分配: * 每個行程根據行程優先序都有機會得到CPU資源,但如果執行時間超過一定時間,作業系統會暫停該行程,將CPU資源釋出給其他等待執行的行程。 * 作業系統可強制剝奪CPU資源並分配給它認為目前最需要的行程。 * 如果作業系統分配給每個行程的時間都很短,即CPU在多個行程間快速切換,看起來會像是很多行程都在同時執行。 * 目前幾乎所有現代OS都是採用這種方式,比如UNIX、Linux、Windows NT以後的版本、Mac OS X以後的版本。