第一章——計算機系統架構介紹


1 介紹

計算機科學領域的任何問題都可以通過增加一個間接的中間層來解決。

計算機系統u燃機系統結構的層次結構設計如下:

 

每個層次之間都需要相互通信,既然需要通信就必須有一個通信的協議,也就是接口。一般接口的下面那層就是接口的提供者,接口由它定義;接口的上層就是接口的使用者,它使用該接口來實現需要的功能。

例如,從整個層次結構來看,開發工具與應用程序屬於同一層次,它們都是要運行庫提供的接口,也就是應用程序編程接口。應用程序接口的提供者就是運行庫,什么樣的運行庫提供什么樣的API。而對於操作系統,運行庫是操作系統提供的系統調用接口的使用者,操作系統是提供者。而操作系統內核層對於硬件層來說是硬件接口的使用者,而硬件是接口的定義者,硬件的接口定義決定了操作系統內核,具體來說就是驅動程序如何使用操作硬件,如何與硬件通信。

2 操作系統做什么

操作系統的一個功能是提供抽象的接口,另一個主要功能是管理硬件資源。

一個計算機的資源主要分CPU、存儲器(包括內存和磁盤)和I/O設備。

2.1 內存不夠怎么辦

在早期的計算機,程序是直接運行在物理內存上的,也就是說,程序在運行時所訪問的地址是物理地址。當然,如果一個計算機同時只運行一個程序,那么只要程序要求的內存空間不要超過物理內存的大小,就不會有問題。這樣明顯的一個問題是當有多個程序要運行?

缺點:

  • 地址空間不隔離,所有程序都直接訪問物理內存,程序鎖使用的內存空間不是相互隔離的。
  • 內存使用效率低,由於沒有有效的管理,通常一個程序需要執行時,需要將整個程序都調入內存。
  • 程序運行的地址不確定。因此程序每次都需要裝入運行,我們從內存中給它分配內存,但是分配的地址是不確定的。

解決這些問題的辦法是,增加中間層,即使用一種間接訪問地址的方法。我們把程序的地址看做是一種虛擬地址,然后通過某些映射的方法,將虛擬地址轉換為物理地址。這樣保證任意一個程序訪問的地址空間與另一個程序相互不重疊,以達到地址空間隔離。

2.1.2 關於隔離

虛擬地址空間是虛擬的、人們想象出來的地址空間,其實它並不存在,每個進程都有自己獨立的虛擬地址空間,而且每個進程都只能訪問自己的地址空間,這樣就有效地做到了進程的隔離。

2.1.3 分段

最開始人們使用的是一種叫做分段的方法,基本思路是把一段程序所需要的內存空間大小的虛擬空間映射到某個地址空間。但是這樣做只能解決第一個和第三個問題,並沒有解決第二個問題,即內存效率的問題。分段對內存區域的映射還是按照程序為單位,如果內存不足,被換入換出到磁盤的都是整個程序,這樣勢必會造成大量的磁盤訪問操作,主要是分段的粒度比較大。因為根據程序的局部性原理,在某個時間,它只會訪問到一個小部分數據,也就是說,程序的很多數據都不會用的,於是想到粒度更小的分頁。

2.1.4 分頁

分頁的基本方法是把地址空間分成固定大小的頁,每一頁的大小由硬件決定,或硬件支持多種大小的頁,由操作系統選擇決定頁的大小。

例如,如下圖所示,每個虛擬空間有8個頁,每頁大小為1KB,那么虛擬地址空間就是8KB。假設有6KB的內存,那么物理空間其實真正有效的只是前6KB。

那么,我們把進程的虛擬地址空間按頁分割,把常用的數據和代碼頁裝載到內存中,把不常用的代碼和數據保存在磁盤里,當需要用到的時候再把它從磁盤取出來即可。我們假設有兩個進程process1和process2,它們進程中的部分虛擬頁面被映射到了物理頁面,比如VP0、VP1和VP7映射到PP0、PP2、和PP3;而有部分頁面卻在磁盤中,比如VP2和VP3在磁盤DP0和DP1中;另外還有一個頁面如VP4、VP5和VP6可能尚未被用或訪問到,它們暫時處於未使用的狀態。在這里,我們把虛擬空間的頁稱為虛擬頁(VP),把物理內存中的頁叫做物理頁(PP),把磁盤中的頁叫做磁盤頁(DP)。

 

process1的VP2和VP3不在內存中,但是當訪問這兩頁的時候,硬件會捕獲到這個消息,就是所謂的頁錯誤,然后操作系統接管進程,負責將VP2和VP3從磁盤中讀出來並裝入內存,然后將內存中的這兩頁與VP2和VP3之間建立映射關系,更新頁表。

但是如果訪問process1的VP5和VP6,則會出現段錯誤(由於這兩頁還沒有映射)。

保護也是也映射的目的之一,簡單地說就是每個頁可以設置權限屬性,誰可以修改,誰可以訪問等。

虛擬存儲的實現需要硬件的支持,對於不同的CPU來說是不同的,但是幾乎所有的硬件都采用一個叫做MMU的部件來進行也映射。如圖所示:

 

在頁模式下,CPU發出的是virtual Address,即我們看到的是虛擬地址。經過MMU轉換為physical Address。

 


免責聲明!

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



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