首页 > 编程知识 正文

页表常驻内存吗,虚拟内存和物理内存的映射通过页表

时间:2023-05-05 05:49:37 阅读:163130 作者:3635

引言虚拟内存又称虚拟存储器,作为现代操作系统中存储管理的关键技术之一,实现了内存扩展功能。 我们知道计算机内存实际上很小,但许多程序需要的空间非常大,对此问题有两种解决方法。 一个是物理上增加容量,但这往往受到机器本身的限制,从而增加了系统成本。 目前,大多数计算机都采用第二种方法。 也就是虚拟内存和交换技术。

另一方面,页表寻呼技术用于管理存储器空间。 分页技术解决了内存的不连续性,将碎片区域最小化。

页面:分页存储管理将进程的逻辑地址空间划分为多个页面,并对从0开始的页面进行编号,例如0页、1页等。 因此,存储器的物理地址也分成几个块,同样对他们进行编号; 为进程分配内存是以块为单位,将进程中的几个页面分别加载到多个可能不相连的物理块中。 页面大小:在分页系统中,选择过小的页面可以减少内存碎片和提高空间利用率,但每个进程都会消耗很多页面,导致页表变长,内存也很大,而且还会进行分页虽然可以减少页表的长度并加快页面的交换速度,但页面中的碎片会变大。 因此,页面大小应该适中,通常选择1-8KB。 一、地址结构

页码p共有20位,相当于能够显示2^20个或1M个页面; 位移量w为12位,表示页面大小为4KB。 对于特定的设备,地址结构是一定的。 给定逻辑地址空间a,设页大小为l,则页编号p和页内地址d可以用P=INT[A/L]、d=[A]%L的式子求出。

2、页面表下图是概念图,只显示了页面表的对应关系。 具体的映射规则更为复杂,需要将进程的逻辑地址转换为物理地址。计算机为了提高地址的变换速度,会在系统中设置一个页表寄存器PTR,在其中储存的是页表的起始地址和页表长度,平时,进程未执行时,页表的始址会储存在进程的PCB中,当调度程序调度到某进程时,才会将这两个数据装入页表寄存器中,当进程要访问某个逻辑地址中的数据时,分页地址变换机构会自动把逻辑地址分为页号和页内地址两部分,再以页号作为索引去检索页表,首先将页号和页表长度进行比较,如果页号大于页表长度,则表示此次访问的地址已超越进程的地址空间,于是就会产生地址越界中断;若未出现越界错误,则会先将页号和页表项长度相乘,然后和起始地址相加,得到块号,将之装入物理地址寄存器。与此同时,再将逻辑地址的页内地址放入物理地址寄存器的块内地址字段中,这样就完成了从逻辑地址到物理地址的变换

3、因为快速表的页面表存储在内存中,所以CPU每访问一个数据就需要访问内存两次。 第一次检查页表,进行地址转换,获得物理地址; 由于第二次根据物理地址在存储器中找到数据,可知效率非常低,所以为了提高地址变换速度,增加地址变换机构中具有并行查询能力高速缓冲存储器,即"联想寄存器" (TLB ) 此时的转换处理是,CPU给出有效地址后,地址转换机构自动将页号p发送到缓存寄存器,将该页号与快速工作台中的所有页号进行比较,如果找到一致的页号,则直接读取对应的物理块号如果找不到匹配的块编号,还需要访问内存中的页表。 找到后,将页表项中的物理块发送到地址寄存器,并将页表项放入快速表中。 快速表填满后,替换最不使用的页面表项目。

4、二级和多级页表现代大多数计算机系统支持非常大的逻辑地址空间。 在这种环境下,页表通常非常大,占用相当大的空间。 对于这样的问题,有两种解决方法。 一种是离散地分配内存空间,以解决很难找到大内存的问题。 另一种是,只将现在需要的页表项目的一部分读入存储器,剩下的页表项目还在磁盘上,在使用的时候进行读入。 如果难以找到用于存储页表的较大的连续区域,则使用分页表的方法使各页的大小与存储器的物理块大小相同,进行编号,然后将各页表的起始地址称为外页表多级页表的地址转换引入了外部页表寄存器,其中存储了外部页表的起始地址。 然后,配置外部页编号,从外部页表中找到对应指定页的起始地址,根据外部页内地址找到块编号。 该块编号和页内地址构成要访问的存储器物理地址。

二、虚拟内存1、虚拟内存之所以能实现,最初计算机领域认为是一个程序需要完整的装入内存中才可以运行,因为当时的存储管理方式都具有一次性和驻留性的特点,后来程序运行时根据局部性原理

2、虚拟内存工作状况虚拟内存不是真正的内存空间,实际上比物理内存大得多。 我们的代码在运行时计算机给我们分配了虚拟内存,把这个内存传递给在较短的时间内,程序的执行局限于某个部分,相应的,它所访问的储存空间也局限于某个区域,它负责存储管理单元(Memory Management Unit)。 从局部原理可以看出,程序在执行之前不需要全部加载到内存中,只要先将要执行的少数页面加载到内存中执行,剩下的部分留在磁盘中即可,所以在根据虚拟地址变换物理地址时

位,如果为1说明要访问的页已经加载到内存中,可以直接访问,如果为0,说明要访问的页没有在内存中,这时就会发生缺页中断,请求操作系统将所缺之页调入内存中。

虚拟内存的特征:

多次性:多次性是相对于传统储存器管理方式的一次性而言的,是指一次作业中的程序和数据无需在作业时一次性装入,而是允许被分成多次调入内存运行,即只需将当前要运行的那部分程序和数据装入内存即可开始运行。对换性:对换性是相对于常驻性来说的,是指一个作业中的程序和数据,无需在作业运行时一直常驻内存,而是允许在作业过程中进行换入换出。虚拟性:虚拟性就是指能从逻辑上扩充内存容量,使用户所看到的内存容量远远大于实际内存容量。 3、分页请求系统

  分页请求系统是在分页系统的基础上增加了请求调页和页面置换功能所形成的页式虚拟存储系统。其中最主要的数据结构式请求页表,其基本作用仍然是将用户地址空间中的逻辑地址映射为内存空间中的物理地址,同时为了满足页面换进换出的需要,还增加了四个字段:

状态位P:由于请求分页系统中,只将一部分程序调入内存,还有一部分在磁盘中,所以需要在页表中增加一个存在位,标志这页是否已经调入内存中。访问字段A:用于记录本页在一段时间内被访问的次数,或记录本页最近已有多久未被访问,提供给置换算法在选择换出页面时做参考。修改位M:标识该页在调入内存后是否被修改过,在置换时如果被修改过,必须重新写入内存中,如果没有被修改过,就可以直接被覆盖。外存地址:用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。