3 内存布局
通用名词
- IR: 指令寄存器
- PC: 程序计数器
- PCB: 进程控制块,存储进程状态(阻塞),PID,计数器等
指令
jmpi 100, CS
: CS = 0 | 跳转到第 0 段起始位置 + 100 的位置
程序分段 Segment
- LDT : Local Descriptor Table 局部段表,存储每个段的编号,起始,大小,权限
分页 Page
- 一个段可由若干逻辑页组成
- PT: 页表,将逻辑页映射到物理帧
- 帧则是物理分块,和页分块大小一致
多级页表
- 首先考虑物理 4GB 内存被分为 1M 个大小为 4KB 的帧
- 每个进程使用一些帧,用一个
Page
结构体存储:
// 以下为猜测
struct Page: 32bit {
valid: ?,
frame_id: 20bit
offset: 12bit // 20 + 12 刚好表示一个 byte 地址
sign: R/W
}
each process has page: Page[1M] (stupid design)
- 开了一兆结构体,浪费 4M 内存,这些结构体需要 1024 页存储
- 故引入 1024 个 -1 级页条目,表示第 i 页是否使用,若使用则地址在哪里,省无用空间