存儲管理 - 地址空間與重定位

(一)用戶程序的地址空間

內存也稱主存,是指 CPU 能直接存取指令和數據的存儲器,是現代計算機系統進行操作的中心。

外存也稱輔存,是指一些外部的存儲設備,例如硬盤、軟盤和磁帶等存儲器。用戶的程序和數據,通過 I/O 系統接口,從外部設備中讀到內存中才能運行。

圖 內存在計算機系統中的地位

典型存儲器層次結構

按照速度、容量和成本劃分,存儲器系統構成一個層次結構,如下圖所示。

圖 4-2 典型的存儲器層次結構

請思考:我們平時常用的便攜存儲器,如光盤、U 盤、活動硬盤等,它們屬於內存還是外存,存取速度處於哪個層次呢?

用戶程序的地址空間

想一想: 用戶源程序進入系統到在機器上運行要經歷如下 5 個步驟,請爲他們排序吧。

vMbzJp

(二)重定位的概念

在這一部分,我們要進一步學習 5 個存儲管理中非常重要的概念。

邏輯地址:用戶程序的目標模塊都以 0 爲基地址順序編址的,這種地址稱爲邏輯地址,也稱爲相對地址。

物理地址:內存中各物理存儲單元的地址是從統一的基地址開始順序編址的,這種地址稱爲物理地址,也稱爲絕對地址。

邏輯地址空間:由程序中邏輯地址組成的地址範圍叫做邏輯地址空間,或簡稱爲地址空間。

物理地址空間:由內存中一系列存儲單元所限定的地址範圍稱作物理地址空間,或簡稱爲物理空間,內存空間。

重定位:程序和數據裝入內存時,需對目標程序中的地址進行修改。這種把邏輯地址轉變爲內存物理地址的過程稱作重定位。

圖 重定位示意圖

對程序進行重定位的技術按重定位的時機可分爲靜態重定位和動態重定位兩種。

(1)靜態重定位

靜態重定位是在目標程序裝入內存時,由裝入程序對目標程序中的指令和數據的地址進行修改,即把程序的邏輯地址都改成實際的內存地址。靜態重定位的時機是在程序裝入時一次完成,在程序運行期間不再進行重定位。

靜態重定位

(2)動態重定位

動態重定位是在程序執行期間,每次訪問內存之前進行重定位。動態重定位靠硬件地址轉換機構實現。

動態重定位

(三)對換技術

對換技術也稱作交換技術,它的實現方式就類似於日常生活中幾個單位租用一個會議廳那樣,甲單位租用時間到了,就退出會議廳,由乙單位使用;乙單位到時後,也退出去,由丙單位使用,等等。如甲單位還需使用,就再租用,由管理者安排佔用時間。

在多道程序環境中可以採用對換技術。此時,內存中保留多個進程。當內存空間不足以容納要求進入內存的進程時,系統就把內存中暫時不能運行的進程(包括程序和數據)換出到外存上,騰出內存空間,把具備運行條件的進程從外存換到內存中。在 UNIX/Linux 系統中對內存的管理就利用了這種多道程序的對換技術,如圖 4-6 所示。

對換兩個進程

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Q9sUNGFGrswuRYadfL2aiw