分页存储相关计算
页面和物理块
-
页面:分页存储管理将进程的逻辑地址空间分成若干个页。并且为各个页加以编号,从0开始。
-
物理块:把内存的物理地址空间氛围若干个块,并且加以编号,从0开始。
-
在为进程分配内存时,以块为单位,将进程中的若干页分别装入到多个可以不相邻的物理块当中。由于进程的最后一页进程装不满一块而形成了不可利用的碎片,称之为页内碎片。
-
页表:在分页系统当中,允许将各个页离散地存储在内存的任意一物理块当中,为了保障进程正确运行,即可以在内存中找到每个页面所对应的物理块,系统为每个进程建立了一张页面映像表,简称为页表,在进程地址空间内所有页(0~n),依次在页表中有一页表项,其中记录了相应的页在内存中对应的物理块。从而,在进程执行的时候,可以查询页表,找到每页在内存中的物理块号,即根据页号找物理块号,从而找物理地址。
注:
物理地址:加载到内存地址寄存器中的地址,内存单元的真正地址。
逻辑地址:CPU所生成的地址。逻辑地址是内部和编程使用的、并不唯一。而逻辑地址是虚拟内存的前提之一。
分页的最大作用就在于:使得进程的物理地址空间可以是非连续的。
相关公式
- 物理地址=块号+页内地址
- 逻辑地址=页号+页内地址
- 页号=INT(逻辑地址/页面大小) 取整
- 页内地址=逻辑地址%页面大小 取余
- 逻辑地址的大小为页的数量×页的大小
- 页面大小——>页面偏移位
比如页面大小为 1KB,2^10B=1KB,所以页内偏移10位。
页和块的大小相同。
例题
1.
某页式存储管理系统中,现有P1、P2和P3共3个进程同驻内存。其中,P2有4个页面,被分别装入到主存的第3、4、6、8块中。假定页面和存储块的大小均为1024B,主存容量为10KB。
当P2在CPU上运行时,执行到其地址空间第500号处遇到一条传送指令:MOV 2100, 3100
计算MOV指令中的两个操作数的物理地址。
解:
[2100/1024]=2,页号为2,映射到物理块号6;2100%1024=52,页内位移为52,对应块内位移也是52。故逻辑地址2100映射到物理地址6×1024+52=6196。
[3100/1024]=3,逻辑页号为3,映射到物理块号8;3100%1024=28,页内位移为28,对应块内位移也是28。故逻辑地址3100映射到物理地址8×1024+28=8220。
2.
设有一页式存储管理系统,向用户提供的逻辑地址空间最大为16页,每页2048字节,内存总共有8个存储块,试问逻辑地址至少应为多少位?内存空间有多大?
解:逻辑地址看页大小,每页2048字节=2^11字节,所以逻辑地址至少11位。
存储地址为8*2048B=16KB
3.
某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:
则逻辑地OA5C(H)所对应的物理地址是()
解:
页式存储管理的逻辑地址分为两部分:页号和页内地址。由已知条件“用户编程空间共32个页面”,可知页号部分占5位;由“每页为 1KB”,1K=210,可知页内地址占10位。由“内存为 16KB”,可知有16块,块号为4位。逻辑地址0A5C (H)所对应的二进制表示形式是:000 10 10 0101 1100,根据上面的分析,编码“000 10”为页号,表示该逻辑地址对应的页号为2。查页表,得到物理块号是4(十进制),即物理块地址为:01 00,拼接块内地址10 0101 1100,得 01 0010 0101 1100,即125C(H)。