370 likes | 920 Views
作業系統簡介. 教師: 陳炯勳 mikemouse@is.cs.nthu.edu.tw 助教:陳建銘 kkyy@is.cs.nthu.edu.tw 助教:張仕穎 godspeed@is.cs.nthu.edu.tw. 大綱. 作業系統簡介 作業系統的主要功能 作業系統的演進 程序與 CPU 管理 排程 排程演算法 記憶體管理 傳統記憶體管理 多重程式處理( Multiprogramming) 虛擬記憶體( Virtual Memory) 磁碟管理. 作業系統簡介. 作業系統與電腦系統關係圖. 作業系統簡介. 核心常駐程式.
E N D
作業系統簡介 教師: 陳炯勳 mikemouse@is.cs.nthu.edu.tw 助教:陳建銘 kkyy@is.cs.nthu.edu.tw 助教:張仕穎 godspeed@is.cs.nthu.edu.tw
大綱 • 作業系統簡介 • 作業系統的主要功能 • 作業系統的演進 • 程序與CPU管理 • 排程 • 排程演算法 • 記憶體管理 • 傳統記憶體管理 • 多重程式處理(Multiprogramming) • 虛擬記憶體(Virtual Memory) • 磁碟管理
作業系統簡介 作業系統與電腦系統關係圖
作業系統簡介 核心常駐程式
作業系統的主要功能 • 資源管理者(resource manager): • 程序管理(process management):排程(process scheduling) • 記憶體管理(memory management):動態記憶體配置,虛擬記憶體 • 設備管理(device management):互鎖(dead lock),競賽(race) • 資訊管理(information management):檔案系統
作業系統的主要功能 作業系統是硬體資源的管理者
作業方式 • 批次(batch):異動資料事先備妥(排序),定期或累積到一定數量才予以處理‧ • 人機互動(interactive)差,時效差,但throughput高,如薪資計算‧ • 分時(time sharing):CPU輪流執行多個程式,各程式分配到的CPU時間一樣多‧ • 反應(response)時間平均(不考慮throughput),建立一良善的人機交談環境,如計算機教學教室,資料查詢系統‧
作業系統的演進 • 即時處理(Real-time processing) • 硬性即時(Hard Real Time) • 軟性即時(Soft Real Time)
多元處理 • multiprogramming: • 主記憶體存放多個程式,(單一)CPU依排程策略安排各程式輪流執行‧可提高計算機系統之整體效率,但對特定程式而言,執行時間反而增長‧ • multiprocessing: • 一計算機系統有多個CPU,可同時執行一個或多個程式,提高計算機系統之可靠度,或分工執行以提升執行速度
multitasking: • 一件工作(job)分成多個task,或一個user指定多個task,這多個task可同時執行(多CPU系統)或輪流執行(單一CPU系統)‧切換task時,如multiprogramming系統一般,須進行context-switching • multithreading: • 多個thread(一連串指令)可同時或輪流執行‧ • 切換thread時,只須進行暫存器(register)之save與restore‧
程序與CPU管理 • 程序(Process) 開始執行,程式已載入主記憶體,有相對應之PCB,以記載process執行時之相關資訊,如使用了哪些設備?占用了 哪些記憶體?預估CPU執行時間多少?優先順序為何等等‧ • 程式(Program) 尚未執行,程式還停留在輔助記憶體內‧沒有相對應之PCB(process control block),未占用計算機資源‧非排程程式的scheduling unit‧
程序與CPU管理 • 程序為執行狀態(Running)代表程序正在被執行,但程序不一定一次就會執行完畢,它也可能會因為下列各種狀況而改變狀態,其狀態移轉如圖8-15所示。以下是狀態轉移時機的說明【23】: • 【建立 → 準備】:只要Ready佇列中仍有空位,就會將Job佇列中新建立的行程移往Ready佇列中。 程序狀態移轉圖
程序與CPU管理 • 【準備 → 執行】:若有空閒的CPU,將會由排程程式(Scheduler)挑選Ready佇列中的程序來執行。 • 【執行 → 準備】:發生某些中斷(Interrupt)事件時(例如分配的時間配額已經用完),將會暫停尚未執行完畢的程序,該程序將被移往Ready佇列中等待下一次CPU有空閒時再服務。 • 【執行 → 等待】:發生某些需要較長時間處理的事件時(例如I/O事件),將會暫停執行中的程序,該程序將被移往Waiting佇列中。 • 【等待 → 準備】:當需要長時間處理的事件處理完畢後(例如I/O事件已經處理完畢),將會把程序移往Ready佇列中等待下一次CPU有空閒時再服務。 • 【執行 → 結束】:程序已經完成所有的執行動作,將會被變更為結束狀態,此時只要釋放程序所佔用的資源,該程序就告終止。
排程 • 程序的特性 • CPU排程與程序的特性有關,一般來說,我們可以依照程序的CPU指令及I/O指令,將程序(process)區分為下列兩大類: • I/O存取較多的程序(I/O Bound Process) • CPU運算較多的程序(CPU Bound Process)
排程 長程、短程、中程排程程式
排程演算法 • 任何一個排程程式都有一套排程演算法以決定該服務那一個需求,在這一節中我們將介紹幾種常見的排程演算法 • 先到先做(First-Come-First-Serviced;簡稱FCFS): • 非強取性(non-preemptive),不會有starvation • 優先權(Priority): • 有強取式與非強取式兩種,會有starvation • 循環分配(Round-Robin;簡稱RR): • 各程式分配到的時間相同,分時方式,強取式(preemptive),不會有starvation
排程演算法 • 最短工作優先(Shortest-Job-First;簡稱SJF): • 非強取式,不會有starvation • 最短剩餘時間優先(Shortest-Remaining-Time-First;簡稱SRTF): • 強取式,會有starvation • SRTF也是以CPU時間的長短來決定要執行哪一個程序,但此處所稱之CPU時間則專指剩餘需要服務的CPU時間,並且不只是Ready佇列內的程序是目標對象,連正在執行的程序也必須考慮在內。SRTF與SJF有些相似,所以又稱為先佔式最短工作優先(preemptive SJF)排程。唯一不同的是,SJF的程序一但被CPU服務後就不會被其他程序插隊(non- preemptive),而SRTF的程序即使已經進入執行狀態,仍可能被準備狀態的程序插隊(preemptive)。
Round Robin • Suppose the time slice was 50
記憶體管理 • 硬碟內的程式是靜態的,當程式真的要被執行時,必須先載入到主記憶體中,CPU才能執行這些程式,由於記憶體容量有限,因此在多工及多使用者的環境下,必須透過某些記憶體管理方式,讓所有要被執行的程式輪流載入記憶體中並被CPU所執行。 • 記憶體管理也隨著時代演進而改變,從早期的單一程式處理到後來的多重程式處理,以及虛擬記憶體觀念等等都將在這一節中加以介紹。 • 邏輯位址與實體位址 記憶體 重定位暫存器 14000 + CPU 邏輯位址 實體位址 346 14364
多重程式處理(Multiprogramming) • 為了讓多個程式都可以同時存放於記憶體中,因此需要將主記憶體切割為多個區域,稱之為分割區(Partition),依照切割的方式,我們可以將之分為固定分割法及變動分割法兩大類。 • 固定分割(Fixed Partition) • 固定分割是將主記憶體切割為許多個大小不同的區域,這些被分割的區域大小一但確定後,就不會再變動。當程序需要被執行時,則載入到適當的分割區,所以有幾個分割區就代表最多可以同時容納幾個程序 記憶體的固定分割
多重程式處理(Multiprogramming) • 固定分割會產生記憶體碎片,導致記憶體無法被充分利用。記憶體碎片又分為內部碎片(Internal Fragmentation)以及外部碎片(External Fragmentation)。 固定分割的內部碎片
多重程式處理(Multiprogramming) 固定分割的外部碎片
多重程式處理(Multiprogramming) • 變動分割(Variable Partition) • 固定分割會產生記憶體碎片的原因在於我們無法事先預知程式大小,所以為了提供更彈性的記憶體管理,於是發展了變動分割法。 • 變動分割法是根據程式大小動態配置記憶體空間給各個程式,在一開始時,記憶體是一個完整的可用空間,程式按照順序向作業系統提出記憶體空間配置要求後,作業系統就配置一個與程式大小完全相同的空間給程式使用,而當程式執行完畢後,則會將記憶體釋放,交還給作業系統形成可用空間,以便於日後其他程式的使用。通常記憶體的配置與回收則是透過作業系統動態記憶體配置(dynamic storage allocation)來加以控管。
多重程式處理(Multiprogramming) 變動分割法範例
多重程式處理(Multiprogramming) • 下圖是一個變動分割法的範例,由範例中,我們可以得知變動分割法絕對不會產生內部碎片,但仍有外部碎片的問題,例如在時間40要求一個320K大小的P5程式仍將無法放入記憶體中,但這可以透過緊湊變動分割法來加以解決。 • 緊湊變動分割法(Variable partition with compaction)可以在片段可用記憶體不夠用但整體可用記憶體仍然足夠時,將原本配置的記憶體空間重新排列,使得可用空間聚集在一起,例如圖8-24範例中,若要求一個320K大小的P5程式時,緊湊變動分割法將會改變記憶體配置。 緊湊變動分割法範例
記憶體配置 • 最先配合:配置第一個找到夠大的區間 • 最佳配合:從所有容量夠大的區間中,選一個最小的區間分配給行程 • 最差配合:從所有容量夠大的區間中,選一個最大的區間分配給行程
磁碟管理 • 磁碟的儲存取動作屬於機械式動作,因此比CPU運算及主記憶體慢了許多,若無法有效管理則很容易使得系統整體效率下降。磁碟存取主要的時間有搜尋時間(Seek Time)、旋轉延遲(Rotational Delay)及資料傳輸時間(Transfer Time)等三項因素(詳見4.2.3節)。此三項時間又以搜尋所花的時間為最多。 • 搜尋時間(seek time)代表移動讀寫臂到目標磁軌所需要的時間,作業系統則是透過磁碟排程(Disk Scheduling)來減少搜尋時間,常見的磁碟排程有下列幾種: • 先到先做(First-Come-First-Served;FCFS) • 搜尋時間最短者優先(Short-Seek-Time-Fits;SSTF) • 掃描法(SCAN) • 循環掃描法(Circular-Scan;C-SCAN) • 觀察法(LOOK)與循環觀察法(C-LOOK)
磁碟管理 • 先到先做(First-Come-First-Served;FCFS) • 磁碟的FCFS也和CPU排程的FCFS類似,凡是先提出讀寫要求的程序將會被先處理,這是最簡單的方法,但效能表現通常不佳,舉例來說,如果每次讀寫完畢之後,讀寫頭恰好停留在距離下一個提出要求的目標磁軌很遠的地方時,則必須花費很多的時間來移動讀寫臂到目標磁軌,使得整體搜尋時間變得很長。 • 搜尋時間最短者優先(Short-Seek-Time-Fits;SSTF) • SSTF採用了特殊的優先順序考量,此優先順序為目前讀寫頭所在磁軌與最接近磁軌的距離(距離越短,越先服務),所以移動讀寫頭的時間將可以大幅減少,不過,SSTF可能會產生飢餓(Starvation)現象。所謂飢餓現象代表的是,有某些需求始終位於較低的優先順序而無法獲得較高的優先順序,使得該需求經過非常久的時間後,仍無法被服務。舉例來說,若有某一個存取需求恰好都比新進的存取需求需要移動讀寫頭更多的距離時,它將每次都被插隊,而無法獲得系統的服務。
磁碟管理 • 掃描法(SCAN) • 掃描法很像我們在搭電梯時的狀況,因此又稱為電梯法。就如同搭電梯般,絕對不會發生電梯一直服務他人而忽略了某人的現象,所以掃描法不會產生飢餓現象。 • 掃描法是將讀寫頭來回依序掃描每一個磁軌,當經過磁軌時,若恰好有程序需要讀寫該磁軌,則立刻服務該程序。當讀寫頭掃描到第一個及最後一個磁軌時,則反向掃描磁軌,是不是和搭電梯的情況非常類似呢?既然如此,就如同我們搭電梯時最討厭的狀況一樣,當你要按下向上搭乘的按鍵時,電梯剛好已經跑上去一層了,此時,你就必須等待最長的時間。沒錯,掃描法也是如此,當某程序要求讀寫的磁軌剛剛才經過,那麼該程序必須等到讀寫頭到了第一磁軌或最後磁軌再返回到該磁軌時,才會被服務。
磁碟管理 • 循環掃描法(Circular-Scan;C-SCAN) • 循環掃描法只是掃描法的另一種版本,唯一的差別在於,它不是遇到第一個及最後一個磁軌時才返回,而是永遠朝向同一方向掃描,如果是從第一磁軌往最後磁軌方向掃描,則順序為第一磁軌、第二磁軌、、、最後磁軌,接著又回到第一磁軌繼續同樣的順序往編號越後面的磁軌掃描,就如同一個環狀結構,類似在操場舉辦馬拉松一樣,選手只能繞著操場跑,並按照同一方向前進(通常是逆時鐘),沿途有許多的補給站,當選手經過補級站後,必須再繞一圈才會回到該補給站。這有什麼好處呢?最大的優點就是循環掃描法的最長等待時間將比掃描法的最長等待時間少了一半(當需求位於第一軌或最後一軌且讀寫頭剛剛離開時)。 • 觀察法(LOOK)與循環觀察法(C-LOOK) • 觀察法則是掃描法的改良,循環觀察法則循環掃描法的改良,這兩種方法的改良都是使用同樣的技巧,以觀察法來說,它在服務完最後一個需求後,就停止不動,以避免做無謂的掃描,直到下一次開始提出需求後,才開始按照掃描法方式移動讀寫頭(循環觀察法則是按照循環掃描法方式移動讀寫頭)。
常見的作業系統 • UNIX • MS-DOS • Windows作業系統(Windows 95/98/Me/NT/2000/XP) • Linux • Mac OS • 掌上型電腦與PDA的OS
Windows作業系統(Windows 95/98/Me/NT/2000/XP) Windows的發展歷程