虛擬記憶體我目前的感覺是和作業系統和計算機組成原理都有一定的關係,虛擬記憶體事實上在硬體的結構中就已經實現了,在處理器中就有專門處理虛擬記憶體的一小部分。在作業系統的視角中,作業系統實際上給每個程序都提供了完全獨立的記憶體空間,類似於專門的乙個區域,這使得每個程序之間都實現了相互獨立。虛擬記憶體會通過某種方式對映到真實的物理記憶體上,不過這屬於核心的操作許可權,對程式設計師實際上是遮蔽的。也就是說,我們實際上以為的記憶體實際上是抽象出來的虛擬記憶體,並非真實的物理記憶體,因為直接操作硬體的安全風險極大。
我們為了實現在多個程序(在原書中,此處是虛擬機器,由於我並沒有介紹虛擬機器的概念,而虛擬機器又屬於程序的範疇,所以我用程序來替換,在此後的同樣問題中不做敘述)之間安全而有效的共用乙個儲存器,引入了虛擬記憶體的概念。
在程序的執行過程中,我們希望程序只能訪問屬於自己的記憶體區域,即將每個程式都編譯到它自己的位址空間。虛擬儲存器會實現程式虛擬位址空間到實體地址的轉換。這種位址轉換的方式會加強每個程式位址空間之間的保護。
保護就是將各個程式隔離開來,防止程式之間有意或無意讀取不屬於自己的記憶體空間,導致異常的發生。虛擬儲存器和cache的工作原理是一樣的,但是一些概念與cache不同。在虛擬儲存器中塊被稱為頁,訪問缺失(不命中)被稱為缺頁。
在虛擬儲存器中,處理器產生虛擬位址,再結合軟硬體轉為乙個實體地址,就可以訪問記憶體中的空間的對應位置。這個過程就被稱為一種對映(位址對映或位址轉換)。
實際上,對映既可以一對一,也可以一對多。我們接下來引入重定位的概念。
重定位用來簡化執行時的程式載入過程。在程式位址訪存之前,重定位將程式需要使用的虛擬記憶體對映到不同的實體地址。
在虛擬記憶體中,位址被劃分為虛頁號和頁偏移。而虛頁號需要轉換為物理頁號。物理頁號構成了實體地址的高位,而頁偏移是不需要改變的,構成實體地址的低位部分。頁偏移的位數決定了頁的大小。需要注意的是,虛擬記憶體可以定址的頁數與物理記憶體可以定址的頁數不一定是相同的。
就像尋找圖書那樣,我們不能在整座圖書館中尋找我們想要閱讀的書籍。同樣,我們需要引入乙個東西來幫助我們更加高效的進行查詢。在虛擬記憶體中,我們使用乙個索引儲存器的表來定位頁,被稱為頁表。它被存放在儲存器中,頁表使用虛擬位址中的頁號來索引,對應找到相應的物理頁號。每個程式的頁表都是不同的,用來將程式的虛擬位址對映到記憶體上(物理記憶體)。在硬體設計中,存在乙個指向頁表首位址的暫存器,稱為頁表暫存器。
當發生缺頁時(有效位為0),就會發生缺頁故障,這時控制權交給作業系統,控制的轉移由異常處理機制完成。與cache的處理機制相同,必須在下一級儲存器層次找到該頁,並將它放到主存中。虛擬記憶體不會馬上告訴我們頁在磁碟中的位置,所以在建立程序的時候會在快閃儲存器或磁碟上為程序中所有的頁建立空間。這一空間被稱為交換區。
同樣也會建立乙個資料結構來記錄每個虛擬頁在磁碟上的具體位置。
替換的時候,我們如果還是要使用lru演算法的話(之前在cache技術中提到),代價會十分的高,因為每次訪問都需要更新資料結構。所以計算機提供了乙個引用位,當一頁被訪問時該位置被設為1。作業系統會定期將引用位清零然後重新記錄。
我們的頁表存放在記憶體中,因此程式每次訪問記憶體至少需要兩次:
第一次先獲得實體地址因此現代處理器都包含乙個特殊的cache用來跟蹤最近使用過的位址變換。這個特殊的位址轉換cache被稱為快表(tlb),tlb就像一些特別方便的小紙條,可以幫助我們快速定位目標的位置。第二次才獲得資料
tlb的每個標記存放虛頁號的一部分,每個資料項中存放了物理頁號。
對於寫請求,如果訪問位是關閉的,那就不能進行訪問。如果程式試圖進行寫操作,則會發生異常。
這篇是匆忙趕出來的~
計算機組成與設計1
第一講 1 計算機的總體層次結構 硬體 指令系統 軟體 系統軟體 作業系統 彙編器 編譯器 應用軟體 2 計算機程式執行過程 高階語言程式首先預處理,然後通過編譯器生成組合語言程式,組合語言程式經過彙編器生成可重定位的目標檔案,可重定位的目標檔案通過鏈結器連線到一起形成可執行的目標檔案。第二講 3 ...
計算機組成與設計2
1機器指令 計算機設計者賦予計算機實現某種基本操作的命令。2指令系統 一台計算機所有及其指令的集合,就像是乙個單詞表一樣。指令集是計算機硬體與計算機軟體的介面,從硬體設計者而言,is向cpu提出了要求 從系統程式設計師角度而言,通過is來使用硬體資源。可見,指令集的好壞決定了計算機的走向。3指令系統...
《數字邏輯設計與計算機組成》一 1 3 計算機組成
邏輯設計要解決的是關於電路描述 綜合 最小化和 的相關問題,而計算機組成則研究電路部件及其物理關係,這些部件構成處理核心 cpu 處理器 儲存器 i o裝置控制器和介面,這些模組相互連線就構成計算機。例如,圖1 1中的暫存器檔案 加法器 乘法器和選擇器組成乙個資料通路。控制單元和資料通路 通過一系列...