操作系統 - 地址重定位



一、主存的無力組織和邏輯組織

1. 絕對地址

計算機中,存儲器是按字組織,每個字由若干”位“組成(不同計算機子長不同),每個字分配一個地址

目前以多字節爲單位進行編址

系統對存儲器中的單元進行統一編號,這些編號就是絕對地址

尋址容量與地址線長度有關,n 條地址線可尋址空間爲:2n

絕對地址是內存的真實地址——物理地址

存儲空間(物理地址空間):絕對地址集合

2. 虛擬地址(相對地址)

虛擬地址:相對於某個基準量(通常是 0)編址時所使用的地址,用戶程序編寫和編譯過程中使用相對地址

名空間:程序員所寫符號名組成名空間

地址空間:一個目標程序所限定的地址集合

名空間 ==> 地址空間 ==> 存儲空間

二、地址轉換

程序執行時,必須將地址空間變爲絕對地址才能訪問系統分配的內存

地址重定位:操作系統把用戶程序指令中的相對地址變換成爲所在存儲中的絕對地址的過程

地址重定位實現了:從邏輯地址到物理地址的轉換

按照重定位時機分類:靜態重定位、動態重定位

1. 地址的靜態重定位

定義:在程序運行之前,爲用戶程序實行了地址重定位工作

一般由操作系統中的重定位裝入程序完成

重定位裝入程序的輸入:用戶把自己的作業鏈接裝配成一個相對於 0 編址的目標程序

過程:

重定位裝入程序根據當前內存的分配情況,按照分配區域的起始地址逐一調整目標程序指令中的地址部分。目標程序在經過重定位裝入程序加工之後,不僅進入到分配給自己的絕對地址空間中,而且程序指令中的地址部分全部進行了修正,反映出了自己正確的存儲位置,保證了程序的正確運行

特點:

在裝入前實現調整

地址要有標識

每次裝入都要進行定位

裝入後地址不再改變(靜態)

2. 地址的動態重定位

定義:在程序執行尋址時進行重定位,訪問地址時,通過地址變換機構改變爲內存地址

用戶程序原封不動的裝入內存,運行時再完成地址的定位工作

動態重定位需要硬件的支持,要求系統中配備定位寄存器加法器

特點:

程序可裝入任意內存區域(不要求佔用連續的內存區)

只裝入部分程序代碼即可運行

改變系統時不需要改變程序(程序佔用的內存空間動態可變,只需要改變定位寄存器中的值即可)

程序可方便共享

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