裝入程式

裝入程式

裝入程式是指可處理所有的與指定的基地址或起始地址有關的可重定位的地址。

基本介紹

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

裝入程式域

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

共享庫文本區域

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

共享庫數據區域

另一個區域是共享庫數據區域。這個區域包含共享庫的數據。因為共享庫數據是可讀/寫的,所以每個進程都有自己的專用區域,一個全局共享庫區域的副本。這個專用區域映射到每個進程中的同一虛擬地址。

因為全局共享庫區域已映射到每個進程的同一虛擬地址,所以共享庫在多數情況下裝入到同一虛擬地址中。當系統中裝入多個版本的共享庫時不符合上述情況。無論何時當使用中的共享庫被更改或者任何依賴的共享庫被更改時會發生這種現象。當發生這種現象後,裝入程式必須創建已更改的共享庫的新版本和所有其他依賴於已更改的共享庫的共享庫的新版本。注意所有共享庫最終都依賴於核心名稱空間。核心名稱空間包含所有由核心定義的系統調用並且可以在核心擴展動態裝入或者卸載的任何時候進行更改。當系統裝入程式創建共享庫的新版本時,此新版本必須處於全局共享庫段內的另一位置。因此,使用新版本的進程與使用先前版本的共享庫的進程相比具有在不同虛擬地址裝入共享庫的區別。

裝入程式域是系統中裝入的所有共享庫的子集。系統中裝入的所有共享庫的集合稱為全局裝入程式域。此全局裝入程式域能夠被細分為更小的用戶定義的裝入程式域。用戶定義的裝入程式域包含任何特定共享庫的一個版本。多個進程可指定一個裝入程式域。如果一個進程指定一個裝入程式域,那么該進程使用包含在該裝入程式域內的共享庫。如果多個進程指定同一裝入程式域,那么它們使用同一組共享庫。因為一個裝入程式域包含任何特定共享庫的一個版本,所以指定同一裝入程式域的所有進程使用共享庫的同一版本並且將它們的共享庫裝入同一虛擬地址。

相關詞條

相關搜尋

熱門詞條

聯絡我們