《操作系统》——分页存储管理方式逻辑地址到物理地址的转换

一、连续分配方式缺点

连续分配方式的主要缺点是会形成许多碎片,尽管我们可以通过紧凑的方法将碎片拼接成可用的大块空间,但这样须付出很大的代价。

二、离散分配方式

离散分配方式思想:将进程直接分散地装入到许多不相邻接的分区中。
1.如果离散分配的基本单位是页----------》分页存储管理方式
2.如果离散分配的基本单位是段----------》分段存储管理方式
基本的分页存储管理方式不具备页面对换功能,也不支持实现虚拟存储器功能,它需要把每个作业全部装入内存后才能运行。

三、页面

分页存储管理是将一个进程的逻辑地址空间划分为若干个大小相等的片,这些片称之为页面,并编号第0页,第1页。。。同时,我们还把内存空间也划分为与页面大小相同的若干个存储快,称为块或叶框,也进行编号0#,1#…之后我们为进程分配内存时,即是将进程的若干个页分别映射装入到可以不相邻的块中去。由于这里进程的最后一页往往装不满块而会形成不可利用的碎片,我们称之为业内碎片。

四、页面大小

很明显,页面大小过小可使得内存碎片变小,减少内存碎片总空间,提高内存利用率,但缺点是:每个进程由此会占用更多页面,导致进程页表过长,占用大量内存(页表也是要耗费内存的),。而且还降低了页面切换的效率。而页面过大,可以减少页表长度,提高页面切换效率,但内存碎片增大。

在页面大小选择适中,一般为2的幂,通常为512B~8KB。

五、页面地址结构

页号(P)+位移量(W)
位移量W也称呼为页内地址或页内偏移量,对于特定机器,其页面地址结构时确定的,给定逻辑地址空间中的地址A,页面大小L,则页号P=int(A/L)
页内地址W=A%L
比如:系统页面大小为1KB,A=2170B,可得
页号P=A/L=2170/1024=2
页内地址=A%L=122

六、页表

在分页系统里,允许将进程各个页面离散存储在内存的不同物理块中,为了保证进程的正常运行,需要能在内存中找个每个页面所对应的物理块,于是系统得为进程建立一张页面映射表,以方便查找页面对应的地址,这张表叫做页表,进程地址空间内的所有页(0~n)都将通过页表映射到块号,进程执行时,只要通过查找页表,就可知道每页在内存中的物理块号。总而言之,页表作用就是实现从页号到物理块号的地址映射。

例题:
例1:
一分页存储管理系统中逻辑地址长度为16位,页面大小为4KB字节,现有一逻辑地址为2F6AH,且第0,1,2,页依次存放在物理块5,10,11中,则相应的物理地址是多少?
《操作系统》——分页存储管理方式逻辑地址到物理地址的转换_第1张图片
《操作系统》——分页存储管理方式逻辑地址到物理地址的转换_第2张图片
《操作系统》——分页存储管理方式逻辑地址到物理地址的转换_第3张图片
例2:
《操作系统》——分页存储管理方式逻辑地址到物理地址的转换_第4张图片
解题过程:

   首先要知道页式存储管理的逻辑地址分为两部分:页号和页内地址。物理地址分为两部分:

关系为:
逻辑地址= 页号+页内地址

物理地址= 块号+页内地址;

**分析:**已知:用户编程空间共32个页面,2ˆ5 = 32 得知页号部分占5位,由“每页为1KB”,1K=210,可知内页地址占10位。

由“内存为16KB”,2^4=16得知块号占4位。

逻辑地址0A5C(H)所对应的二进制表示形式是:0000101001011100,后十位1001011100是页内地址,

00010为为页号,页号化为十进制是2,在对照表中找到2对应的物理块号是11,11转换二进制是1011,即可求出物理地址为10111001011100,化成十六进制为2E5C;

即则逻辑地址0A5C(H)所对应的物理地址是2E5C;

例3:
十进制逻辑地址转物理地址
《操作系统》——分页存储管理方式逻辑地址到物理地址的转换_第5张图片
《操作系统》——分页存储管理方式逻辑地址到物理地址的转换_第6张图片
地址转换步骤:
地址转换步骤
当逻辑地址为16进制、八进制、二进制时,
第一步:把逻辑地址转为二进制;

第二步:按页的大小分离出页号和页内偏移量( 高位部分为页号,低位部分为页内偏移量 )

第三步:根据题意产生页表;

第四步:将逻辑地址的页内偏移量直接复制到物理地址的页内偏移量上
( 即:逻辑地址的页内偏移量 = 物理地址的页内偏移量 )

第五步:以逻辑地址的页号查页表,查出物理地址的帧号,再把帧号转为二进制,复制到物理地址的的帧号上,从而得出物理地址。

当逻辑地址为十进制时,
第一步:求出逻辑地址的页号 = 逻辑地址 / 页面大小

第二步:求出页内偏移量 = 逻辑地址 % 页面大小
(“%”表示取余,只取余数,不取商)

第三步:根据题意产生页表;

第四步:以逻辑地址的页号查页表,查出物理地址的帧号

第五步:求出物理地址 = 帧号 * 页面大小 + 页内偏移

网易校招笔试题

对于一个内存地址是32位、内存页是8KB的系统。0X0005F123这个地址的页号与页内偏移分别是多少?

解法1:
0X0005F123这个地址对应的十进制是:389411B

页面大小8KB=8192B

页号=389411/8192=47页

页内偏移=389411%8192=0X00001123

解法2:
将地址转换为二进制:0X000….0101 111 1 0001 0010 0011

8KB=2^13,即后13为页内偏移量即0X00001123

0101111=47

参考文章:
分页存储管理方式
逻辑地址到物理地址的转换

你可能感兴趣的:(操作系统,操作系统,内存管理)