IT袋

当前位置:主页 > 经验教程 > 建站编程 >

虚拟地址怎么找到对应的内容

虚拟地址怎么找到对应的内容? 如何通过虚拟地址查找对应的内容

时间:2024-01-22 21:12:06 来源:IT袋 作者:马勇
导读:虚拟地址怎么找到对应的内容,今天带来的IT技巧小经验虚拟地址怎么找到对应的内容方面的内容,接下来就是全面介绍。 操作系统内存管理方式主要两种,不同的管理方式,寻址的实现是不同的: 内

虚拟地址怎么找到对应的内容

今天带来的IT技巧小经验虚拟地址怎么找到对应的内容方面的内容,接下来就是全面介绍。

操作系统内存管理方式主要两种,不同的管理方式,寻址的实现是不同的:

  • 内存分段:将进程的虚拟地址空间划分为多个不同大小的段,每个段对应一个逻辑单位,如代码段、数据段、堆段和栈段。每个段的大小可以根据需要进行调整,使得不同段可以按需分配和释放内存。虚拟内存分段的优点是可以更好地管理不同类型的数据,但是由于段的大小不一致,容易产生外部碎片。
  • 内存分页:将进程的虚拟地址空间划分为固定大小的页,同时将物理内存也划分为相同大小的页框。通过页表将虚拟地址映射到物理地址,并且可以按需加载和释放页。虚拟内存分页的优点是可以更好地利用物理内存空间,但是可能会产生内部碎片。

分段的寻址方式

分段机制下的虚拟地址由两部分组成,段选择因子段内偏移量

虚拟地址怎么找到对应的内容

段选择因子和段内偏移量:

  • 段选择子就保存在段寄存器里面。段选择子里面最重要的是段号,用作段表的索引。段表里面保存的是这个段的基地址、段的界限和特权等级等。
  • 虚拟地址中的段内偏移量应该位于 0 和段界限之间,如果段内偏移量是合法的,就将段基地址加上段内偏移量得到物理内存地址。

在上面,知道了虚拟地址是通过段表与物理地址进行映射的,分段机制会把程序的虚拟地址分成 4 个段,每个段在段表中有一个项,在这一项找到段的基地址,再加上偏移量,于是就能找到物理内存中的地址,如下图:

虚拟地址怎么找到对应的内容

如果要访问段 3 中偏移量 500 的虚拟地址,我们可以计算出物理地址为,段 3 基地址 7000 + 偏移量 500 = 7500。

分段的办法很好,解决了程序本身不需要关心具体的物理内存地址的问题,但它也有一些不足之处:

  • 第一个就是内存碎片的问题。
  • 第二个就是内存交换的效率低的问题。

分页的寻址方式

虚拟地址与物理地址之间通过页表来映射,如下图:

虚拟地址怎么找到对应的内容

页表是存储在内存里的,内存管理单元MMU)就做将虚拟内存地址转换成物理地址的工作。

而当进程访问的虚拟地址在页表中查不到时,系统会产生一个缺页异常,进入系统内核空间分配物理内存、更新进程页表,最后再返回用户空间,恢复进程的运行。

在分页机制下,虚拟地址分为两部分,页号页内偏移

页号作为页表的索引,页表包含物理页每页所在物理内存的基地址,这个基地址与页内偏移的组合就形成了物理内存地址,见下图。

相关阅读

  • OSPF邻居发现过程 OSPF邻居发现的步骤

    OSPF邻居发现过程 OSPF邻居发现的步骤

    为网友解答OSPF邻居发现过程IT技巧方面的经验,接下来就是全面介绍。 OSPF邻居发现是指路由器通过交换Hello数据包来发现和建立与直接相连的邻居路由器的关系。 邻居发现过程如下: Hello 数

  • CRDT协同编辑:另一种顺序一致性算法Tree-Based Indexing

    CRDT协同编辑:另一种顺序一致性算法Tree-Based Indexing

    为网友们详解CRDT协同编辑:另一种顺序一致性算法Tree-Based的方法内容,一起跟随小编看看吧! 上次我们讲解了顺序一致性算法Fractional Indexing。 这次我们来看看另一种方案,Tree-Based Indexing,一

  • 网络数据库是什么意思 什么是网络数据库

    网络数据库是什么意思 什么是网络数据库

    IT袋网网为大家说一说网络数据库是什么意思的电脑小知识,下面IT袋网为您详细介绍 网络数据库(Network Database)是一种数据库管理系统(DBMS),它的数据模型采用图形结构(graph structure)表

  • 服务器查询网站入口在哪 查询网站服务器的办法

    服务器查询网站入口在哪 查询网站服务器的办法

    小编为你讲解服务器查询网站入口在哪和查询网站服务器的办法的介绍,接下来分享详细内容。 随着科学技术的飞速发展,越来越多的用户接触到服务器,对服务器有了一定的了解。服务器配