儲存器管理——概述與程式連結與裝入
阿新 • • 發佈:2018-12-08
儲存器管理
自己的理解,僅供諸位參考
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 程式的裝入
要裝入記憶體都需要變成裝入模組,只是連結的時間不同(一開始,裝入時,執行時),那麼怎麼裝入?
程式裝入方式 | 特點 | 用處 | 需求 |
---|---|---|---|
絕對裝入 | 裝入記憶體特定位置 | 系統小且單道 | 裝入記憶體時要知道絕對地址 |
靜態可重定位裝入 | 裝入記憶體任意位置 | 單多道 | 裝入記憶體時指令與資料地址修改 |
靜態可重定位(動態執行時)裝入 | 裝入記憶體任意位置且可以移動 | 單多道 | 執行時需要地址轉換暫存器 |
注:動態執行時裝入方式裝入的時候是邏輯地址,執行時轉換實體地址