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

操作系统(8)虚拟内存-Linux虚拟内存系统

一个虚拟内存系统要求硬件和内核软件之间的紧密协作。

8. Linux 虚拟内存区域

Linux 将虚拟内存组织成一些区域(也叫做段)的集合。一个区域(area)就是已经存在着的(已分配的)虚拟内存的连续片(chunk),这些页是以某种方式相关联的。例如,代码段、数据段、堆、共享库段,以及用户栈都是不同的区域。每个存在的虚拟页面都保存在某个区域中,而不属于某个区域的虚拟页是不存在的,并且不能被进程引用。区域的概念很重要,因为它允许虚拟地址空间有间隙。内核不用记录那些不存在的虚拟页,而这样的页也不占用内存、磁盘或者内核本身中的任何额外资源。

图 9-27 强调了记录一个进程中虚拟内存区域的数据结构。内核为系统中的每个进程维护一个单独的任务结构(源代码中的 task_struct)。任务结构中的元素包含或者指向内核运行该进程所需要的所有信息(例如,PID、指向用户栈的指针、可执行目标文件的名字,以及程序计数器)。

任务结构中的一个条目指向 mm_struct,它描述了虚拟内存的当前状态。我们感兴趣的两个字段是 pgd 和 mmap,其中 pgd 指向第一级页表(页全局目录)的基址,而 mmap 指向一个 vm_area_structs(区域结构)的链表,其中每个 vm_area_structs 都描述了当前虚拟地址空间的一个区域。当内核运行这个进程时,就将 pgd 存放在 CR3 控制寄存器中。

为了我们的目的,一个具体区域的区域结构包含下面的字段:

  • vm_start:指向这个区域的起始处。
  • vm_end:指向这个区域的结束处。
  • vm_prot:描述这个区域内包含的所有页的读写许可权限。
  • vm_flags:描述这个区域内的页面是与其他进程共享的,还是这个进程私有的(还描述了其他一些信息)。
  • vm_next:指向链表中下一个区域结构。
http://www.dtcms.com/a/546212.html

相关文章:

  • 淘宝联盟怎样做新增网站推广好用的网站后台
  • 上海个人网站建设网站建设源码下载
  • 数字孪生深度长文学习
  • 太原网站建设推广番禺人才网官网入口
  • 简单网站建设哪家便宜泰州模板建站
  • CSP-J_S 认证详细 与NOI
  • 旅游网站设计方案怎么做网站建设颐高上海街
  • Nof1.ai 的开源复刻版:让 AI 成为你的量化交易员(附提示词模板)
  • PyTorch实战——从零搭建CV模型
  • 专业的网站制作公司地址设计培训学校
  • 每日算法刷题Day81:10.29:leetcode 回溯5道题,用时2h
  • 地产金融网站开发郑州七彩网站建设公司 概况
  • 南宁市住房城乡建设厅网站温州建设局老网站
  • 商城设计app网站建设柚段子wordpress文章
  • YOLO-World: Real-Time Open-Vocabulary Object Detection论文阅读
  • 深度学习视角下的图像分割
  • Android InputReader与InputDispatcher
  • 周口河南网站建设企业建站系统价格
  • 网站做qq发送链接网页设计与制作哪家公司好
  • 常州云计算网站建设做教育视频网站用什么平台好
  • 软件外包公司有哪些长沙专业竞价优化公司
  • 柯桥区交通投资建设集团网站比较顺口的公司名字
  • 去掉博客网站链接后面的wordpress深圳品牌男装有哪些
  • 网站开发组合免费无版权图片网站
  • 什么是单页面网站哈尔滨做网站数据平台的公司
  • 企业网站.net网站开发后所有权
  • 基于pthread库 的 线程封装
  • Vue.js 循环语句
  • SourceForge 节点介绍
  • 合肥门户网站有哪些做推广一般那些网站比较好