1、
操作系統(tǒng)將物理內(nèi)存抽象成一個(gè)字節(jié)數(shù)組,每個(gè)字節(jié)有一個(gè)物理地址。
根據(jù)物理地址可以訪問(wèn)到物理內(nèi)存中的任意一個(gè)字節(jié)。
最小管理單位是字節(jié),將物理上連續(xù)多個(gè)字節(jié)看成一個(gè)內(nèi)存塊,以塊為單位分配、釋放、回收物理內(nèi)存。
操作系統(tǒng)的內(nèi)核可以駐留在物理內(nèi)存中,也可以駐留在 ROM 中。
2、Intel 系列的機(jī)器可以向 BIOS 查詢物理地址空間的布局。(ARM 處理器沒(méi)有 BIOS,但有其他機(jī)制)
BIOS 提供的 int 0x15 的 0xe820功能,可以獲得一種內(nèi)存布局表,由多個(gè)區(qū)間(開(kāi)始地址、大小、屬性)組成。
ucore 在 bootasn.S 中探測(cè)內(nèi)存布局,將探測(cè)結(jié)果保存在物理內(nèi)存 0x8000處。
3、BIOS 將系統(tǒng)的物理內(nèi)存分為四大類:可用 RAM;保留 RAM,OS 不可用;ACPI 描述表使用;ACPI 非易失數(shù)據(jù)
物理內(nèi)存管理只有可用 RAM 類。有些已經(jīng)被引導(dǎo)程序、內(nèi)核用掉了。
內(nèi)核在內(nèi)存中的開(kāi)始位置是知道的,終止位置只有連接程序知道,可在連接腳本中定義,由連接程序提供。
連接腳本中 “.” 代表當(dāng)前位置:var = . 該值便為連接程序確定的當(dāng)前地址
4、內(nèi)存管理的單位為內(nèi)存塊,內(nèi)存塊由多個(gè)物理上連續(xù)的字節(jié)組成。
描述內(nèi)存塊:位圖、鏈表、數(shù)組等

最簡(jiǎn)單的物理內(nèi)存管理方法是不管理,改進(jìn):分區(qū)管理(連續(xù)內(nèi)存管理方法)
將內(nèi)存劃分為區(qū),以區(qū)為單位分配內(nèi)存,由使用者自己管理區(qū)內(nèi)內(nèi)存的使用。不允許跨區(qū)使用內(nèi)存。
分區(qū)方法:靜態(tài)分區(qū)法,動(dòng)態(tài)分區(qū)法,伙伴算法