程式的裝入和鏈結

2021-07-16 07:05:26 字數 857 閱讀 1508

編譯—鏈結---裝入

編譯:

預處理—編譯、優化—彙編

靜態鏈結—動態鏈結

1、 靜態鏈結

2、 裝入時動態鏈結

3、 執行時動態鏈結

裝入:

靜態裝入—動態裝入

1、 絕對裝入方式

這種方式在編譯的時候就會產生絕對位址(程式中的邏輯位址就是實際的實體地址),在裝入的時候不需要對位址和資料進行修改。

缺點:只能將目標模組裝入記憶體中指定的位置,不夠靈活,只適合單道程式環境,而且當需要修改位址的時候,可能會改變程式中的所有的位址,還需要程式設計師對實體地址很熟悉。

2、 可重定位裝入方式

適合於多道程式處理環境,目標模組中的**的邏輯位址都是從0開始的相對位址,在裝入記憶體中是會進行位址轉換,轉換成真正的可用的實體地址。在修改位址的時候需要對資料位址和指令位址都修改,從而獲得絕對位址。把裝入時對目標模組中的指令和資料進行修改的過程稱為重定位,又因為位址變換通常是在裝入時一次完成,以後不再改變,所以稱為靜態重定位。

優點:相對靈活,能夠適應多道程式環境,可以將程式裝入記憶體中的任意位置。

3、 動態執行時裝入方式

動態執行時裝入方式,在把裝入模組裝入記憶體後,並不立即把裝入模組的相對位址轉化成絕對位址,而是把這種轉化延遲到程式執行真正需要用這個模組的時候,因此裝入記憶體中的模組的位址還是相對位址,為了使位址轉換不影響指令的執行速度,這種方式需要一種重定位暫存器的支援。

缺點:需要重定位暫存器的支援,轉換複雜。

總的來說,這三種裝入方式各有利弊,絕對裝入方式的指令執行速度是最快的,但是也是最不靈活的,只能適於單道程式環境,而可重定位裝入和動態執行時裝入都是可以執行在多道程式環境中的,但是靈活性不同,複雜度也不同。

程式的裝入和鏈結

注 這是本人學習湯小丹等編寫的計算機作業系統 西安電子科技大學出版社 的學習筆記,因此許多引用 於此書,在正文中就不註明了!程式在執行前需要經過以下步驟 編譯程式對源程式進行編譯生成目標程式.obj 鏈結程式將目標程式和需要的庫檔案鏈結在一起形成可執行程式.exe,即乙個完整的裝入模組 裝入程式將裝...

程式的鏈結與裝入(動 靜態重定位)

多道程式環境下,程式是併發執行的,所以要使程式執行,必須先為之建立程序,而建立程序的第一件事就是將程式和資料裝入記憶體 源程式經過編譯後,得到一組目標模組,再利用 鏈結程式 將這組目標模組鏈結起來,形成乙個完整的裝入模組 即可執行檔案 相對位址進行修改 變化以後還是相對位址 位址都變為相對最上層模組...

程式的鏈結與裝入(動 靜態重定位)

多道程式環境下,程式是併發執行的,所以要使程式執行,必須先為之建立程序,而建立程序的第一件事就是將程式和資料裝入記憶體 即 源程式經過編譯後,得到一組目標模組,再利用 鏈結程式 將這組目標模組鏈結起來,形成乙個完整的裝入模組 即可執行檔案 相對位址進行修改 變化以後還是相對位址 位址都變為相對最上層...