提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、小郑的碎碎念🚀🚀🚀
这家糖水感觉还不错噢(彬妈糖水),我喝的是桃胶~ 喝到最后碗里面有一个“甜”字,希望我的生活可以甜甜蜜蜜的,也希望我的朋友也越来越开心!
二、正文☀️☀️☀️
(1)、基本的分页存储概念
1.什么是分页存储
2.问题一:每个页表项占多少字节?
操作系统会给每一个进程建立一张页表,且页表通常存在PCB(进程控制块),页表项中包含页号和块号,所以这样的页表项就可以记录进程页面和实际存放的内存块之间的映射关系。
计算机分配存储空间是以字节来存储的,所以20bit至少要3B
3.页表项中的页号要占多少个字节呢?
页号不需要占存储空间的,因为各个页表项在内存中连续存放,所有页号是可以隐含的。
4.问题二:如何实现地址的转换
过程: 1.确定逻辑地址对应的页号
P
2.找到P号页面在内存中的起始地址(需要查页表)
3.确定逻辑地址A的页内偏移量
4.逻辑地址A对应的物理地址 = p号页面在内存中的起始地址+页内偏移量W
特点:进程的每个页面是离散存放的,但是页面内部是连续存放的
页号
= 逻辑地址/页面长度(取除法的整数
部分)
页面偏移量
= 逻辑地址%页面长度(取除法的余数
部分)
(2)基本地址变换机构
1.根据逻辑地址计算出页号,页内偏移量
2.判断页号是否越界
3.查询页表,找到页号对应的页表项,确定页面存放的内存块号
4.用内存块号和页内偏移号得到物理地址
5.访问目标内存单元
例题:若页面大小L为1K字节,页号2对应的内存块号b=8,将逻辑地址A=2500转换为物理地址E。
等价描述:某系统按字节寻址
,将逻辑地址结构中,页内偏移量占10位
,页号2对应的内存块号b=8,将逻辑地址A=2500转换为物理地址E。
注意:页内偏移量占10位 说明一个页面的大小为2^10 = 1KB
1.计算页号、页内偏移量
页号P = A/L = 2500/1024 = 2 页内偏移量W = A % L = 2500 % 1024 = 452
2.根据题目的条件得知,页号2没有越界,其存放的内存块号b= 8
3.物理地址E = b * L + W = 8 *1024 +425 = 8644
页表长度
指的是这个页表中总共有页表项,即总共有多少个页
页表项长度
指的是每个页表项占多大的存储空间
页面大小
指的是一个页面占多大的存储空间
(3)具有快表的地址变换机构
(4)两级页表
1.如何解决单级页表的问题?
问题一 : 页表必须连续存放,因此当页表很大时,需要占用很多个连续的页框
问题二: 没有必要让整个页表常驻内存,因为进程在一段时间内可能只需要访问几个特点的页面
三、总结🍓🍓🍓
希望大家和小郑一起加油哦!