天天看點

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

知識回顧:

【作業系統】4.1程式編譯連結
  • 主存:儲存程序運作時的程式和資料
  • 寄存器:速度最快,價格昂貴容量不大,一般以字為機關,隻要存放指令一次操作的資料就夠了 。
  • 高速緩存:一種速度比記憶體快的儲存設備,一般同寄存器一樣內建在CPU中。存放記憶體的部分拷貝,把常用的資料放這裡可以提高速度。将短時間内經常通路的部分資料從記憶體放到高速緩存中,減少CPU通路記憶體的時間,是基于程式局部性。高速緩存一般不能被程式直接更改,而由硬體自己處理對記憶體資料的拷貝。•總之:速度快、存放部分記憶體資料、硬體自動處理。
  • 磁盤緩存:記憶體的一部分,将頻繁使用的一部分磁盤資料資訊預讀入在磁盤緩存,減少磁盤讀寫時間。

1.程式的裝入和連結

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

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

  • 編譯compiler:編譯程式:将使用者源代碼編譯成若幹個目标子產品。
  • 連結link:連結程式:将形成的一組目标子產品,及它們需要的庫函數連結在一起,形成一個完整的裝入子產品。
  • 裝入load:由裝入程式将裝入子產品裝入記憶體,構造PCB,形成程序,開始運作(使用實體位址)。
【作業系統】4.1程式編譯連結

3.位址的概念

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

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

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

  •   絕對裝入(邏輯位址=實體位址)
  • 【作業系統】4.1程式編譯連結
  •   靜态重定位裝入:位址映射在程式執行之前進行,重定位後實體位址不再改變。
  • 【作業系統】4.1程式編譯連結
  •   動态運作時重定位裝入
  • 【作業系統】4.1程式編譯連結

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

  •   靜态連結:裝入運作前将多個目标子產品及所需庫函數連結成一個整體,以後不再拆開。
  • 【作業系統】4.1程式編譯連結
    【作業系統】4.1程式編譯連結
  •   裝入時連結:裝入記憶體時,邊裝入邊連結的連結方式。
  • 【作業系統】4.1程式編譯連結
  •   運作時連結:對某些目标子產品的連結,在執行中需要該目标子產品時,才對它進行連結。
  • 【作業系統】4.1程式編譯連結

繼續閱讀