操做系統--地址空間、地址安全檢測、重定位寄存器

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

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

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

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

四、不一樣進程能夠有相同的邏輯地址,由於這些相同的邏輯地址能夠映射到主存的不一樣位置。操作系統

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

在這裏插入圖片描述

2、地址安全檢測

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

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

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

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

在這裏插入圖片描述若是地址越界,會出現內存訪問異常!
重定位寄存器就是段寄存器或頁寄存器,也叫基址寄存器
段寄存器是存在於段式存儲管理,段寄存器存的是段基址
頁寄存器是存在於頁式存儲管理,頁寄存器存的是起始頁號編譯

相關文章
相關標籤/搜索