程序的裝入
程式主要處理階段
- 編輯、編譯、連結、裝入、執行
程式的裝入
- 程式裝入是將目標程式碼從外存載入到主記憶體,以便由CPU執行的過程。不同的裝入方式決定了程式在主記憶體中的佈局以及位址轉換的實作方式。
裝入方式
絕對裝入方式:編譯程式產生絕對位址目標碼。
可重定位裝入方式:目標模組起始位址為0,其餘為相對位址。
動態運行時裝入方式:進程的記憶體映像在不同時候可以處於不同的位置。
絕對裝入方式
- 編譯時確定:如果在編譯時知道程式駐留在主記憶體的特定位置,則編譯程式將產生實體位址的目標程式碼。
- 裝入過程:絕對裝入程式依照裝入模組中的位址,將程式和資料裝入主記憶體。
- 位址一致:模組裝入後,程式中的邏輯位址與實際主記憶體的位址完全相同,所以不需要對位址進行修改。
- 適用場景:只適用於單道程式環境,目標模組只能裝入至主記憶體事先指定的固定位置。
靜態重定位裝入方式
- 位址轉換:在裝入作業時,把作業中的指令位址和資料位址一次全部轉換成實體位址。
- 執行過程:作業執行過程中無需再進行地址轉換。
- 靜態重定位:這種位址轉換方式稱為“靜態重定位”,作業裝入的方式稱為“靜態重定位裝入方式”。
動態重定位裝入方式
- 裝入流程:在裝入作業時,直接把作業裝入到指派的主記憶體區域。
- 位址轉換:作業執行過程中,由硬體位址轉換機制自動將指令中的邏輯位址轉換成對應的實體位址。
- 動態完成:這種位址轉換是在作業執行過程中動態完成的,稱為「動態重定位」。
- 動態重定位裝入方式:這種作業裝入的方式稱為「動態重定位裝入方式」。