1. 程式人生 > >【作業系統】4.1程式編譯連結

【作業系統】4.1程式編譯連結

知識回顧:

  • 主存:儲存程序執行時的程式和資料
  • 暫存器:速度最快,價格昂貴容量不大,一般以字為單位,只要存放指令一次操作的資料就夠了 。
  • 快取記憶體一種速度比記憶體快的儲存裝置,一般同暫存器一樣整合在CPU中。存放記憶體的部分拷貝,把常用的資料放這裡可以提高速度。將短時間內經常訪問的部分資料從記憶體放到快取記憶體中,減少CPU訪問記憶體的時間,是基於程式區域性性。快取記憶體一般不能被程式直接更改,而由硬體自己處理對記憶體資料的拷貝。•總之:速度快、存放部分記憶體資料、硬體自動處理。
  • 磁碟快取:記憶體的一部分,將頻繁使用的一部分磁碟資料資訊預讀入在磁碟快取,減少磁碟讀寫時間。

1.程式的裝入和連結

  • 多道程式環境下,程式執行必須為之先建立程序。
  • 建立程序的第一件事:將程式和資料裝入記憶體

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

  • 編譯compiler:編譯程式:將使用者原始碼編譯成若干個目標模組。
  • 連結link:連結程式:將形成的一組目標模組,及它們需要的庫函式連結在一起,形成一個完整的裝入模組。
  • 裝入load:由裝入程式將裝入模組裝入記憶體,構造PCB,形成程序,開始執行(使用實體地址)。

3.地址的概念

  • 邏輯地址(相對地址,虛地址)
  • 實體地址(絕對地址,實地址)記憶體中儲存單元的地址。實體地址可直接定址被執行。
  • 地址對映:將使用者程式中的邏輯地址轉換為執行時由機器直接定址的記憶體實體地址的過程。

4.重定位:把目標程式中的指令和資料的邏輯地址變成記憶體中的實體地址的地址變換過程。邏輯地址 不等於實體地址

5.程式裝入中的地址處理

  •   絕對裝入(邏輯地址=實體地址)
  •   靜態重定位裝入:地址對映在程式執行之前進行,重定位後實體地址不再改變。
  •   動態執行時重定位裝入

6.不同的程式連結裝入方式(使用記憶體的時機)

  •   靜態連結:裝入執行前將多個目標模組及所需庫函式連結成一個整體,以後不再拆開。
  •   裝入時連結:裝入記憶體時,邊裝入邊連結的連結方式。
  •   執行時連結:對某些目標模組的連結,在執行中需要該目標模組時,才對它進行連結。