大部分虚拟内存系统中都使用一种称为 分页(paging) 的技术,我们现在就介绍这一技术。在任何一台计算机上,程序引用了一组内存地址。当程序执行指令
MOV REG, 1000
时,它把地址为1000的内存单元的内容复制到REG中(或者相反,这取决于计算机的型号)。地址可以通过索引、基址寄存器、段寄存器或其他方式产生。
由程序产生的这些地址称为 虚拟地址( virtual address) ,它们构成了一个 虚拟地址空间( virtual addressspace) 。在没有虚拟内存的计算机上,系统直接将虚拟地址送到内存总线上,读写操作使用具有同样地址的物理内存字;而在使用虚拟内存的情况下,虚拟地址不是被直接送到内存总线上,而是被送到 内存管理单元( Memoiy Management Unit, MMU) ,MMU把虚拟地址映射为物理内存地址,如图3-8所示。


图3-9所示的简单例子说明了这种映射是如何工作的。在这个例子中,有一台可以产生16位地址的计算机,地址范围从0到64K-1,且这些地址是虚拟地址。然而,这台计算机只有32KB的物理内存,因此,虽然可以编写64KB的程序,但它们却不能被完全调入内存运行。在磁盘上必须有一个最多64KB的程序核心映像的完整副本,以保证程序片段在需要时能被调入内存。


虚拟地址空间按照固定大小划分成被称为 页面(page) 的若干单元。在物理内存中对应的单元称为 页框(page frame)。页面和页框的大小通常是一样的,在本例中是4KB,但实际系统中的页面大小从512字节到1GB。对应干64KB的虚拟地址空间和32KB的物理内存,可得到16个虚拟页面和8个页框。
RAM和磁盘之间的交换总是以整个页面为单元进行的。很多处理器根据操作系统认为适合的方式,支持对不同大小页面的混合使用和匹配。例如,X86-64架构的处理器支持4KB、2MB和1GB大小的页面,因此,可以将一组4KB大小的页面用于用户程序,将一个1GB大小的页面用于内核程序。稍后将介绍为什么有时候用一个较大的页面好于用一堆较小的页面。
图3-9中的标记符号如下:标记0K-4K的范围表示该页的虚拟地址或物理地址是0-4095, 4K~8K的范围表示地址4096-8191,等等。毎一页包含了4096个地址,起始于4096的整数倍位置,结束于4096倍数缺1的位置。
当程序试图访问地址0时,例如执行下面这条指令
MOV REG, 0
将虚拟地址0送到MMU。MMU看到虚拟地址落在页面0 (0〜4095),根据其映射结果,这一页面对应的是页框2 (8192-12287),因此MMU把地址变换为8192,并把地址8192送到总线上。内存对MMU一无所知,它只看到一个读或写地址8192的请求并执行它。MMU从而有效地把所有从0-4095的虚拟地址映射到了 8192~12287的物理地址。
同样地,指令
MOV REG, 8192
被有效地转换为:
MOV REG, 24576
因为虚拟地址8192 (在虚拟页面2中)被映射到物理地址24 576 (在物理页框6中)上。第三个例子,虚拟地址20 500在距虚拟页面5 (虚拟地址20 480~24 575>起始地址20字节处,并且被映射到物理地址12 288 + 20=12 308。通过恰当地设置MMU,可以把16个虚拟页面映射到8个页框中的任何一个。但是这并没有解决虚拟地址空间比物理内存大的问题。在图3-9中只有8个物理页框,干是只有8个虚拟页面被映射到了物理内存中,在图3-9中用叉号表示的其他页面并没有被映射。在实际的硬件中,用一个 “在/不在”位(present/absent bit) 记录页面在内存中的实际存在情况。
当程序访问了一个未映射的页面,例如执行指令
MOV REG, 32780
将会发生什么情况呢?虚拟页面8 (从32 768开始)的第12个字节所对应的物理地址是什么呢? MMU注意到该页面没有被映射(在图中用叉号表示),于是使CPU陷入到操作系统,这个陷阱称为 缺页中断缺页错误( page fault) 。操作系统找到一个很少使用的页框且把它的内容写入磁盘(如果它不在磁盘上)。随后把需要访问的页面读到刚才回收的页框中,修改映射关系,然后重新启动引起陷阱的指令。

例如,如果操作系统决定放弃页框1,那么它将把虚拟页面8装入物理地址4096,并对MMU映射做两处修改。首先,它要将虚拟页面1的表项标记为未映射,使以后任何对虚拟地址4096-8191的访问都导致陷阱。随后把虚拟页面8的表项的叉号改为1,因此在引起陷阱的指令m新启动时,它将把虚拟地址32 780映射为物理地址4108 (4096+12)。
下面査看一下MMU的内部结构以便了解它是怎么工作的,以及了解为什么我们选用的页面大小都是2的整数次幂 6 在 图 3-10中可以看到一个虚拟地址的例子,虚拟地址 8196 (二进制是0010000000000100)用图3-9所示的MMU映射机制进行映射,输入的丨6位虚拟地址被分为4位的页号和12位的偏移置。4位的页号可以表示16个页面,12位的偏移可以为一页内的全部4096个字节编址。
可用 页号 作为 页表( page table) 的索引,以得出对应于该虚拟页面的页框号。如果“在/不在”位是0,則将引起一个操作系统陷阱。

页表项

页表项的结构是与机器密切相关的,但不同机器的页表项存储的信息都大致相同。图3-11中给出了页表项的一个例子。不同计算机的页表项大小可能不一样,但32位是一个常用的大小。最重要的域是 页框号。毕竟页映射的目的是找到这个值,其次是“在/不在”位。这一位是1时表示该表项是有效的,可以使用,如果是0,则表示该表项对应的虚拟页面现在不在内存中,访问该页面会引起一个缺页中断。
保护(protection)位 指出一个页允许什么类型的访问。最简单的形式是这个域只有一位,0表示读/写,1表示只读。一个更先进的方法是使用三位,各位分别对应是否启用读、写、执行该页面。

为了记录页面的使用状况,引入了修改(modified)位访问( referenced)位。在写入一贞时由硬件自动设置修改位。该位在操作系统重新分配页框时是非常有用的。如果一个页面已经被修改过(即它是“脏”的),则必须把它写回磁盘。如果一个页面没有被修改过(即它是“干净”的),则只简单地把它丢弃就可以了,因为它在磁盘上的副本仍然是有效的。这一位有时也被称为脏位(dirty bit),因为它反映了该页面的状态。
不论是读还是写,系统都会在该页面被访问时设置访问位。它的值被用来帮助操作系统在发生缺页中断时选择要被淘汰的页面。不再使用的页面要比正在使用的K面更适合淘汰。这一位在即将讨论的很多页面置换算法中都会起到重要的作用。
最后一位用于禁止该页面被高速缓存。对那些映射到设备寄存器而不是常规内存的页面而言,这个特性是非常重要的。假如操作系统正在紧张地循环等待某个I/O设备对它刚发出的命令作出响应,保证硬件是不断地从设备中读取数据而不是访问一个旧的被高速缓存的副本是非常東要的。通过这一位可以禁止髙速缓存。具有独立的I/O空间而不使用内存映射1/0的机器不需要这一位。
应该注意的是,若某个页面不在内存中,用干保存该页面的磁盘地址不是页表的组成部分。原因很简单,页表只保存把虚拟地址转换为物理地址时硬件所需要的信息。操作系统在处理缺页中断时需要把该页面的磁盘地址等信息保存在操作系统内部的软件表格中。硬件不需要它。

为了更好理解页表项,我们来看一下这个例子
这里直接贴上链接
https://blog.csdn.net/u010744711/article/details/51254120/
引用了一张图片

操作系统OS-分页、页表相关推荐

  1. 操作系统基本分页存储管理方式

    操作系统基本分页存储管理方式 连续分配内存方式会形成许多"碎片",通过紧凑的方式将碎片拼接成一块大的空间,但是拼接过程系统开销太大.如果允许将一个进程直接分散地装入到许多不相邻的分 ...

  2. 操作系统中的页表的结构

    最近在学习操作系统,看到页表时有点晕,不过看了如下资料后就比较清楚了: 一.页表结构 分页转换功能由驻留在内存中的表来描述,该表称为页表(page table),存放在物理地址空间中.页表可看做简单的 ...

  3. 利用图文和代码深度解析操作系统OS的内存管理实现原理机制和算法

    利用图文和代码深度解析操作系统OS的内存管理实现原理机制和算法. 内存作为计算机系统的组成部分,跟开发人员的日常开发活动有着密切的联系,我们平时遇到的Segment Fault.OutOfMemory ...

  4. 智能驾驶操作系统OS

    智能驾驶操作系统OS 自动驾驶操作系统是一个流程化.复杂的综合系统,设计到众多流程和领域.首先,分为不同的层,包括:感知层.认知层.决策规划层.控制层和执行层几个层面. 自动驾驶操作系统是一个流程化. ...

  5. 国内操作系统OS分析(下)

    国内操作系统OS分析(下) 3.2 Android/iOS移动互联网时代 Android是一种基于Linux的自由及开放源代码的操作系统.主要使用于移动设备,如智能手机和平板电脑,由Google公司和 ...

  6. 国内操作系统OS分析(上)

    国内操作系统OS分析(上) 一.操作系统(OS)概述 操作系统(OS,Operating System),是管理.控制计算机软硬件资源的计算机程序,并为用户提供一个与系统交互的操作界面.OS是配置在计 ...

  7. 【王道】操作系统OS第二章进程管理(二[1])

    本笔记结合<2023王道操作系统考研复习指导>食用 操作系统OS第二章进程管理 本笔记结合<2023王道操作系统考研复习指导>食用 1.进程 1.1.进程的组成 1.1.1.P ...

  8. [入门篇]初识操作系统OS(这篇博客将帮你打开操作系统OS大门的第一步 超超超超超详细)

    目录 1.冯诺依曼体系 1.1冯诺依曼体系的构成 1.2 存储器-内存 1.2.1 为什么需要存储器(内存)的两个理由 1.3 冯诺依曼体系的重要性 1.4 一个生动的例子理解冯诺依曼体系运作 2. ...

  9. 浅谈操作系统OS与计算机软硬件体系结构,自顶贯穿性与行为回归硬件性

    操作系统OS与计算机软硬件体系结构 使计算机更好用! 这是操作系统的根本要义!! 操作系统这个概念基本上以后会讲一路的,今天的话就基本上讲一下轻量化的概念. 所以操作系统到底是什么?操作系统首先是软件 ...

  10. 天兔oracle,天兔(Lepus)监控操作系统(OS)安装配置

    天兔(Lepus)监控操作系统(OS)安装配置 监控和被监控端都要安装和配置snmp: [root@yoon]# yum install net-snmp* [root@yoon]# vi /etc/ ...

最新文章

  1. iphonex如何关机_iPhone X手机屏幕出现绿线怎么回事_屏幕绿线该如何处理?
  2. 积极的活下去本身就是挺好的一件事情了
  3. 《团队激励与沟通》第 3 讲——沟通概述与沟通过程 重点部分总结
  4. JAVA 临时变量的生命周期_C++临时变量的生命周期?
  5. IPMI 接口配置
  6. 电子商务概论【0351】
  7. 外卖点餐系统(App及后台)
  8. 沈阳工业大学计算机专业排名,中国的大学计算机专业排名。
  9. tk域名ml域名ga域名cf域名免费顶级域名获取及域名解析绑定IP发布网站
  10. kali安装软件源软件
  11. git reflog 恢复已删除分支
  12. Tomcat11——Tomat集群
  13. #420 Div2 Problem B Okabe and Banana Trees (math 暴力枚举)
  14. 谷歌外链发多少条能有效提升排名?
  15. java反射机制详解篇一(基础)
  16. Java练习 -------------抽象
  17. POJ2720_Last Digits_欧拉降幂公式打表
  18. 20.新系统Ubuntu20.4 安装ssh server
  19. ipad远程linux桌面背景,设置一个动态的壁纸作为你的linux桌面
  20. conceptd什么时候上市_iPhone12 Pro Max什么时候上市售价

热门文章

  1. Spring学习6之自动装配Bean02
  2. centos7删除符号链接_技术|在 Linux 中怎样移除(删除)符号链接
  3. linux系统中ntp服务监听端口是,Linux系统下测试UDP端口是否正常监听的办法
  4. XML--视频--人脸VOC
  5. Caffe学习系列(5):其它常用层及参数
  6. Deep Learning for Computer Vision with MATLAB and cuDNN
  7. 正确认识Arrays.asList方法
  8. jQuery Datatable 实用简单实例
  9. 计算Python Numpy向量之间的欧氏距离
  10. 使用FLANN进行特征点匹配