1. 程式人生 > >作業系統 第四章 1 程式的裝入和連結

作業系統 第四章 1 程式的裝入和連結

1、建立程序的第一件事:將程式和資料裝入記憶體

2、程式進記憶體的一般過程:

  1.  編譯程式:( 高階語言編譯為機器語言)形成目標模組。
  2. 連結程式:將形成的一組目標模組,及它們需要的庫函式連結在一起,形成一個完整的裝入模組。
  3. 裝入load:由裝入程式將裝入模組裝入記憶體,構造PCB,形成程序,開始執行(使用實體地址)。

3、裝入:

裝入靜態可重定位方式

地址對映在程式執行之前進行,重定位後實體地址不再改變。 可由專門設計的重定位裝配程式完成(軟):裝入時根據所定位的記憶體地址去修改每個邏輯地址,新增相應偏移量,重定位為實體地址。

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

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

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

實現時一般依靠硬體地址變換機構——一個重定位暫存器。

程式裝入記憶體時,可多次重定位到不同位置。且可以不立即把裝入模組中的相對地址轉換為絕對地址,而是把這種地址轉換推遲到程式真正要執行時才進行。

更適用於部分裝入。


4、連結:

靜態連結

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

② 裝入時動態連結

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

優點:

  1. 便於修改和更新
  2. 便於實現共享。

③ 執行時動態連結:

有的模組不經常使用就暫時不裝入,執行時用到了再裝入。(如程式總不出錯,就不會用到錯誤處理模組。)即執行時動態連結:執行時,將對某些模組的連結推遲到執行時才連結裝入。

優點:

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

5、

程式不是要一次全裝進記憶體,採用   執行時動態連線裝入  方式連結裝入方式。

在動態重定位方式下,CPU要執行實體地址a下的指令,指令中要訪問的資料的地址是 相對地址,只有通過地址對映才能知道資料存放在記憶體的具體位置。