地址空間及地址安全檢測

一、物理地址空間與邏輯地址空間的區別

1、程序經過編譯後,每個目標模塊都是從0號單元開始編址,稱爲該目標模塊的相對地址(或邏輯地址)。

2、當鏈接程序將各個模塊鏈接成一個完整的可執行目標程序時,鏈接程序順序依次按各個模塊的相對地址構成統一的從0號單元開始編址的邏輯地址空間

3、用戶程序和程序員只需知道邏輯地址,而內存管理的具體機制則是完全透明的,它們只有系統編程人員纔會涉及。

4、不同進程可以有相同的邏輯地址,因爲這些相同的邏輯地址可以映射到主存的不同位置。

5、物理地址空間是指內存中物理單元的集合,它是地址轉換的最終地址,進程在運行時執行指令訪問數據都要通過物理地址從主存中存取。當裝入程序(Loader)將可執行代碼裝入內存時,必須通過地址轉換將邏輯地址轉換成物理地址,這個過程稱爲地址重定位

在這裏插入圖片描述

二、地址安全檢測

1)內存分配前,需要保護操作系統不受用戶進程的影響,同時保護用戶進程不受其他用戶進程的影響。

2)通過採用重定位寄存器界地址寄存器來實現這種保護。重定位寄存器含最小的物理地址值,界地址寄存器含邏輯地址值。每個邏輯地址值必須小於界地址寄存器,

3)內存管理機構動態的將邏輯地址與界地址寄存器進行比較,如果未發生地址越界,則加上重定位寄存器的值後映射成物理地址,再送交內存單元。

4)當CPU調度程序選擇進程執行時,派遣程序會初始化重定位寄存器和界地址寄存器。每一個邏輯地址都需要與這兩個寄存器進行覈對,以保證操作系統和其他用戶進程(程序)及數據不被該進程的運行所影響。

在這裏插入圖片描述如果地址越界,會出現內存訪問異常!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章