求真百科欢迎当事人提供第一手真实资料,洗刷冤屈,终结网路霸凌。

页表查看源代码讨论查看历史

事实揭露 揭密真相
跳转至: 导航搜索
页表
图片来自百度

页表是一种特殊的数据结构,放在系统空间的页表区,存放逻辑页与物理页帧的对应关系。 每一个进程都拥有一个自己的页表,PCB表中有指针指向页表。 [1]

  • 存储方式:基本分页存储管理方式
  • 所属领域:操作系统

简介

分页系统中,允许将进程的每一页离散地存储在内存的任一物理块中,为了能在内存中找到每个页面对应的物理块,系统为每个进程建立一张页面映射表,简称页表。页表的作用是实现从页号到物理块号的地址映射。

页表长度就是页表项的个数。页表长度=虚存容量/页面大小。

比如虚存容量为1GB,则虚拟地址是30位,2^30,如页面大小为4KB(z^12),则页表长度是 2^30/2^12=2^18=256K

地址结构

逻辑地址:CPU所生成的地址。CPU产生的逻辑地址被分为 :p (页号) 它包含每个页在物理内存中的基址,用来作为页表的索引;d (页偏移),同基址相结合,用来确定送入内存设备的物理内存地址。

物理地址:内存单元所看到的地址。逻辑地址空间为2^m,且页大小为2^n,那么逻辑地址的高m-n位表示页号,低n位表示页偏移。

逻辑地址空间:由程序所生成的所有逻辑地址的集合。

物理地址空间:与逻辑地址相对应的内存中所有物理地址的集合,用户程序看不见真正的物理地址。

注:用户只生成逻辑地址,且认为进程的地址空间为0到max。物理地址范围从R+0到R+max,R为基地址,地址映射-将程序地址空间中使用的逻辑地址变换成内存中的物理地址的过程。由内存管理单元(MMU)来完成。

分页逻辑地址 =P(页号).d(页内位移)

分页物理地址=f(页帧号).d(同上)

P = 线性逻辑地址/页面大小

页表
图片来自百度

d= 线性逻辑地址-P*页面大小

作用

实现从页号到物理块号的地址映射。

逻辑地址转换成物理地址的过程是:用页号p去检索页表,从页表中得到该页的物理块号,把它装入物理地址寄存器中。同时,将页内地址d直接送入物理地址寄存器的块内地址字段中。这样,物理地址寄存器中的内容就是由二者拼接成的实际访问内存的地址,从而完成了从逻辑地址到物理地址的转换。

基本分页存储管理方式

用固定大小的页(Page)来描述逻辑地址空间,用相同大小的页框(Frame)来描述物理内存空间,由操作系统实现从逻辑页到物理页框的页面映射,同时负责对所有页的管理和进程运行的控制。

分级页表

一个32位逻辑地址空间的计算机系统,页大小为4KB,那么页表有一百万条目。假设每个条目占4B,则需要4MB物理地址空间来存储页表本身。利用多级页表,可以减少页表所占用的空间。

一个逻辑地址(32位系统,页大小 4K) 可以被分为 :一个20位的页号 +一个12位的偏移。如果对页表进行再分页,那么页号分解为:一个10位的页号 +一个10位的偏移。因此,一个逻辑地址表示如下 :p1 是用来访问外部页表的索引, p2 是外部页表的页偏移。

此时,两级32位分页结构的地址转换机制如下:

具有TLB(转换后备缓冲器)的页表结构

转换后备缓冲器TLB(translation lookaside buffer)是小、专用、快速的硬件缓冲,只包括页表中的一小部分条目。如果页号在TLB中,得到帧号访问内存;否则从内存中的页表中得到帧号,将其存入TLB,访问内存。

视频

页表及页表项的设计

参考文献