之前由於「中職組磐雲杯網路空間安全「的賽項和一系列亂七八糟的專案和單子,沒有更新部落格,也很少去學習。
暑假給自己放了兩個月的假,現在打算好好學習,也準備即將到來的九月份和十月份的考試。
今天覆習一下作業系統的記憶體管理。
關於記憶體
記憶體是用於存放資料的硬體,程式執行前需要先放到記憶體中才可以被cpu處理。
我很少寫一些關於記憶體的話題,曾經也寫過一篇:
不過這次是站在作業系統的角度上來考慮這個問題。
記憶體由儲存單元組成。
如果計算機按照位元組編址,則每個儲存單元的大小為1位元組,即1b,8個二進位制位
如果計算機按照字編址,則每個儲存單元大小為1個字,大小為16個二進位制位。
程序是靠指令來執行的。指令是二進位制**組成的。
從寫程式到程式執行一共分為3步,首先是編譯,然後是鏈結,最後是裝入。
關於鏈結
1、靜態鏈結
2、裝入時動態鏈結
3、執行時動態鏈結
靜態鏈結是指在程式鏈結時就將程式的各個目標模組和他們需要的庫函式連線成乙個完整的可執行檔案
裝入時動態鏈結是指將各個模組裝入記憶體時,一邊裝入一邊鏈結。
執行時動態鏈結時指在程式執行時,在需要目標模組時才對他進行鏈結。
關於裝入
1、絕對裝入
直接把絕對位址寫入程式(只適用於單道程式設計)
2、靜態重定位
裝入時對位址進行重定位,裝入時把邏輯位址轉換成絕對位址。根據記憶體的當前狀態進行重定位。將裝入模組匯入記憶體的適當位置。
3、動態重定位
動態執行時裝入。把位址轉換推遲到程式真正需要執行時才進行。使用重定位暫存器來存放裝入模組時的存放的初始未知。需要乙個重定位暫存器的支援。
記憶體管理和相關的概念
1、作業系統負責記憶體空間的分配和**
2、程式設計師只用關注邏輯位址。而邏輯位址到實體地址由作業系統負責進行轉換。
3、作業系統需要提供某種技術從邏輯上對記憶體空間進行擴充
4、作業系統需要提供記憶體保護功能。讓程序在執行過程中各自執行,互不干擾。
可以設定上下限暫存器,利用重定位暫存器和界位址暫存器進行判斷越界問題。
記憶體覆蓋和交換問題
記憶體空間擴充技術:
1、覆蓋技術
2、交換技術
作業系統概念上的作業
1 os作為使用者與計算機硬體系統之間的介面 2 os作為計算機系統資源的管理者 3 os實現了對計算機資源的抽象 1 與硬體的關係 作業系統是位於硬體層上的第一層軟體,它直接管理著計算機的硬體,合理組織計算機工作流程,並提高了硬體的利用率。2 與其他系統軟體的關係 作業系統是系統軟體,但它不同於其...
作業系統之記憶體管理
記憶體管理的功能有 1 空間分配與 2 位址轉換 3 空間擴充 4 儲存保護 將資料與程式裝入記憶體分以下步驟 1 編譯成模組 2 鏈結模組 分靜態 裝入時動態 執行時動態鏈結 3 將模組裝入記憶體 分絕對裝入 可重定位裝入 執行時動態裝入 邏輯位址與實體地址 訪問資料時是使用實體地址獲取資料,多個...
作業系統之記憶體管理
位址對映和重定位是乙個概念 適應於請求段的記憶體分配方法是最佳適應和可變分割槽 可重入 reentrant code 又稱為 純 purecode 是一種允許多個程序同時訪問的 為使各個程序所執行的 完全相同,絕對不允許可重入 在執行中有任何改變。目的 擴充主存容量 最基本的特徵 多次性 最主要的技...