1. 程式人生 > >儲存器管理——概述與程式連結與裝入

儲存器管理——概述與程式連結與裝入

儲存器管理

自己的理解,僅供諸位參考

1 .儲存器型別

在這裡插入圖片描述

1.1 引用暫存器原因

暫存器的速度與CPU速度相同,而CPU的處理速度遠高於主儲存器訪問速度,
通常:CPU會從主儲存器取得資料與指令,指令放入指令暫存器,資料放入資料暫存器

1.2 引用快取記憶體原因

備份主存中常用資料,減少訪問主存次數
通常: 程序的指令和資料在主存中,要訪問時,複製入快取記憶體CPU訪問時,先檢查快取中有沒有,沒有在主存中找
通常:會有指令快取記憶體,防止CPU將會空等指令來,也可能有多級快取

1.3 引入磁碟快取原因

訪問I/O低可執行儲存器的三個數量級,磁碟快取利用主存一部分用於儲存頻繁使用的磁碟資料與資訊

2 程式裝入與連結

2.1一般過程

在這裡插入圖片描述

  • 編譯:.cpp(原始檔)=> .obj(目標檔案) (目標模組)

     注:由編譯程式[Compiler]完成
    
  • 連結:若干.obj與庫以及其他連線在一起

     注:由連結程式[Linker]完成
    
  • 裝入:把裝入模組裝入記憶體

     注:由裝入程式[Loader]完成
    

2.2 連結的方式

在這裡插入圖片描述

①為靜態連結
②為 裝入時動態連結 和執行時動態連結 只是圖在記憶體是裝入連結與執行連結無法體現

程式連結方式 優點 缺點
靜態連結 / 全部載入,不便於修改與更新
裝入時動態連結 便於修改與更新 全部載入
執行時動態連結 需要時載入 /

2.3 程式的裝入

要裝入記憶體都需要變成裝入模組,只是連結的時間不同(一開始,裝入時,執行時),那麼怎麼裝入?

程式裝入方式 特點 用處 需求
絕對裝入 裝入記憶體特定位置 系統小且單道 裝入記憶體時要知道絕對地址
靜態可重定位裝入 裝入記憶體任意位置 單多道 裝入記憶體時指令與資料地址修改
靜態可重定位(動態執行時)裝入 裝入記憶體任意位置且可以移動 單多道 執行時需要地址轉換暫存器

注:動態執行時裝入方式裝入的時候是邏輯地址,執行時轉換實體地址