分页存储小总结
知识点:
什么是分页存储?
将内存空间分为一个个大小相等的分区(比如:每个分区4KB),每个分区就是一个“页框”(页框=页帧=内存块=物理块=物理页面)。每个页框有一个编号,即“页框号”(页框号=页帧号=内存块号=物理块号=物理页号),页框号从0开始。
进程的页面和内存的页框一一对应,且各个页面不必连续存放,可以放的不相邻的各个页框中.(也是为什么页表会有不同的页号和表号,因为他们全部加起来才是一个进程)如下图所示:
这里是块号指的是内存的块号
页表记录了页面和实际存放的内存块之间的映射关系
例如:
页号 = 逻辑地址 / 页面长度(取整,不四舍五入) 从0开始
页面偏移量 = 逻辑地址 % 页面长度 (取余)
第x号内存块的起始地址 = x * 内存块大小
如果有x位表示"页内偏移量",则说明该系统中一个页面的大小是2的x次方个内存单元
如果有y位表示"页号",则说明在该系统中,一个进程最多允许有2的y次方个页面
该图,31-12+1 = 20 ,2的20次方个页面,也就是1M
11-0 +1 = 12,每页的大小为4K
例题:
某计算机系统,页面大小为50B.某进程逻辑地址空间大小为200B,则逻辑地址110对应的页号,页内偏移量是多少?
代入公式
页号 = 110 / 50 =2
偏移量 = 110 % 50 = 10,为什么要求余呢,因为比如这道题100到150都是页号2里面的内容
总结:
逻辑地址 可以拆分为(页号,页内偏移量)
通过页号查询页表,可知页面在内存中的起始地址
页面在内存中的起始地址 + 页内偏移量 = 实际的物理地址