当前位置: 首页 > java >正文

虚拟内存和虚拟页面

虚拟内存

虚拟内存是现代操作系统提供的一种内存管理机制,它允许程序访问比实际物理内存更大的地址空间。虚拟内存通过将程序的地址空间划分为多个固定大小的块(称为页面),并将这些页面映射到物理内存或磁盘上的页面文件中,从而实现高效的内存管理和资源利用。

正常情况下,一块内存不能同时运行多个程序,如果第一个程序在 2000 的位置写入一个新的值,将会擦掉第二个程序存放在相同位置上的所有内容,因为他们都引用了绝对物理地址,而虚拟内存让操作系统为每个进程分配独立的一套「虚拟地址」,这样进程所使用的地址「隔离」开来,各玩各的。

虚拟页

虚拟页是虚拟内存的基本单位,每个虚拟页是一个固定大小的内存块。操作系统将程序的地址空间划分为多个虚拟页面,并通过页表(Page Table)将虚拟页面映射到物理内存中的物理页面或磁盘上的页面文件中。

文件映射mmap(Memory-Mapped File)

文件映射是一种将文件内容直接映射到进程的地址空间的技术。通过文件映射,程序可以直接通过内存地址访问文件内容,无需通过传统的 readwrite 系统调用。文件映射的主要优点包括:

  • 减少内核态和用户态之间的数据拷贝:传统的文件读写操作需要在内核态和用户态之间进行数据拷贝,而文件映射可以直接在用户态访问文件内容,减少了数据拷贝的开销。

  • 提高性能:通过直接访问内存地址,文件映射可以显著提高文件读写操作的性能。

文件映射的工作原理

  1. 打开文件:程序通过 open 系统调用打开文件。

  2. 映射文件:程序通过 mmap 系统调用将文件内容映射到进程的地址空间。mmap 系统调用会返回一个指针,指向映射的内存区域。

  3. 访问文件内容:程序可以通过指针直接访问文件内容,而无需调用 readwrite 系统调用。

页缓存

操作系统会将文件的内容缓存在页缓存中。页缓存是内核管理的一块内存区域,用于缓存文件的页面。当程序通过文件映射访问文件内容时,操作系统会将文件的页面从磁盘加载到页缓存中,并将虚拟页面映射到页缓存中的物理页面。

http://www.xdnf.cn/news/19100.html

相关文章:

  • 海量小文件问题综述和解决攻略(二)
  • Spring框架集成Kakfa的方式
  • 【完整源码+数据集+部署教程】工地建筑进度监测系统源码和数据集:改进yolo11-SDI
  • 【WebRTC】从入门到忘记
  • pytest使用allure测试报告
  • 迁移学习实战:医疗影像识别快速突破方案
  • 【查看css技巧】hover或者其他方式触发出来的样式如何查看
  • npm使用的环境变量及其用法
  • Socket编程核心API与结构解析
  • Java-面试八股文-Mysql篇
  • 【C语言】深入理解指针(1)
  • 什么是策略模式?策略模式能带来什么?——策略模式深度解析:从概念本质到Java实战的全维度指南
  • 20250829_编写10.1.11.213MySQL8.0异地备份传输脚本+在服务器上创建cron任务+测试成功
  • 保护海外服务器免受黑客攻击的方法
  • KNN算法详解:从原理到实战(鸢尾花分类 手写数字识别)
  • 人工智能之数学基础:透过频率直方图理解概率密度函数
  • 【线性代数入门 | 那忘算8】洛谷P3389 高斯消元(内附行列式教学)
  • web3简介
  • 屏随人动+视觉魔方+多样主题+智能留言,涂鸦Wukong AI 2.0助力打造爆款带屏云台相机
  • DVWA靶场通关笔记-命令执行(Impossible级别)
  • 如何制作手感良好的移动算法?
  • 【视频讲解】R语言海七鳃鳗性别比分析:JAGS贝叶斯分层逻辑回归MCMC采样模型应用
  • GPT-Realtime架构与Token成本控制深度解析
  • 解析DB-GPT项目中三个 get_all_model_instances 方法的区别
  • 考研数据结构Part3——二叉树知识点总结
  • 大数据毕业设计选题推荐:基于北京市医保药品数据分析系统,Hadoop+Spark技术详解
  • useEffect用法
  • 将2D基础模型(如SAM/SAM2)生成的2D语义掩码通过几何一致性约束映射到3D高斯点云
  • 告别K8s部署繁琐!用KubeOperator可视化一键搭建生产级集群
  • 数据结构 02(线性:顺序表)