硬體資源分配

資源包括硬體資源和軟體資源,是指執行一個用戶程式所需要的全部硬體設備、軟體設施和數據。這裡主要介紹硬體資源分配相關內容。

基本介紹

  • 中文名:硬體資源分配
  • 外文名:allocation of hardware resource
  • 意義:使系統高效、合理、安全
  • 目的:對資源合理分配
  • 分類:計算資源和存儲資源
  • 領域:計算機作業系統
計算資源分配,存儲資源分配,I/O設備的資源分配,
硬體資源中最主要的資源是計算資源和存儲資源。除了計算資源和記憶體資源的管理以外,作業系統對其他資源都通過I/O 來管理。

計算資源分配

計算資源即CPU(Central Processing Unit,中央處理單元)。現在主流的計算機通常有一個或多個CPU,或者一個CPU 中有多個核(即多核CPU)。從作業系統的角度來看,有多個CPU 或一個多核CPU 意味著可以同時執行多個任務。所以,作業系統必須合理地安排和調度任務,使得多個CPU 或多核儘可能地利用起來,避免出現競爭或閒置的情形。在支持多任務並發的作業系統中,這一職責稱為任務調度。在現代作業系統中,由於任務是由進程執行緒來完成的,作業系統的這部分功能也稱為進程調度或執行緒調度。因為任務的數量可能超過CPU 或核的數量,所以,多個任務可能共用同一個CPU 或核,這就需要有一種硬體機制能夠讓作業系統在不同的任務之間實現切換,這是任務調度的硬體基礎。通常,計算機提供的時鐘中斷可以讓作業系統很方便地做到這一點,也就是說,每隔一定的時間,硬體系統會觸發一個中斷;作業系統截獲此中斷,按照某種算法暫停當前正在執行的任務,並選擇一個新的任務,從而實現任務的切換;到下一個時鐘中斷到來時,再繼續這樣的切換過程。因此,多個任務可以在一個CPU 或核中被輪流執行。作業系統可以設定時鐘中斷間隔的長度,也可以選擇不同的算法來安排這些任務被先後執行,這樣就形成了各種不同的調度算法。

存儲資源分配

存儲資源通常包括記憶體(RAM,隨機訪問存儲器)和外存(也稱為輔助存儲器)。由於外存是通過標準的I/O(輸入/輸出)來管理的,而記憶體是CPU 直接通過系統匯流排來訪問的,所以,我們將在討論輸入/輸出的時候再介紹外存,現在僅考慮記憶體資源的管理。記憶體是CPU 執行一個任務的物質基礎,CPU 內部的暫存器具備計算的能力。除了暫存器(其本身也是一種存儲資源)以外,數據的來源是系統記憶體。在現代作業系統中,每個任務都有其獨立的記憶體空間,從而避免任務之間產生不必要的干擾,所以作業系統有責任為每個任務提供相對獨立的記憶體空間。把連續編址的物理記憶體劃分成獨立的記憶體空間,典型的做法是段式記憶體定址和頁式虛擬記憶體管理。不同的硬體體系結構可能支持不同的方案。Intel x86體系結構同時支持段式定址和頁式虛擬記憶體映射,但是,可在Intel x86 上運行的作業系統幾乎都選擇了虛擬記憶體映射作為記憶體管理的硬體基礎。WindowsLinux便是典型的例子。
在支持多任務的系統中,若所有任務的記憶體需求加起來的總量超過了當前系統的物理記憶體總量,那么,系統要么停掉一些任務,要么把一些任務轉移到外存(如磁碟)中,以後當記憶體空閒時再把這些任務轉換回來。或者系統有選擇地把部分不常用的記憶體轉換到外存,並且根據適當的規則將來再慢慢地轉換回來。虛擬記憶體的映射以及物理記憶體不足時的換出和換入操作,這都是作業系統管理記憶體資源的重要任務。前者依賴於硬體提供的機制,而後者則更多地由作業系統自己來控制。

I/O設備的資源分配

除了計算資源和記憶體資源的管理以外,作業系統對其他資源都通過I/O 來管理。例如,上面提到的外存資源,像磁碟,在現代計算機中是不可或缺的部件;另外,鍵盤滑鼠通常是標準的輸入設備,而顯示器印表機往往是標準的輸出設備。作業系統為了跟I/O 設備打交道,需要三方面的技術保障:CPU 通過特定的指令來控制I/O 設備,I/O 設備通知CPU 發生了特定的事情,以及在系統主記憶體和設備之間傳輸數據。
通常,CPU 直接訪問設備的暫存器來操作一個設備,在Intel x86 系統上,CPU 通過in和out 指令能夠做到這一點。設備暫存器是另一個地址空間,CPU 通過I/O 連線埠(I/O port)來訪問它們。在現代計算機中,I/O 連線埠的分配跟軟體硬體都有關係。不同的硬體設備會使用不同的連線埠編號,現代的設備大都可以通過軟體方式來設定其連線埠號,而過去一些老的設備可能需要通過硬體跳線來改變連線埠號的設定。對硬體設備進行恰當的設定,也是作業系統管理硬體設備的任務之一。另外,CPU 怎么知道或檢測設備的工作狀態呢?一種做法是,通過不停地查詢設備的狀態暫存器來獲知其工作狀態;但是,更有效的做法是,當設備的狀態發生變化時,它能夠主動地通知CPU,從而作業系統可以採取相應的措施。這後者即是設備中斷機制。比如說,當鍵盤設備接收到按鍵動作時,它產生一個中斷,告訴CPU(和作業系統),當前哪個鍵被按下了。中斷也有編號,中斷的編號被視為系統全局資源,在早期計算機的中斷控制器中,不同設備的中斷號不能衝突,否則設備無法正常工作。現代計算機通常允許多個設備共享中斷號,作業系統和設備驅動程式可以協商設備的中斷號。
計算機的計算處理能力往往僅限於在CPU 內部暫存器和主記憶體之間進行,但是為了實現基本算術計算以外的其他各種能力,通常有必要讓設備中的數據也參與到計算中來,所以,在設備與CPU 暫存器或主記憶體之間傳輸數據往往是必要的功能。例如,計算機通過磁碟設備可以實現永久存儲,通過顯示控制器實現彩色顯示甚至三維模擬。實現數據傳輸的方法有多種,如果設備本身的數據量很小,則可以直接通過in指令來讀取設備中的數據,或通過out 指令輸出到設備中。或者也可以映射一段地址範圍到設備中,這樣,當CPU 訪問這塊地址範圍時,實際上是在訪問設備的記憶體,而不是系統的主記憶體。另外一種適合於大塊數據傳輸的技術是DMA(Direct Memory Access,直接記憶體訪問)。像硬碟控制器和網路控制器就通常採用DMA方式來傳輸數據,CPU只須設定好數據傳輸的方向、位置、數量等信息,就可以啟動DMA傳輸了。DMA 傳輸可以與CPU 計算同時進行,但是DMA 使用的匯流排不能與CPU 使用的發生衝突,它可以趁CPU 不用匯流排的時刻來傳送數據,也可能會因此而阻塞CPU 指令的執行。DMA 傳輸影響CPU 執行指令的程度取決於DMA 控制器的傳輸策略。
從作業系統的角度來看,考慮到I/O 設備的多樣性和出現新設備的可能性,作業系統有必要定義一個框架來容納各種各樣的I/O 設備,並且允許作業系統發布之後還能夠為新的設備提供支持。所以,除了專用作業系統以外,現代作業系統都會提供一個I/O 模型,允許設備廠商按照此模型編寫設備驅動程式(Device Driver),並載入到作業系統中。I/O模型通常具有廣泛的適用性,能夠支持各種類型的設備,包括對硬體設備的控制能力,以及對數據傳輸的支持。可以這么來概括I/O 模型,它對下提供了控制硬體設備的能力,對上為應用程式訪問硬體提供了一個標準接口,同時I/O 模型也必須能夠讓作業系統有效地管理設備驅動程式。在Windows 系統中,第三方廠商可以使用Windows 的I/O 模型來編寫設備驅動程式。Windows 本身在發行時,已經隨帶了大量主流設備的驅動程式,所以,Windows 系統在安裝階段可以自動將識別出來的設備的驅動程式安裝到系統中。因此,用戶並不需要手工下載或安裝這些驅動程式。另一方面,由於驅動程式需要直接訪問硬體設備,它執行的許多指令(包括in 和out)是特權指令,所以,驅動程式對於系統的穩定性和安全性有至關重要的影響,作業系統有必要對其執行嚴格的篩查措施,以避免惡意代碼趁機闖入系統中。

相關詞條

熱門詞條

聯絡我們