[知识点总结] 虚拟内存相关知识

本文介绍了虚拟内存的相关知识,包括内存地址空间的内部结构、内存描述符的创建与管理、虚拟内存区域的红黑树组织以及虚拟地址到物理地址的映射机制。详细阐述了进程在运行时如何使用虚拟内存,以及在fork()、clone()操作中内存描述符的处理。
摘要由CSDN通过智能技术生成

虚拟内存相关知识

文章只作为个人记录,准确性存疑,建议谨慎看待,不保证正确性

主要由一个过程进行展开:

在这里插入图片描述

无视掉图中的话,基本的操作就如上图所示。

  1. 编译器将代码文件编译成汇编语言,每条代码都会对应几个数据地址和指令地址(这些地址涉及到虚拟地址,等会再说)存入RAM内存中。
  2. CPU会读取内存的指令地址存入程序计数器(读取过程等会再说),根据程序计数器中的指令地址取相应的指令,同时数据寄存器取相应的数据地址,传入到ALU算数逻辑单元中进行计算
  3. 计算完毕后,将数据存回数据寄存器中,该数据会存放在相应的地址中。

那么问题来了,内存地址就那么大,每个程序在运行的时候,都需要自己的一些运行空间,如果直接在物理内存上操作的话,难免会造成内存不足的情况,所以我们需要对内存进行管理,这种管理方式我们叫做虚拟内存

1、内存地址空间的内部是什么东西?

内核使用mm_struct来表示进程的地址空间,比较重要的内部结构如下:

  • mm_user 记录使用该地址的进程数目(适用于多线程使用同地址的情况,可以标记出多少个线程使用了相同的地址)
  • vm_area_struct 内存区域
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值