虛擬位址和實體地址,共享記憶體

2022-08-10 02:51:15 字數 965 閱讀 8636

32位作業系統,定址空間為2^32次方個byte,注意儲存單位是位元組byte

即物理記憶體為4gb

記憶體分布圖:

邏輯位址(段表,段偏移量)-> 線性位址(頁表)->實體地址

1.   每個程序的4g記憶體空間只是虛擬記憶體空間,每次訪問記憶體空間的某個位址,都需要把位址翻譯為實際物理記憶體位址

2.所有程序共享同一物理記憶體,每個程序只把自己目前需要的虛擬記憶體空間對映並儲存到物理記憶體上

3.   程序要知道哪些記憶體位址上的資料在物理記憶體上,哪些不在,還有在物理記憶體上的**,需要用頁表來記錄

4.   頁表的每乙個表項分兩部分,第一部分記錄此頁是否在物理記憶體上,第二部分記錄物理記憶體頁的位址(如果在的話)

5.   當程序訪問某個虛擬位址,去看頁表,如果發現對應的資料不在物理記憶體中,則缺頁異常

6.   缺頁異常的處理過程,就是把程序需要的資料從磁碟上拷貝到物理記憶體中,如果記憶體已經滿了,沒有空地方了,那就找乙個頁覆蓋,當然如果被覆蓋的頁曾經被修改過,需要將此頁寫回磁碟

(lru置換頁面演算法,將最近最少使用的頁面從記憶體回寫到磁碟)

共享記憶體

在核心態空間開闢記憶體空間,返回該記憶體區域的唯一標識 

對映開闢的kernel空間到使用者態記憶體空間(虛擬記憶體)

3)操作空間:操作使用者態的記憶體空間

4)關閉對映

5)刪除核心態記憶體空間

實體地址和邏輯位址(虛擬位址)

1.實體地址 實體地址是載入到記憶體位址暫存器中的位址,是指記憶體中各物理儲存單元的位址從統一的基位址進行的順序編址。又稱絕對位址,它是資料在記憶體單元的真正位址。在前端匯流排上傳輸的記憶體位址都是物理記憶體位址,編號從0開始一直到可用物理記憶體的最高端。這些數字被北橋 nortbridge chi...

虛擬位址與實體地址

乙個程式編譯連線後形成的位址空間是乙個虛擬位址空間,但是程式最終還是要執行在物理記憶體中。因此,應用程式所給出的任何虛位址最終必須被轉化為實體地址,所以,虛擬位址空間必須被對映到物理記憶體空間中,這個對映關係需要通過硬體體系結構所規定的資料結構來建立。這就是我們所說的段描述符表和頁表,linux主要...

邏輯位址 實體地址 虛擬位址

用於記憶體晶元級的單元定址,與處理器和cpu連線的位址匯流排相對應。雖然可以直接把實體地址理解成插在機器上那根記憶體本身,把記憶體看成乙個從0位元組一直到最大空量逐字節的編號的大陣列,然後把這個陣列叫做實體地址,但是事實上,這只是乙個硬體提供給軟體的抽像,記憶體的定址方式並不是這樣。所以,說它是 與...