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

资讯平台网站模板企业网站建设的实验报告

资讯平台网站模板,企业网站建设的实验报告,阜阳企业做网站,网站域名自动跳转目录 一、前言 二、深入理解页表 三、页表的实际组成 四、总结#xff1a; 一、前言 页表是我们之前在讲到程序地址空间的时候说到的#xff0c;它是物理内存到进程程序地址空间的一个桥梁#xff0c;通过它物理内存的数据和代码才能映射到进程的程序地址空间中#xff…目录 一、前言 二、深入理解页表 三、页表的实际组成 四、总结 一、前言 页表是我们之前在讲到程序地址空间的时候说到的它是物理内存到进程程序地址空间的一个桥梁通过它物理内存的数据和代码才能映射到进程的程序地址空间中在信号这一节我们又提到了内核空间的页表讲到了该内核级页表不同于前面说的用户级页表是每个进程都有的内核级页表整个系统只有一份。 但是之前我们对页表的理解还都处于一个比较简单的层面事实上页表的实现还是比较复杂的这次我们深入理解一下页表的构成及其功能。 二、深入理解页表 这是我们之前所理解的简化版的页表 我们将页表的映射功能抽象成了两栏 实际上页表并不只有简单的两栏其比较复杂且不是用一张表就可以表述出来的。 为了方便理解我们暂且对复杂的页表结构做简单抽象以一级页表来表示 物理地址和虚拟地址我们都已经知道了是什么了剩下三栏中都分别代表什么呢 1、RWX权限我们知道Linux中一切皆文件这里即我们所熟知的读、写、执行权限表示的是进程对物理内存的访问权限 。我们直到硬件是不具备有访问控制能力的也就是谁都可以对硬件进行读写但是得益于操作系统为了安全性软件限制了我们的访问。 2、U/K权限U表示UserK表示Kernel,即表示的用户和内核就是在内核中的信号一篇中提到的用户态和内核态用以区分访问内存的用户权限和内核权限。 3、是否命中当CPU需要访问指定内存的数据的时候会用虚拟地址通过页表向物理内存中查询数据。但是程序中的数据不是一下子全部加载到物理内存的即页表中可能不存在指定的物理内存所以CPU需要访问数据的时候可能会存在一次找不到的情况称为 未命中。 当CPU访问数据没有命中时整个进程会从CPU上拉下来 先不运行接着操作系统会将未命中的数据从磁盘程序中加载到指定的物理内存中然后CPU才会再次运行此进程。 所以是否命中这一栏其实是 表示的是此次CPU访问数据是否在物理内存中找到了。 这种进程数据不一次性加载到物理内存的机制, 是因为进程地址空间的存在才存在的. 可以允许进程在使用指定数据或代码的时候才将代码和数据真正加载到物理内存中. 这样可以更有效地利用内存资源 我们知道了CPU从虚拟地址到物理内存的数据查询机制下面看一下页表是以什么形式存在的。 三、页表的实际组成 我们以32位环境为例即进程地址空间和物理内存最大都为4GB如果使用一级页表即只使用一张页表想要将虚拟地址空间和物理地址一一对应下来这个页表需要储存多少行条目 如果页表的一行只表示一个地址那么32位的计算机就有着2的32次方个地址然而页表中的一行不止存储一个地址至少有两个且在32位环境下地址的大小为4字节所以页表中一行条目的大小是8个字节要存储所有的地址的话这个页表得有多大呢2^32 * 8 34,359,738,368单位是字节一共是32GB而我们的物理内存最大才是4GB.很明显以一级页表来将虚拟内存对应的物理内存全部映射到是不可能的。 所以事实上在操作系统中的页表是多级页表在32位系统中采用的是两级页表的形式。 在对二级页表做介绍之前我们先来补充一些概念 在32位环境下物理内存和虚拟地址空间大小都是4GB同时在CPU访问数据时提供的虚拟地址也就是32位的。虚拟地址和物理地址的映射需要通过页表来完成CPU需要有能力提供覆盖 所有物理地址内存的地址32位环境下就是32位进制虽然CPU给页表提供的虚拟地址是32位的但是却不是直接将32位作为一个整体在页表中查找物理地址的。而是将32位二进制分为了 101012的形式。即 虚拟地址和物理地址在32位系统中虚拟地址和物理地址的空间都是4GB。虚拟地址的处理虽然虚拟地址是32位的CPU在查找物理地址时并不会直接使用整个32位地址而是将其拆分成三段。地址拆分的方式虚拟地址被分为三部分前两部分各有10位最后一部分有12位。这样做是为了有效地在内存中查找和映射物理地址。 // CPU提供的32位二进制地址 // 会分为10、10、12位的三部分来进行查找 0000 0000 00 0000 0000 00 0000 0000 0000 xxxx xxxx xx yyyy yyyy yy zzzz zzzz zzzz事实上CPU以这样的形式查找物理内存是因为页表设计形式是下面这样的 32位环境下也表映射的实现使用的是二级页表情况如下 可以看到在二级页表中出现了page这一框这个page又是什么呢 在之前我们介绍Linux的文件系统的时候讲到 操作系统的I/O操作的基本单位通常都是4KB为了方便操作操作系统也会以4KB为单位的大小来管理内存即操作系统会将物理内存以4KB位基本单位并将其称为页或者页框也就是这里的 page 。除了物理内存之外磁盘中的程序在进行编译的时候也是按照4KB为单位划分好的程序中的4KB单位被称为 页帧。 那么操作系统对于程序地址空间也是按照4KB为基本单位进行管理的。  Linux内核中的page是一个结构体如下 所以4GB的内存是 4*1024*1024*1024 字节4KB大小是 4*1024 字节所以说操作系用中会存在着 1024*1024个page ,所以为了方便管理操作系统会将这些page统一以一个数据结构维护起来最终对于内存的管理其实就是对于此数据结构的管理。 所以CPU对于物理内存的查找实际上是这样的 首先使用的是虚拟地址的最高的10位在页目录中查找到对应的页表的地址再通过该地址查找到对应的页表。接着通过虚拟地址的中间的10位查找对应的page的起始地址这个page的起始地址其实就是个真实的物理地址找到的就是物理内存中的一页page。最后虚拟地址的最后12位起到的是一个偏移量的作用我们称虚拟地址的最后12位为 页内偏移量。所以我们找到page的起始地址将虚拟地址的最低12位作为偏移量就能够找到一个准确的物理地址。 但是这个虚拟地址的最后12位可以刚好覆盖完一个page的全部地址吗我们可以计算一下page的大小是4KB即4*10244*2^102^12,而虚拟地址的最低12位刚好可以覆盖到page的全部地址。 四、总结 1、进程虚拟地址和物理内存的解耦 在二级页表中每个页表条目记录的是页面page的位置未加载的页面会存储为null。当程序的数据没有加载到某个页面时CPU查找时就会发生“未命中”情况。这意味着CPU在查找物理内存时不关心页面的内容只关心该页面是否存在。程序的数据是以页面为单位加载到内存中的。通过页表虚拟地址和物理内存之间实现了解耦。虚拟地址到物理地址的转换过程中只能判断物理地址是否存在而不会涉及具体的数据内容。 2、页表设计的优点 节省内存 如果使用一级页表整个4GB的内存地址空间都需要为每个页面创建一个对应的页表项这会占用大量内存。而使用多级页表页目录的大小一般为KB级别且由于第二级页表是按需创建的因此只在需要时才分配内存。这样可以显著节省内存。最坏情况下内存占用也只是MB级别。 方便管理 多级页表的结构类似于一颗多叉树。第一层页表页目录指向第二层页表第二级页表就像树的节点一样可以按需创建、删除和管理。这种结构使得管理更加灵活和高效尤其是当内存需求不均匀时可以动态分配和释放内存。
http://www.dnsts.com.cn/news/52483.html

相关文章:

  • 建设网站需要哪些域名开发一套软件app
  • 杭州市萧山区市场建设开发网站列举网免费发布信息网
  • 网站络全网关键词搜索排行
  • 商丘哪里做网站比较好怎样做农产品交易平台网站
  • 邢台建设网站公司wordpress网站布局
  • 刚备案的域名如何做网站柒比贰wordpress主题
  • 怎么做 代刷网站建设云企业服务平台
  • wordpress建站 网盘视频教程重庆高端网站建设公司
  • 南京网站开发长春手机网站
  • 爱网站搭建免费做团购网站的软件有哪些
  • 临沂网站建设推广重庆网站设计开发培训学校
  • 免费做网站软件2003化妆品网站的搭建
  • 黄页推广服务seo优化排名营销
  • 高端手机网站定制政务信息系统网站建设规范
  • 展示型网站建哪个兄弟给个地址呀
  • 怎么做网站省钱wordpress 主题 小说
  • 1元云购网站怎样建设wordpress手机端在哪里调
  • 郑州汽车网站建设哪家好comment_form wordpress
  • 黄石网站设计制作公司乡村建设相关网站
  • 都芳漆中文网站建设湘潭做网站
  • 自助建站平台有哪些商标与logo的区别
  • 中国搜索引擎市场份额北京seo网站推广费用
  • 网站建设研究课题软件制作器手机版下载
  • 深圳大型网站建设服务公司上海最新新闻
  • 制作网站系统大棚网站怎么做
  • 关于征求网站建设的通知网站建设的频道是什么
  • 北京网站平台建设公司做卷皮网类似网站
  • 滕州网站建设制作dux2.0支持Wordpress
  • 有没有做q版头像的网站什么是网站版式
  • 个人网站收款问题个人域名备案完成了 可以改网站内容吗