複製鏈接
請複製以下鏈接發送給好友

裝入程序

鎖定
裝入程序是指可處理所有的與指定的基地址或起始地址有關的可重定位的地址的程序。
中文名
裝入程序
基本介紹
編譯器彙編程序
裝入程序域
期望在每個進程的同一虛擬地址
數據區域
包含共享庫的數據

裝入程序基本介紹

編譯器彙編程序或連接程序生成的代碼經常還不完全適用或不能執行,但是它們的主要存儲器訪問卻可以在存儲器的任何位置中且與一個不確定的起始位置相關。這樣的代碼被稱為是可重定位的(relocatable),而裝入程序可處理所有的與指定的基地址或起始地址有關的可重定位的地址。裝入程序使得可執行代碼更加靈活,但是裝入處理通常是在後台(作為操作環境的一部分)或與連接相聯合時才發生,裝入程序極少會是實際的獨立程序。

裝入程序裝入程序域

在一些編程環境中,人們期望在每個進程的同一虛擬地址裝入共享庫。但是由於AIX系統裝入程序所維護的共享庫的動態特性,這一情況無法得到保證。裝入程序域提供了在一組進程的同一虛擬地址中裝入共享庫的方法。

裝入程序共享庫文本區域

系統裝入程序將共享庫裝入到多個全局共享庫區域內。一個區域稱為共享庫文本區域,它包含裝入的共享庫的可執行指令。共享庫文本區域映射到每個進程的同一虛擬地址。

裝入程序共享庫數據區域

另一個區域是共享庫數據區域。這個區域包含共享庫的數據。因為共享庫數據是可讀/寫的,所以每個進程都有自己的專用區域,一個全局共享庫區域的副本。這個專用區域映射到每個進程中的同一虛擬地址
因為全局共享庫區域已映射到每個進程的同一虛擬地址,所以共享庫在多數情況下裝入到同一虛擬地址中。當系統中裝入多個版本的共享庫時不符合上述情況。無論何時當使用中的共享庫被更改或者任何依賴的共享庫被更改時會發生這種現象。當發生這種現象後,裝入程序必須創建已更改的共享庫的新版本和所有其他依賴於已更改的共享庫的共享庫的新版本。注意所有共享庫最終都依賴於內核名稱空間內核名稱空間包含所有由內核定義的系統調用並且可以在內核擴展動態裝入或者卸載的任何時候進行更改。當系統裝入程序創建共享庫的新版本時,此新版本必須處於全局共享庫段內的另一位置。因此,使用新版本的進程與使用先前版本的共享庫的進程相比具有在不同虛擬地址裝入共享庫的區別。
裝入程序域是系統中裝入的所有共享庫的子集。系統中裝入的所有共享庫的集合稱為全局裝入程序域。此全局裝入程序域能夠被細分為更小的用户定義的裝入程序域。用户定義的裝入程序域包含任何特定共享庫的一個版本。多個進程可指定一個裝入程序域。如果一個進程指定一個裝入程序域,那麼該進程使用包含在該裝入程序域內的共享庫。如果多個進程指定同一裝入程序域,那麼它們使用同一組共享庫。因為一個裝入程序域包含任何特定共享庫的一個版本,所以指定同一裝入程序域的所有進程使用共享庫的同一版本並且將它們的共享庫裝入同一虛擬地址