十、十一章:探讨作業系統管理計算機資源的方法
第十章:作業系統
本章重點:記憶體管理、程序管理、CPU排程
1、 作業系統的角色
應用軟體(application software):幫助我們解決現實世界問題的程式。
系統軟體(system software):管理計算機系統并與硬體進行互動的程式。
作業系統(operating system):管理計算機資源并為系統互動提供界面的系統軟體。
任何時候都隻有一個作業系統在控制計算機
1.1記憶體、程序、與CPU管理
多道程式設計(multiprogramming):同時在主存中駐留多個程式,由它們競争CPU的技術。
記憶體管理(memory mamagement):了解主存中載有多少個程式以及它們的位置的動作。
程序(process):程式執行過程中的動态表示法。
程序管理(process management):了解活動程序的資訊的動作。
CPU排程(CPU scheduling):确定主存中的哪個程序可以通路CPU以便執行的動作。
1.2批處理
1.3分時
分時(timessharing):多個互動使用者同時共享CPU時間的系統。
虛拟機(virtual machine):分時系統建立的每個使用者都有專有機器的假象。
主機(mainframe):一個大型的多使用者計算機,通常與早期的分時系統相關。
啞終端(dumb termianal):在早期的分時系統中使用者用于通路主機的一套顯示器和鍵盤。
1.4其他OS要素
個人計算機(PC)
實時系統(real-time system):應用程式的特性決定了響應時間至關重要的系統。
響應時間(response time):收到信号和生成響應時間的延遲時間
2、記憶體管理
邏輯位址(logical address):對一個存儲值的引用,是相當于引用它的程式的。
實體位址(physical address):主儲存設備中的真實位址。
位址聯編(address binding):邏輯位址和實體位址間的映射。
三種技術:
單塊記憶體管理
分區記憶體管理
頁式記憶體管理
2.1、單塊記憶體管理
單塊記憶體管理(single contiguous memory management):把應用程式載入一段連續的記憶體區域的記憶體管理方法。
在這種記憶體管理機制中,邏輯位址隻是一個相對于程式起始位置的整數值。也就是說,建立邏輯位址就像将程式載入位址是0的主存中一樣。是以,要生成實體位址,隻要用邏輯位址加上程式在實體主存中的起始位址即可。
2.2、分區記憶體管理
固定分區法(fixed-partition technique):把記憶體分成特定數目的分區以載入程式的記憶體管理方法。
動态分區法(dynamic-partition technique):根據容納程式的需要對記憶體分區的記憶體的管理方法。
基址寄存器(base register):存放目前分區的起始位址的寄存器。
界限寄存器(bounds register):存放目前分區的長度的寄存器。
三種常用的分區選擇法:
最先比對,即把第一個足夠容納程式的分區配置設定給它。
最佳比對,即把最小的能夠容納程式的分區配置設定給它。
最差比對,即把最大的能夠容納程式的分區配置設定給它。
2.3、頁式記憶體管理
頁式記憶體管理法(paged memory technique):把程序劃分為大小固定的頁,載入記憶體時存儲在幀中的記憶體管理辦法。
幀(frame):大小固定的一部分主存,用于存放程序頁。
頁(page):大小固定的一部分程序,存儲在記憶體幀中。
頁映射表(Page Map Table,PMT):作業系統用于記錄頁和幀之間的關系的表。
請求分頁(demand paging):頁式記憶體管理法的擴充,隻有當頁面被引用(請求)時才會被載入記憶體。
頁面交換(page swap):把一個頁面從二級儲存設備載入記憶體,通常會使另一個頁面從記憶體中删除。
虛拟記憶體(virtual memory):由于整個程式不必同時處于記憶體而造成的程式大小沒有限制的假象。
系統颠簸(thrashing):頻繁的頁面交換造成的低效處理。
3、程序管理
3.1、程序狀态
程序狀态(process state):在作業系統的管理下,程序曆經的概念性階段。
下面分析在程序的每個狀态會發生哪些事情:
在建立階段,将建立一個新程序。例如,可能是由使用者登陸到一個分時系統建立了一個登入過程,也可能是在使用者送出程式後建立了一個應用程序,或者是作業系統為了完成某個特定的系統任務而建立了一個系統程序。
在準備就緒狀态中,程序沒有任何執行障礙。也就是說,準備就緒狀态下的程序并不是在等待某個事件的發生,也不是在等待從二級儲存設備載入資料,而隻是使用CPU的機會。
運作狀态下的程序是目前CPU執行的程序。它的指令将按照讀取-執行周期被處理。
等待狀态下的程序是目前在等待資源(除了CPU以外的資源)的程序。例如,一個處于等待狀态的程序可能在等待從二級儲存設備載入一個頁面,也可能在等待另一個程序給它發送信号,以便繼續執行。
終止狀态下的程序已經完成了它的執行,不再是活動程序。此時,作業系統不再需要維護有關這個程序的資訊。
3.2、程序控制塊
程序控制塊(process control block):作業系統管理程序資訊使用的資料結構。
上下文切換(context switch):當一個程序移出CPU,另一個程序取代它時發生的寄存器資訊交換。
4、CPU排程
非搶先排程(nonpreemptive scheduling):當目前執行的程序自願放棄了CPU時發生的CPU排程。
搶先排程(preemptive scheduling):當作業系統決定照顧另一個程序而搶占目前執行程序的CPU資源時發生的排程。
周轉周期(turnaround time):從程序進入準備就緒狀态到它最終完成之間的時間間隔,是評估CPU排程算法的标準。
4.1、先到先服務
在先到先服務(FCFS)排程方法中,程序按照它們達到運作狀态順序轉移到CPU。FCFS排程是非搶先的。一旦程序獲得了CPU的通路權,那麼除非它強制請求轉入等待狀态(如請求其他程序正在使用的裝置),否則将一直占用CPU。
4.2、最短作業優先
最短作業優先(SJN)CPU排程算法将檢視所有處于準備就緒狀态的程序,并分派一個具有最短服務時間的。
4.3、輪詢法
CPU的輪詢法将把處理時間平均配置設定給所有準備就緒的程序。該算法建立單獨的時間片(或時間量子),即在每個程序被搶占并傳回準備就緒狀态之前收到的時間量。被搶占的程序最終會得到其他的CPU時間片。這個過程将持續到程序得到了完成所需的全部時間進而終止了為止。
時間片(time slice):在CPU輪詢算法中配置設定給每個程序的時間量。