計算機資源 —硬件資源分配


資源包括硬件資源和軟件資源,是指執行一個用戶程序所需要的全部硬件設備、軟件設施和數據。這里主要介紹硬件資源分配(allocation of hardware resource)相關內容。

硬件資源中最主要的資源是計算資源和存儲資源。除了計算資源和內存資源的管理以外,操作系統對其他資源都通過I/O 來管理。

計算資源分配

計算資源即CPU(Central Processing Unit,中央處理單元)。主流的計算機通常有一個或多個CPU,或者一個CPU 中有多個核(即多核CPU)。從操作系統的角度來看,有多個CPU 或一個多核CPU 意味着可以同時執行多個任務。所以,操作系統必須合理地安排和調度任務,使得多個CPU 或多核盡可能地利用起來,避免出現競爭或閑置的情形。在支持多任務並發的操作系統中,這一職責稱為任務調度

在現代操作系統中,由於任務是由進程線程來完成的,操作系統的這部分功能也稱為進程調度或線程調度。

因為任務的數量可能超過CPU 或核的數量,所以,多個任務可能共用同一個CPU 或核,這就需要有一種硬件機制能夠讓操作系統在不同的任務之間實現切換,這是任務調度的硬件基礎。通常,計算機提供的時鍾中斷可以讓操作系統很方便地做到這一點,也就是說,每隔一定的時間,硬件系統會觸發一個中斷;操作系統截獲此中斷,按照某種算法暫停當前正在執行的任務,並選擇一個新的任務,從而實現任務的切換;到下一個時鍾中斷到來時,再繼續這樣的切換過程。因此,多個任務可以在一個CPU 或核中被輪流執行。操作系統可以設定時鍾中斷間隔的長度,也可以選擇不同的算法來安排這些任務被先后執行,這樣就形成了各種不同的調度算法

在支持多任務的系統中,若所有任務的內存需求加起來的總量超過了當前系統的物理內存總量,那么,系統要么停掉一些任務,要么把一些任務轉移到外存(如磁盤)中,以后當內存空閑時再把這些任務轉換回來。或者系統有選擇地把部分不常用的內存轉換到外存,並且根據適當的規則將來再慢慢地轉換回來。虛擬內存的映射以及物理內存不足時的換出和換入操作,這都是操作系統管理內存資源的重要任務。前者依賴於硬件提供的機制,而后者則更多地由操作系統自己來控制。

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)是特權指令,所以, 驅動程序對於系統的穩定性和安全性有至關重要的影響,操作系統有必要對其執行嚴格的篩查措施,以避免 惡意代碼趁機闖入系統中。  [2]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM