四.(1)程序編譯連接

1、程序的裝入和鏈接

程序進(jìn)內(nèi)存的一般過程:

1.編譯compiler:編譯程序:將用戶源代碼編譯成若干個(gè)目標(biāo)模塊。

2.鏈接link:鏈接程序:將形成的一組目標(biāo)模塊,及它們需要的庫函數(shù)鏈接在一起,形成一個(gè)完整的裝入模塊。

3.裝入load:由裝入程序?qū)⒀b入模塊裝入內(nèi)存,構(gòu)造PCB,形成進(jìn)程,開始運(yùn)行(使用物理地址)。


1)地址的概念

2)程序裝入中的地址處理

? 絕對(duì)裝入(邏輯地址=物理地址)

? 靜態(tài)重定位裝入

? 動(dòng)態(tài)運(yùn)行時(shí)重定位裝入

3)不同的程序鏈接裝入方式(使用內(nèi)存的時(shí)機(jī))

? 靜態(tài)鏈接

? 裝入時(shí)鏈接

? 運(yùn)行時(shí)鏈接

2)程序裝入中的地址處理

邏輯地址? ======?? 物理地址:

①絕對(duì)裝入方式(absolute loading)

邏輯地址 ->重定位->物理地址:

②靜態(tài)可重定位裝入方式(relocatable loading mode)

③動(dòng)態(tài)運(yùn)行時(shí)(重定位)裝入方式(dynamic run-time loading)


① 絕對(duì)裝入方式

編譯程序生成的“目標(biāo)代碼”就是”裝入模塊”,邏輯地址直接從某個(gè)地址R處增長(zhǎng),裝入模塊直接裝入內(nèi)存地址R處。

物理地址由誰生成?

一般由編譯或匯編程序給出;或由程序員賦予(要求程序員熟悉內(nèi)存使用情況)

優(yōu)點(diǎn):裝入過程簡(jiǎn)單。不需任何地址變換,程序中的邏輯地址與實(shí)際內(nèi)存物理地址完全相同。

缺點(diǎn):過于依賴硬件結(jié)構(gòu),只適用早期針對(duì)硬件直接編程、單道環(huán)境下。

現(xiàn)在程序裝入一般都要從邏輯地址映射到物理地址:

重定位:把目標(biāo)程序中的指令和數(shù)據(jù)的邏輯地址變成內(nèi)存中的物理地址的地址變換過程。


靜態(tài)可重定位裝入方式

地址映射在程序執(zhí)行之前進(jìn)行,重定位后物理地址不再改變。

可由專門設(shè)計(jì)的重定位裝配程序完成(軟):裝入時(shí)根據(jù)所定位的內(nèi)存地址去修改每個(gè)邏輯地址,添加相應(yīng)偏移量,重定位為物理地址。

優(yōu)點(diǎn):不需硬件支持,可以裝入有限的多道程序

缺點(diǎn):軟件裝入一次完成,一個(gè)程序通常需要占用連續(xù)的內(nèi)存空間,程序裝入內(nèi)存后不能移動(dòng)。也不易實(shí)現(xiàn)共享。


動(dòng)態(tài)運(yùn)行時(shí)(重定位)裝入方式(dynamic run-time loading)

實(shí)際運(yùn)行中往往會(huì)需要程序在內(nèi)存中的各位置移動(dòng),即經(jīng)常需要重定位到不同的物理地址上。這種運(yùn)行時(shí)移動(dòng)程序要求地址變換要快速,實(shí)現(xiàn)時(shí)一般依靠硬件地址變換機(jī)構(gòu)——一個(gè)重定位寄存器。

程序裝入內(nèi)存時(shí),可多次重定位到不同位置。且可以不立即把裝入模塊中的相對(duì)地址轉(zhuǎn)換為絕對(duì)地址,而是把這種地址轉(zhuǎn)換推遲到程序真正要執(zhí)行時(shí)才進(jìn)行。

更適用于部分裝入

3)不同的程序鏈接方式

裝入是使用內(nèi)存的開始,但鏈接的不同會(huì)使內(nèi)存的使用有差別:

根據(jù)鏈接時(shí)間的不同,分成三種:

①靜態(tài)鏈接:裝入運(yùn)行前將多個(gè)目標(biāo)模塊及所需庫函數(shù)鏈接成一個(gè)整體,以后不再拆開。

②裝入時(shí)動(dòng)態(tài)鏈接:裝入內(nèi)存時(shí),邊裝入邊鏈接的鏈接方式。

運(yùn)行時(shí)動(dòng)態(tài)鏈接:對(duì)某些目標(biāo)模塊的鏈接,在執(zhí)行中需要該目標(biāo)模塊時(shí),才對(duì)它進(jìn)行鏈接

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容