首页 > 其他分享 >页表、物理地址、逻辑地址

页表、物理地址、逻辑地址

时间:2023-12-26 11:45:07浏览次数:28  
标签:物理地址 地址 页表 线性 缺页 虚拟内存 内存

页表:

  虚拟内存的概念。操作系统虚拟内存到物理内存的映射,被称为页表。

  不可能每一个虚拟内存的Byte都对应到物理内存的地址,因为这样的页表非常大,于是引入 页(Page)概念,进行分页,减小虚拟内存页对应物理内存页映射表的大小。

  缺页异常:malloc和mmap函数分配内存是仅建立了 进程虚拟地址空间,并没有分配虚拟内存对应的物理内存,进程访问没有建立映射关系的虚拟内存时,处理器自动触发 缺页异常,引发缺页中断。

  缺页中断:缺页异常后产生一个缺页中断,操作系统根据页表中的   外存地址  在外村中找到所缺的一页,将其调入 内存。

  在进行动态内存分配的时,(C++ 中 new),操作系统会在硬盘中创建或申请一段虚拟内存空间,并更新到页表(分配一个页表条目),该条目指向硬盘上新创建的虚拟页,产生映射关系。

逻辑地址转线性地址:段起始地址(基地址) + 段内偏移地址 = 线性地址

  例如一个存储器大小是  1KB(8位)可以分为4段,第一段地址范围是0~255,段地址为0;;;第四段地址范围是768~1023,段地址为768;偏移地址为0~255之间。

  线性地址是一个32位的无符号整数,可以用来表达4GB的地址,高达4294967296个内存单元。十六进制表示(0x00000000~0xffffffff)

  分页机制:

    4KB分页大小,线性地址的高10位为页目录项在页表中的编号,中间10位为页表中的页号,低12位是偏移地址。

    4MB分页大小,高10位页号,低22位偏移地址。 

  1、分页单元中,页目录是唯一的,它的地址放在CPU的cr3寄存器中,是进行地址转换的开始点。   2、每一个活动的进程,因为都有其独立的对应的虚似内存(页目录也是唯一的),那么它也对应了一个独立的页目录地址。——运行一个进程,需要将它的页目录地址放到cr3寄存器中。   3、每一个32位的线性地址被划分为三部份,面目录索引(10位):页表索引(10位):偏移(12位) 依据以下步骤进行转换:   1、从cr3中取出进程的页目录地址(操作系统负责在调度进程的时候,把这个地址装入对应寄存器);   2、根据线性地址前十位,在数组中,找到对应的索引项,因为引入了二级管理模式,页目录中的项,不再是页的地址,而是一个页表的地址。(又引入了一个数组),页的地址被放到页表中去了。   3、根据线性地址的中间十位,在页表(也是数组)中找到页的起始地址;   4、将页的起始地址与线性地址中最后12位相加,得到最终我们想要的物理地址;

线性地址转物理地址:页目录地址 + 页目录索引 = 页表地址      -----      页表地址 + 页表索引 = 页地址     ------    页地址 + 页内偏移 = 物理地址

标签:物理地址,地址,页表,线性,缺页,虚拟内存,内存
From: https://www.cnblogs.com/gpf1997/p/17927794.html

相关文章

  • GB28181视频监控平台LiteCVR调用rtsp地址返回的IP不正确原因排查
    RTSP(Real-TimeStreamingProtocol)是一种用于控制实时流媒体传输的应用层协议。它被设计用于建立和管理客户端与媒体服务器之间的连接,以便实现实时音频、视频或其他交互式媒体内容的传输。RTSP允许客户端通过发送命令来控制流媒体服务器的播放、暂停、快进、倒带等操作。RTSP支持......
  • 查看DHCP地址池详细配置信息
    1、实验拓扑图2、实验目的查看dhcp详细的配置信息3、详细配置<r1>displaycurrent-configuration [V200R003C00]#sysnamer1#snmp-agentlocal-engineid800007DB03000000000000snmp-agent #clocktimezoneChina-Standard-Timeminus08:00:00#portallocal-serve......
  • Odoo17_禁用从地址栏进debug模式
    1.参考odoo禁用debug模式_odoo14禁用debug-CSDN博客2.直接上代码#-*-coding:utf-8-*-fromodooimporthttpfromodoo.addons.web.controllersimporthomefromodoo.exceptionsimportUserErrorclassDebugHome(home.Home):@http.route('/web',type='ht......
  • EKP qhky 流程启接口addReview 支持明细表地址本传递多值
     问题描述: 流程启动接口(addReview),给第一行多人员地址本字段 传多个部门,后台代码解析不成功     /** * *20230703定制处理附件列表问题sjx * ***/ for(inti=0;i<attForms.size();i++){ S......
  • 鲲鹏920 aarch64 版本 Ambari HDP 下载地址
    本文能够适配兼容华为鲲鹏920 aarch64 版本,仅限CentOS7、openEuler20.03-LTS操作系统以下是详细下载地址1、CentOS7aarch64版本CentOS7aarch64https://mirrors.huaweicloud.com/kunpeng/yum/el/7/bigdata/https://mirrors.huaweicloud.com/kunpeng/yum/el/7/bigdata/......
  • Debian12 (雷池WAF SafeLine)通过 EUI64 固定 IPv6 地址后缀、获取无状态 SLAAC
    说明Debian12(KDE桌面)网络管理(IPv4、IPv6)已默认不再由内核直接管理,转而使用由NetworkManager管理。若要固定IPv6后缀并实现SLAAC无状态管理,则需要修改NetworkManager配置。图形界面配置网络配置完成后,检查网络地址ipaddshowenp3s0,公网和内网IPv6后缀......
  • C++(引用符号&、访问内存地址&)
    在C++中,引用符号&和访问内存地址的&运算符有不同的用途和含义。引用符号&:创建引用使用&符号可以创建引用,即给一个变量起一个别名。引用是一个别名,它与原变量共享相同的内存地址。引用在声明时必须初始化,并且一旦初始化后,不能再引用其他变量。intx=10;int&ref......
  • IP地址定位解析
    目录1IP地址定位解析1.1获取用户IP地址1.2淘宝库获取用户IP地址属地1.3通过Ip2region定位1.3.1Ip2region介绍1.3.2Ip2region特性1.3.3客户端实现1.3.3.1引入Maven仓库1.3.3.2基于文件查询1.3.3.3缓存VectorIndex索引1.3.3.4缓存整个xdb数据1IP地址定位......
  • 运营商分配过来的是私网地址,它是如何完成上网的?
    作者:网络之路一天 首发公众号:网络之路博客(ID:NetworkBlog)上一篇内容 内网是如何访问到互联网的(H3C源NAT)在实际中,比如图上面最简单的家庭网络,不知道大家发现没有,接光猫下面分配的是192.168.1.0或者192.168.2.0/24的地址,或者拨号分配的是100.100.X.X、10.10.X.X的地址,这些地址可都......
  • vue3调用高德地图,实现地址,经纬度填写
    父组件引用高德地图:1<template>2<divclass="wrapper">3<divclass="box">4<divclass="form-box">5<el-form6label-position="top"7:inline=&qu......