總算搞完Lab1
管理存儲介質的東西
cpu 內存 io 設備
內存一次最小單位 8 bit
計算機 總線32bit數組
有大量的數據要讀寫,CPU內有高速緩存
內存層次,兩級緩存緩存
內存 以字節爲單位進行訪問
磁盤 扇區編號 每個扇區512 字節最小單位數據結構
內存管理系統的要求
抽象,保護,共享,虛擬化app
內存管理機制:
+ 重定位:(relocation)
+ 分段 : (segmentation)
+ 分頁 : (paging)
+ 虛擬儲存(virtual memory)
多數系統 按 需頁式虛擬儲存
操作系統
從寫出來的符號 到總線上的物理地址3d
地址空間 :
物理地址空間 硬件支持的地址空間 起始是0 知道 MAXsys
邏輯地址空間 CPU運行時 進程看到的地址 0- MAX progcode
邏輯地址根據方法轉換成物理地址blog
編譯時:
假設起始地址已知
若是起始地址改變,必須從新編譯排序
加載時:
編譯時起始位置位置,編譯器徐生成可重定位的代碼(reloctable code)
加載時,生成絕對地址進程
執行時:
執行時代碼可移動
需地址轉換(映射)硬件支持
地址的生成過程:
邏輯地址到物理地址的傳喚
你要分配510字節 結果分配了512字節 剩下幾個字節就是內碎片
取決於分配單元大小是否要取整。
動態分區分配
空閒分區鏈表
First Fit Allocation
Best Fit Allocation
合併還慢 由於要找地址臨近 可是倒是按照大小排序的
Wrost Fit Allocation
緊湊(ompaction)
碎片緊湊: 否有應用程序都是能夠動態重定位
分區對換
Swapping in/out
對換到對換區內
處於等待狀態的程序搬到外存區
有一個對換區
整個可分配的分區大小 的策咯
空閒塊的二維數組
第一維 由小到大 排成第一位
同大小就按地址排序
ucore 已經實現了