第四章 儲存器管理 程式的裝入和鏈結

2021-08-30 11:12:54 字數 1460 閱讀 4303

1)編譯compiler:編譯程式:將使用者源**編譯成若干個目標模組。

1)邏輯位址(相對位址,虛位址)

使用者的程式經過彙編或編譯後形成目標**,目標**中的指令位址是相對位址。

一般首位址為0,其餘指令中的位址都相對於首位址來編址。 不能用邏輯位址在記憶體中讀取資訊

2)實體地址(絕對位址,實位址)

記憶體中儲存單元的位址。 實體地址可直接定址被執行。

3)

將使用者程式中的邏輯位址轉換為執行時由機器直接定址的記憶體實體地址的過程。

1)絕對裝入方式

編譯程式生成的「目標**」就是」裝入模組」 ,邏輯位址直接從某個位址r處增長,裝入模組直接裝入記憶體位址r處。

邏輯位址  =   實體地址

缺點:過於依賴硬體結構, 只適用早期針對硬體直接程式設計、單道環境下。

2)靜態可重定位裝入

位址對映在程式執行之前進行,重定位後實體地址不再改變。

優點:不需硬體支援,可以裝入有限的多道程式

缺點:軟體裝入一次完成,乙個程式通常需要占用連續的記憶體空間,程式裝入記憶體後不能移動。也不易實現共享。

3)動態執行時(重定位)裝入方式

實際執行中往往會需要程式在記憶體中的各位置移動,即經常需要重定位到不同的實體地址上。這種執行時移動程式要求位址變換要快速,實現時一般依靠硬體位址變換機構——乙個重定位暫存器。 程式裝入記憶體時,可多次重定位到不同位置。且可以不立即把裝入模組中的相對位址轉換為絕對位址,而是把這種位址轉換推遲到程式真正要執行時才進行。

裝入執行前,生成可執行檔案時進行的。 將多個目標模組及所需庫函式鏈結成乙個整體,以後不再拆開。

由乙個目標模組開始裝入,若又涉及外部模組呼叫事件,裝入程式再找出相應的外部目標模組,並將它裝入記憶體,還要修改目標模組中的相對位址。

比靜態鏈結好在**?

(1) 靜態鏈結好的程式,修改部分模組後,需重新鏈結成可裝入程式。動態方式則便於修改和更新。

(2) 便於實現共享。靜態的n個程式都需要乙個模組時,需要進行n次拷貝。

裝入時動態鏈結的問題:許多情況下,事先不知道某應用程式本次執行需要哪些模組,只能全部裝入,裝入時全部鏈結在一起,效率低。

優點:程式執行裝入的內容少了,加快了裝入過程,而且節省大量的記憶體空間。

第四章儲存器管理

問題 基本分頁機制下,一次指令需兩次記憶體訪問,處理機速度降低1 2,分頁空間效率的提高以如此的速度為代價,得不償失。改進 減少第1步訪問記憶體的時間。增設乙個具有 並行查詢 能力的高速緩衝暫存器,稱為 快表 也稱 聯想暫存器 associative memory ibm系統稱為tlb transl...

第四章 儲存器管理

主存 儲存程序執行時的程式及資料 暫存器 速度最快,昂貴且容量不大,一般以字為單位 快取記憶體 1 速度比記憶體快,整合在cpu 2 存放記憶體的部份拷貝,放置常用資料以提高速度 3 不能被程式直接更改,由硬體自己處理對記憶體資料的拷貝 磁碟快取 記憶體的一部分,將頻繁使用的磁碟資料預讀在磁碟快取,...

第四章儲存器管理 1

1 程式的裝入和鏈結 使用者源程式to記憶體中執行的程式 1 位址的概念 邏輯位址 相對位址,虛位址 實體地址 絕對位址,實位址 2 程式裝入中的位址處理 絕對裝入 邏輯位址 實體地址 靜態重定位裝入 動態執行時重定位裝入 3 不同的程式鏈結裝入方式 使用記憶體的時機 靜態鏈結 裝入時鏈結 執行時鏈...