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

操作系统篇之虚拟内存

虚拟内存是什么?

虚拟内存是计算机操作系统中的一种技术,它将每个进程的内存空间划分成若干个固定大小的页,并通过页面映射技术将这些页与物理内存或磁盘上的页面文件进行交换

虚拟内存能干什么?

  1. 扩展了实际物理内存容量:虚拟内存使得每个进程能够访问比物理内存容量更大的内存空间。当物理内存不足时,虚拟内存可以将一部分数据写入到磁盘上的页面文件中,并将页面文件中的数据按需加载到物理内存中

  2. 允许多个进程同时运行:虚拟内存让每个进程都有独立的虚拟地址空间,使得多个进程可以同时运行而不会相互干扰。每个进程都可以认为自己是独占的拥有全部虚拟内存空间

  3. 简化程序的内存管理:虚拟内存通过将进程的内存空间划分为页,并提供了对这些页面的映射、保护和权限控制等机制,简化了程序的内存管理。进程可以通过访问虚拟地址空间来进行内存操作,而无需关心具体的物理存储位置

  4. 提高内存访问效率:虚拟内存通过页面映射技术将磁盘上的页面文件与物理内存进行交换,使得访问磁盘的开销相对较低。此外,虚拟内存还使用了页面置换算法,将最常访问的页面保留在物理内存中,提高了内存访问的速度

虚拟内存怎么实现?

  1. 虚拟内存地址空间划分:操作系统将虚拟内存空间分为固定大小的页面(通常为4KB)。每个进程都有自己的虚拟地址空间,它是连续且相同大小的页面的集合

  2. 页面映射:操作系统负责将虚拟地址映射到物理地址。通过页表,虚拟地址被转换为对应的物理地址。当进程访问虚拟内存中的一个页面时,操作系统会根据页表查找该页面对应的物理地址

  3. 页面置换:当物理内存不足时,操作系统需要将部分页面从内存中置换到硬盘上的页面文件中。选择被置换的页面通常使用一些页面置换算法来决定,如FIFO、LRU等。被置换的页面需要写回到磁盘,并在需要时进行页面加载

  4. 页面加载:当需要访问被置换出去的页面时,操作系统将其从硬盘加载到物理内存中。这包括从页面文件中读取页面数据,并更新页表以反映页面的物理内存位置

  5. 内存分配和回收:操作系统负责管理物理内存的分配和回收。当进程申请内存时,操作系统会为其分配一些物理页面,并更新页表以映射到对应的虚拟地址。当进程释放内存时,操作系统会将相应的物理内存页面标记为可用

http://www.lryc.cn/news/173480.html

相关文章:

  • 浅谈SpringMVC的请求流程
  • 2309json.nlohmann数格示例1
  • 你知道 delete 删除属性时的一些细节吗?
  • Blender入门——快捷键
  • 实例讲解Spring boot动态切换数据源
  • 调整网络时需要注意的事项
  • OpenCV自学笔记二十二:绘图及交互
  • 【自学开发之旅】Flask-会话保持-API授权-注册登录
  • 数据结构与算法--排序算法复习
  • python随手小练1
  • gym_unity学习笔记
  • (三十)大数据实战——HBase集成部署安装Phoenix
  • 【Python基础】S01E03 元组
  • 【算法-双指针思想】
  • uni-app实现点击复制按钮 复制内容
  • Qt5开发及实例V2.0-第十四章-Qt多国语言国际化
  • 嵌入式网络接口之MAC芯片与PHY芯片
  • 在华为云服务器上CentOS 7安装单机版Redis
  • 01_Bootstrap基础组件01
  • Java:OGNL对象图导航语言基本使用示例
  • 中科院预警名单
  • Qt QCustomPlot介绍
  • 什么是CORS(跨源资源共享)?如何解决前端中的CORS问题?
  • C 初级学习笔记(基础)
  • Nodejs 相关知识
  • 【vue+elementUI】输入框样式、选择器样式、树形选择器和下拉框样式修改
  • JavaScript - canvas - 放大镜
  • PY32F003F18之输入捕获
  • 科目三基础四项(一)
  • C语言入门Day_24 函数与指针