作業系統資源管理

計算機通常有一個作業系統,它在系統啟動時啟用並接管控制權。計算機硬體被連線到最初載入儲存在 永久記憶體 中的一組小的系統指令。您可能之前使用過至少一個作業系統。各種版本的微軟 Windows(從 NT 到 XP,再到 Vista 到 8)是個人電腦的流行選擇。多年來,UNIX 一直是嚴肅程式設計師的最愛,而一個名為 Linux 的 UNIX 版本在個人電腦系統中很受歡迎。
6.1.1 識別計算機系統中需要管理的資源。
作業系統的各種角色通常圍繞著“友好共享”的概念展開。作業系統管理資源,而這些資源通常以某種方式在想要使用它們的各種程式之間共享:多個同時執行的程式共享主記憶體的使用;它們輪流使用 CPU;以及它們爭奪使用輸入和輸出裝置的機會。作業系統充當操場管理員,確保每個人都合作並有機會玩耍。
6.1.7 概述作業系統資源管理技術:排程、策略、多工處理、虛擬記憶體、分頁、中斷、輪詢。

一個正在執行的程式駐留在主記憶體中,它的指令在 取指-解碼-執行週期 中一個接一個地被處理。多道程式設計是將多個程式同時儲存在主記憶體中的技術;這些程式競爭訪問 CPU,以便完成它們的工作。所有現代作業系統都在不同程度上使用多道程式設計。因此,作業系統必須執行記憶體管理,以跟蹤哪些程式在記憶體中以及它們駐留在記憶體中的位置。
| 0 | ... |
| 1 | ... |
| 2 | ... |
| ⋮ | ⋮ |
| 20347 | ... |
| 20348 | ... |
| 20349 | ... |
| ⋮ | ⋮ |
記憶體是一組連續的位,由特定地址引用。
所有程式在執行時都儲存在主記憶體中。這些程式引用的所有資料也儲存在主記憶體中,以便可以訪問它們。可以將主記憶體視為一個大的連續空間塊,被分成 8 位、16 位和 32 位的組。記憶體中的每個位元組或字都有一個對應的地址,它只是一個唯一標識記憶體中該特定部分的整數。在右邊,有一個記憶體表示,其中第一個記憶體地址為 0。
6.1.5 解釋作業系統在管理記憶體、外設和硬體介面方面的作用。
前面提到,在多道程式設計環境中,多個程式(及其資料)同時儲存在主記憶體中。因此,作業系統必須使用技術來
- 跟蹤程式在記憶體中的位置和方式,以及
- 將邏輯程式地址轉換為實際記憶體地址。
一個程式充滿了對變數和其他程式程式碼部分的引用。當程式被編譯時,這些引用被更改為資料和程式碼駐留在記憶體中的地址。但是,由於不知道程式將被載入到主記憶體中的確切位置,如何才能知道使用什麼地址來引用任何內容呢?
解決方法是使用兩種地址:邏輯地址和物理地址。邏輯地址(有時稱為虛擬地址或相對地址)是一個指定通用位置的值,相對於程式,而不是相對於主記憶體的實際情況。物理地址是主記憶體裝置中的實際地址——再次顯示在圖中。
當一個程式被編譯時,對一個識別符號(例如變數名)的引用被更改為一個邏輯地址。當程式最終被載入到記憶體中時,每個邏輯地址最終對應於一個特定的物理地址。將邏輯地址對映到物理地址稱為地址繫結。邏輯地址允許程式在記憶體中移動或在不同時間載入到不同的位置。只要跟蹤程式的儲存位置,就可以始終確定與任何給定邏輯地址相對應的物理地址。
以下各節將考察主要記憶體管理技術的底層原理。為了簡化示例,所有地址繫結計算都在 10 進制中執行。
單一連續記憶體管理
計劃名為“單一連續記憶體管理”的部分。 |
分割槽記憶體管理
計劃名為“分割槽記憶體管理”的部分。 |
分頁記憶體管理
計劃名為“分頁記憶體管理”的部分。 |
6.1.7 概述作業系統資源管理技術:排程、策略、多工處理、虛擬記憶體、分頁、中斷、輪詢。
按需分頁方法產生了虛擬記憶體的概念,即沒有程式大小限制的錯覺(因為整個程式不必同時都在記憶體中)。在之前研究的所有記憶體管理技術中,整個程序必須作為一個連續整體被載入到記憶體中。因此,程序大小始終有一個上限。按需分頁消除了這種限制。
然而,虛擬記憶體會在程式執行期間帶來大量的開銷。對於其他記憶體管理技術,一旦程式被載入到記憶體中,它就在那裡並且準備就緒。使用虛擬記憶體方法,人們必須不斷地在主記憶體和輔助記憶體之間交換頁面。這種開銷通常是可以接受的——當一個程式正在等待頁面被交換時,另一個程序可以接管 CPU 並取得進展。過度的頁面交換被稱為抖動,它會嚴重降低系統性能。
6.1.3 識別指定計算機系統中一系列資源的限制
6.1.4 描述計算機系統中資源限制可能導致的潛在問題。
特定計算機系統資源的限制通常與系統的硬體及其功能密切相關。限制可能包括
| 元件 | 可能的限制 | 可能的後果 |
|---|---|---|
| RAM | 如今大多數計算機都有 4 GB 的 RAM。RAM 的主要限制是,如果程式需要大量的記憶體,則可能會耗盡記憶體空間。更罕見的是,RAM 可能不可靠(非 ECC)或太慢(高時序值)。 | 所有作業系統都需要最少量的 RAM 才能執行。例如,Windows 8.1 x86_64 需要至少 2 GB 的 RAM,沒有這些,計算機系統將無法執行。RAM 不足也會導致多工處理出現問題,因為讓虛擬記憶體寫入磁碟比訪問 RAM 慢得多。最後,一些應用程式(影片處理)需要大量的 RAM。沒有這些,程式仍然可以執行,但會浪費大量使用者時間在載入上。 |
| CPU | 大多數現代計算機擁有 2 到 4 個處理器。處理器的時鐘速度可能過低。或者,CPU 的執行緒數量可能不足。 | CPU 速度慢會限制每秒可執行的計算次數。沒有多個核心,多工處理會變慢。此外,32 位 CPU 無法執行 64 位作業系統或應用程式,而某些專業使用者需要這些應用程式。 |
| 顯示卡 | 顯示卡的處理能力可能不足以滿足高階使用者的需求。此外,GPU 的視訊記憶體可能不足以與高解析度顯示器相容。 | 後果包括顯示卡無法與更高解析度的顯示器配合使用(尤其是在 4K 顯示器目前進入市場的情況下)。GPU 直接影響每秒可渲染的幀數。這對影片的流暢度有影響。弱 GPU 可能無法滿足專業使用者(例如影片編輯器或遊戲玩家)的需求。 |
| 網絡卡 | 網絡卡的傳輸速度可能有限。大多數乙太網線都是 1 Gbps,但舊的乙太網線可能是 10/100 Mbps。這對於某些應用程式來說可能不夠。此外,網絡卡需要可靠。 | 速度慢的網絡卡可能沒有足夠的頻寬來滿足某些用途,例如流式傳輸影片。不可靠的網絡卡會丟掉許多資料包,不適合 VoIP。 |
最廣泛使用的 輔助儲存 裝置是硬碟。它包括計算機主機箱中的硬碟驅動器以及行動式磁碟驅動器,這些磁碟驅動器可以輕鬆地跨計算機移動。將資料儲存到輔助儲存器需要一個組織電子介質的機制。因此,使用單個檔案,從使用者的角度來看,可以寫入輔助儲存器的最小資料量。檔案系統是管理這些檔案的自然解決方案,並且是作業系統提供的邏輯檢視,以便使用者可以將資料管理為檔案集合。檔案系統通常透過將檔案分組到目錄中來進行組織。此外,檔案是一個通用的概念。不同型別的檔案以不同的方式管理。一般來說,檔案包含程式(以某種形式)或資料(一種或多種型別)。一些檔案具有非常嚴格的格式;其他檔案更靈活。
用作輔助儲存器的最重要的硬體裝置是磁碟驅動器。儲存在這些驅動器上的檔案系統必須以高效的方式訪問。事實證明,將資料傳輸到輔助儲存器以及從輔助儲存器傳輸資料是通用計算機系統中最嚴重的瓶頸。
CPU 的速度和主儲存器的速度遠快於資料傳輸到磁碟等輔助儲存器以及從磁碟傳輸資料的速度。這就是為什麼必須執行磁碟 I/O 的程序必須等待資料傳輸完成,以便讓另一個程序有機會使用 CPU 的原因。
由於輔助 I/O 是通用計算機系統中最慢的部分,因此用於訪問磁碟驅動器上資料的技術對於檔案系統至關重要。由於計算機在一段時間內處理多個程序,因此訪問磁碟的請求會累積。作業系統用於確定要滿足哪些請求的技術稱為磁碟排程。
磁碟驅動器被組織為一個磁頭堆疊,其中每個磁頭被分成磁軌,每個磁軌被分成扇區。所有磁頭上的對應磁軌集合稱為柱面。
先來先服務磁碟排程
標題為“先來先服務磁碟排程”的部分正在計劃中。 |
最短尋道時間優先磁碟排程
標題為“最短尋道時間優先磁碟排程”的部分正在計劃中。 |
SCAN 磁碟排程
標題為“SCAN 磁碟排程”的部分正在計劃中。 |
6.1.7 概述作業系統資源管理技術:排程、策略、多工處理、虛擬記憶體、分頁、中斷、輪詢。
標題為“輪詢”的部分正在計劃中,因為還有更多細節。 |
6.1.7 概述作業系統資源管理技術:排程、策略、多工處理、虛擬記憶體、分頁、中斷、輪詢。
標題為“分頁”的部分正在計劃中,因為還有更多細節。 |
6.1.3 識別指定計算機系統中一系列資源的限制
標題為“限制”的部分正在計劃中。 |
6.1.4 描述計算機系統中資源限制可能導致的潛在問題。
標題為“後果”的部分正在計劃中。 |
作業系統必須管理的另一個重要資源是單個程序對 CPU 的使用。要了解作業系統如何管理程序,必須認識到程序在其計算生命週期中經歷的階段,並瞭解必須管理的資訊以確保程序在計算機系統中正常工作。
6.1.5 解釋作業系統在管理記憶體、外設和硬體介面方面的作用。
程序在計算機系統中被管理時會經歷特定的階段。也就是說,程序進入系統,準備執行,正在執行,正在等待資源,或者已完成。下面是表示這些程序狀態的流程圖。
在圖中,每個方框代表程序可能處於的一種狀態,箭頭表示程序如何以及為什麼可能從一種狀態移動到另一種狀態。
檢查每個狀態下程序正在發生的事情
- 在新建狀態中,正在建立程序。例如,它可能是使用者登入到分時系統時建立的登入程序,可能是使用者提交程式以供執行時建立的應用程式程序,也可能是作業系統建立的系統程序以完成特定的系統任務。
- 沒有障礙阻止其執行的程序處於就緒狀態。處於就緒狀態的程序不會等待事件發生或等待資料從輔助儲存器中調入。相反,它正在等待使用 CPU 的機會。
- 處於執行狀態的程序當前正在由 CPU 執行。它的指令正在取指執行週期中被處理。
- 處於等待狀態的程序當前正在等待資源(CPU 除外)。例如,處於等待狀態的程序可能正在等待其記憶體中的一個頁面從輔助儲存器中調入,或者等待另一個程序向其傳送允許其繼續的訊號。
- 處於終止狀態的程序已完成執行,不再處於活動狀態。此時,作業系統不再需要維護有關程序的資訊。
請注意,許多程序可能同時處於就緒狀態或等待狀態,但只有一個程序可以處於執行狀態。
程序建立後,作業系統會將其加入到就緒狀態。當 CPU 排程演算法指示時,程序會被排程到執行狀態。
在執行時,程序可能會被作業系統中斷以允許另一個程序使用 CPU。在這種情況下,程序只需返回到就緒狀態。或者,執行程序可能會請求一個不可用的資源或需要 I/O 來檢索程序的已引用部分,在這種情況下,它將被移到等待狀態。執行程序最終可能獲得足夠的 CPU 時間來完成其處理並正常終止;否則,它可能會生成無法恢復的錯誤並異常終止。
當等待的程序獲得其正在等待的資源時,它將再次移到就緒狀態。
程序控制塊
作業系統必須為每個活動程序管理大量資料。 通常這些資料儲存在一個稱為程序控制塊 (PCB) 的資料結構中。 通常,每個狀態都由一個 PCB 列表表示,每個列表對應於該狀態中的每個程序。 當程序從一種狀態變為另一種狀態時,其對應的 PCB 在作業系統中從一種狀態列表變為另一種狀態列表。 當程序首次建立(新狀態)時,會建立一個新的 PCB,並持續到程序終止。
計劃有一節名為“程序控制塊”,其中包含更多詳細資訊。 |
6.1.7 概述作業系統資源管理技術:排程、策略、多工處理、虛擬記憶體、分頁、中斷、輪詢。
計劃有一節名為“中斷”,其中包含更多詳細資訊。 |
6.1.3 識別指定計算機系統中一系列資源的限制
標題為“限制”的部分正在計劃中。 |
6.1.4 描述計算機系統中資源限制可能導致的潛在問題。
標題為“後果”的部分正在計劃中。 |
6.1.7 概述作業系統資源管理技術:排程、策略、多工處理、虛擬記憶體、分頁、中斷、輪詢。
與記憶體管理和程序管理相關的概念是 CPU 排程的需要,它決定在任何給定時間哪個記憶體中的程序由 CPU 執行。 如何利用計算機更強大的功能和速度的問題導致了分時概念。 分時系統允許多個使用者同時與一臺計算機互動。 多道程式設計允許多個程序同時活動,這使得程式設計師能夠直接與計算機系統互動,同時仍然共享其資源,而分時系統則創造了每個使用者都獨佔訪問計算機的錯覺。 也就是說,每個使用者不必積極爭奪資源,儘管這正是幕後發生的事情。 一個使用者可能實際上知道他們正在與其他使用者共享機器,但不必做任何特別的事情來允許它。 作業系統在幕後管理資源的共享,包括 CPU。
CPU 排程是指確定應將處於就緒狀態的哪個程序移動到執行狀態的行為。 也就是說,CPU 排程演算法決定哪個程序應該獲得 CPU,以便它可以進行計算進度。
當程序從執行狀態變為等待狀態,或者當程式終止時,會做出 CPU 排程決策。 這種型別的 CPU 排程稱為非搶佔式排程,因為對新 CPU 程序的需求是當前執行程序活動的結果。
當程序從執行狀態變為就緒狀態,或者當程序從等待狀態變為就緒狀態時,也可能會做出 CPU 排程決策。 這些是搶佔式排程的示例,因為當前執行的程序(並非由於自身錯誤)被作業系統搶佔。
排程演算法通常使用特定指標進行評估,例如程序的週轉時間。 這是程序從到達就緒狀態到最後一次退出執行狀態之間的時間量。 通常,希望程序的週轉時間平均儘可能小。
有多種方法可用於確定哪個程序首先被選中從就緒狀態變為執行狀態。 在這裡,我們將檢查三種方法
在先到先服務 (FCFS) 排程方法中,程序按照它們到達執行狀態的順序移動到 CPU。 FCFS 排程是非搶佔式的。 一旦程序被授予訪問 CPU 的許可權,它就會保留它,除非它做出導致它等待的請求,例如,導致它等待的請求,例如,對另一個程序正在使用的裝置的請求。
計劃有一節名為“先到先服務”。 |
最短作業優先 {SJN} CPU 排程演算法檢視處於就緒狀態的所有程序,並排程具有最短服務時間的程序。 與 FCFS 一樣,它通常作為非搶佔式演算法實現。
計劃有一節名為“最短作業優先”。 |
6.1.5 解釋作業系統在管理記憶體、外設和硬體介面方面的作用。
迴圈排程 CPU 排程在所有就緒程序之間公平分配處理時間。 該演算法建立特定的時間片(或時間量子),這是每個程序在被搶佔並返回到就緒狀態以允許另一個程序輪流之前接收的時間量。 最終,被搶佔的程序將被授予 CPU 上的另一個時間片。 此過程將持續到程序最終獲得所需的所有時間並終止為止。
請注意,迴圈排程演算法是搶佔式的。 時間片到期是將程序從 CPU 移動的任意原因。 此操作由從執行狀態到就緒狀態的轉換來呈現。
計劃有一節名為“迴圈排程”。 |
6.1.3 識別指定計算機系統中一系列資源的限制
標題為“限制”的部分正在計劃中。 |
6.1.4 描述計算機系統中資源限制可能導致的潛在問題。
標題為“後果”的部分正在計劃中。 |
6.1.7 概述作業系統資源管理技術:排程、策略、多工處理、虛擬記憶體、分頁、中斷、輪詢。

作業系統還必須考慮計算機通常連線到網路的事實。 如今,有了全球資訊網,人們會將網路通訊視為理所當然,但是,高度連線和互動的 world 需要在資料級別進行管理。 作業系統能夠處理進出物理計算機的輸入和輸出 - 通常透過某種型別的網路卡。 網路卡和計算機之間的這種通訊通常透過網路介面控制器 (NIC) 進行管理,網路介面控制器是一個小型元件,它處理 OSI 層 中的兩個層;物理層和資料鏈路層。
6.1.3 識別指定計算機系統中一系列資源的限制
標題為“限制”的部分正在計劃中。 |
6.1.4 描述計算機系統中資源限制可能導致的潛在問題。
標題為“後果”的部分正在計劃中。 |
除了其他外設之外,作業系統必須處理的最基本方面是圖形和圖形管理。 計算機圖形可以非常籠統地描述為設定計算機螢幕上的畫素值。 因此,計算機圖形在計算機科學的許多方面都發揮著作用,最常見的應用是現代作業系統的圖形使用者介面 (GUI)。 檔案和資料夾表示為螢幕上的圖示,圖示指示檔案型別,例如。 作業系統必須說明計算機圖形的位置和計算,通常使用其自己的獨立圖形處理單元 (GPU) 完成。
6.1.3 識別指定計算機系統中一系列資源的限制
標題為“限制”的部分正在計劃中。 |
6.1.4 描述計算機系統中資源限制可能導致的潛在問題。
標題為“後果”的部分正在計劃中。 |
一個HTTP Cookie 是一種快取。
除了顯而易見的事實外,還有許多其他需要管理的雜項系統概念,這些概念可能並不完全顯而易見。其中之一是快取。快取是一個透明地儲存資料的元件,以便將來對該資料的請求可以更快地得到處理。儲存在快取中的資料可能是先前計算出的值,也可能是儲存在其他地方的原始值的副本。如果請求的資料包含在快取中,則可以透過簡單地讀取快取來處理此請求,這相對更快。否則,必須重新計算資料或從其原始儲存位置獲取資料,這相對較慢。因此,可以從快取中處理的請求越多,整個系統性能就越快。
6.1.2 評估各種計算機系統中可用的資源。

作業系統負責與各種裝置通訊。通常,這種通訊是透過裝置驅動程式來完成的,裝置驅動程式是一個小的程式,它“知道”特定裝置期望接收和傳遞資訊的方式。藉助裝置驅動程式,每個作業系統不再需要了解將來可能需要與之通訊的每個裝置。這是抽象的另一個很好的例子。合適的裝置驅動程式通常會隨新硬體一起提供,並且最新的驅動程式通常可以從製造商的網站上免費下載。
6.1.8 討論為裝置生成專用作業系統的優勢。
移動裝置,如智慧手機和平板電腦,執行的作業系統是根據其需求量身定製的。例如,記憶體限制和較小的外設集與典型的桌上型電腦或筆記型電腦不同。蘋果的 iPod Touch、iPhone 和 iPad 都執行 iOS 移動作業系統,該作業系統源於 Mac OS。Android 作業系統由 Google 開發,是 Open Handset Alliance 的開源專案。它已成為各種移動裝置中最流行的作業系統。Android 和 iOS 主導著當前的移動作業系統市場,但也有一些競爭對手。
6.1.9 說明作業系統如何向用戶和應用程式隱藏硬體的複雜性。
現代計算機硬體極其複雜。幸運的是,作業系統透過使用抽象和高階 API 來隱藏這種複雜性。例如,如果應用程式想要在特定位置建立一個檔案,它會命令作業系統建立該檔案。程式不需要關心磁碟執行的哪個檔案系統 (FAT、NTFS 等),是哪個磁碟,以及它是一個網路伺服器還是本地驅動器。作業系統隱藏了所有這些細節。其他示例包括虛擬化真實裝置,例如驅動器磁碟機代號、虛擬記憶體、輸入裝置、Java 虛擬機器。