页面大小*块号=内存块起始地址=物理块起始地址
一个内存块=4kb的情况 页号不占空间,就类似数组下标
块号是0-2^20-1 0-1048575(0xfffff) 所以要3字节来表示
页表记录的是块号,不是内存块的起始地址 i号内存块的起始地址=i*内存块大小(页面大小) 例如 i为0 起始地址就在0kb i为1 起始地址就在4kb
基本地址转换机构:用一组硬件机构实现逻辑地址转物理
通过逻辑地址/页面大小 得计算页号 逻辑地址%页面大小 得偏移
通过页号在页表中找到内存块号 然后内存块号*页面大小+偏移=物理地址
要考虑求出来的页号是否超过页表长度 如果超过了就终止
只要知道逻辑地址(基址+偏移),操作系统就能自动算出页号和偏移,然后计算出物理地址
页表长度,页表项长度和页表项地址的区别:页表长度是指一共有多少页
页表项长度是指页地址占多少的存储空间
页表项地址是指页表项始址+页号*页表项长度
具有快表的地址变换机构
高速缓存比内存要快很多,内存比外存也要快很多 速度越快的越贵 寄存器最贵 缓存和寄存器只能存放一部分内存中的数据 把内存看成架子,能存放很多书,把缓存看成书包,可以存放一部分架子上的书,这样就很方便快速的访问书(数据)
引入快表后,地址的变换过程:1.cpu给出逻辑地址,由硬件得出页号和偏移,将页号和快表中的所有页号对比 2.如果找到匹配的页号,通过快表页号访问内存块
3.如果没找到匹配的页号,进入内存访问页表,找到对应页号,并把页表项放入到快表中
局部性原理:
访问内存的速度较慢,如果把一部分内存数据存放在高速缓存或寄存器就快很多