主讲逻辑地址与物理地址转换
一、分页机制
为了提高内存读取效率,每一页的大小都是2的n次幂,一个程序最多有64页,(16位处理器一页大小为1K,32位处理器一页大小为4K)以1K为例讲解:
假如相对地址为1502,二进制为0000010111011110,而一页的大小为1024(2^10),所以前六位000001为页号,后十位0111011110为偏移量,所以1502在第一页的偏移量为478。
上述情况未涉及到页表,而系统中都会有页表,假设系统中有如下页表:
页表中索引为1的那一页驻存在为6的可用帧中,所以物理地址为0001100111011110。
二、分段机制
分段与分页一样,由段号和偏移量组成,每一段的大小都不一样,但是具有一个最小值和最大值。段号是内存中段表的索引,而段表由段长度和段基址(段的起始地址)组成,还是以1502为例,16位逻辑地址为0000010111011110,其中前4位为段号,后12位为偏移量。假设由如下段表:
段号为0,偏移量为10111011110,然后将基址加上偏移量得到物理地址11111011110
最后说一句,由页的大小是固定的,所以浪费的内存只会是每一页最后剩下的一点,产生内部碎片,而段的大小是可变的,所以容易产生外部碎片,而且分页是不可见的,分段是可见的。