怎么分页,怎么将内容分页

分段允许进程的物理地址空间是非连续的。分页是提供这种优势的另一种内存管理方案。然而,分页避免了外部碎片和紧缩,而分段不可以。分页还避免了将不同大小的内存块匹配到交换空间的问题,在分页引入之前采用的内存

分段允许进程的物理地址空间是非连续的。分页是提供这种优势的另一种内存管理方案。然而,分页避免了外部碎片和紧缩,而分段不可以。分页还避免了将不同大小的内存块匹配到交换空间的问题,在分页引入之前采用的内存管理方案都有这个问题。由于比早期方法更加优越,怎么将内容分页,各种形式的分页为大多数操作系统采用,包括大型机的和智能手机的操作系统。实现分页需要操作系统和计算机硬件的协作。

基本方法

实现分页的基本方法涉及将物理内存分为固定大小的块,称为帧或页帧,而将逻辑内存也分为同样大小的块,称为页或页面。当需要执行一个进程时,它的页从文件系统或备份存储等处,加载到内存的可用帧。备份存储划分为固定大小的块,它与单个内存帧或与多个内存帧(簇)的大小一样。这个相当简单的方法功能强且变化多。例如,逻辑地址空间现在完全独立于物理地址空间,因此,一个进程可以有一个64 位的逻辑地址空间,而系统的物理内存小于 2^64 字节。

分页的硬件支持

点击布局,选择分隔符。点击分页符,这样即可在光标位置插入分页符。分页符是分页的一种符号,上一页结束以及下一页开始的位置。MicrosoftWord可插入一个"自动"分页符(或硬分页符),或者通过插入"手动"分页符(或软分页符)在。

逻辑内存和物理内存的分页模型

页大小(与帧大小一样)是由硬件来决定的。页的大小为2的幂;根据计算机体系结构的不同,页大小可从 512字节到1GB不等。将页的大小选为 的幂可以方便地将逻辑地址转换为页码和页偏移。如果逻辑地址空间为 2^m,且页大小为 2^n 字节,那么逻辑地址的高 m-n 位表示页码,而低 n 位表示页偏移。这样,逻辑地址就如下图所示:

其中 p 作为页表的索引,而 d 作为页的偏移。

使用4字节的页对32字节的内存进行分页的例子

例如,假设如上图所示的内存。这里,逻辑的地址的n为2,m为4。采用大小为4字节而物理内存为32字节(8 页),下面说明程序员的内存视图如何映射到物理内存。逻辑地址0的页码为0,页偏移为0。根据页表,可以查到页码0对应帧5,因此逻辑地址0映射到物理地址20((5X4) + 0)。逻辑地址3(页码为0,页偏移为3)映射到物理地址23((5X4)+ 3)。逻辑地址4 的页码为1,页偏移为0,根据页表,页码1对应为帧6。因此,逻辑地址4映射到物理地址24((6X4) + 0)。逻辑地址13映射到物理地址9。分页本身是一种动态的重定位。每个逻辑地址由分页硬件绑定为某个物理地址。采用分页类似于采用一组基址(重定位)寄存器,每个基址对应着一个内存帧。采用分页方案不会产生外部碎片:每个空闲帧都可以分配给需要它的进程。不过,分页有内部碎片。注意,分配是以帧为单位进行的。如果进程所要求的内存并不是页的整数倍,那么最后一个帧就可能用不完。

例如,如果页的大小为 2048字节,一个大小为72776 字节的进程需要35个页和1086字节。该进程会得到36个帧,因此有2048-1086 = 962字节的内部碎片。在最坏情况下,一个需要n页再加1字节的进程,需要分配n + 1个帧,这样几乎产生整个帧的内部碎片。如果进程大小与页大小无关,那么每个进程的内部碎片的均值为半页。从这个角度来看,小的页面大小是可取的。不过,由于页表内的每项也有一定的开销,该开销随着页的增大而降低。再者,磁盘 I/O 操作随着传输量的增大也会更为有效。

通常,对于32位的CPU,每个页表条目是4字节长的,但是这个大小也可能改变。一个32位的条目可以指向 2^32个物理帧中的任一个。如果帧为4KB(2^12),那么具有4字节条目的系统可以访问2^44字节大小(或16TB)的物理内存。这里我们应该注意到,分页内存系统的物理内存的大小不同于进程的最大逻辑大小。当进一步探索分页时,我们将引入其他的信息,这个信息应保存在页表条目中。该信息也减少了可用于帧地址的位数。因此,一个具有32位页表条目的系统可访问的物理内存可能小于最大值。32位CPU采用32位地址,意味着,一个进程的空间只能为2^32字节(4GB)。因此,分页允许我们使用的物理内存大于CPU地址指针可访问的空间。当系统进程需要执行时,它将检查该进程的大小(按页来计算),进程的每页都需要一帧。因此,如果进程需要n页,那么内存中至少应有n个帧。如果有,那么就可分配给新进程。进程的第一页装入一个已分配的帧,帧码放入进程的页表中。下一页分配给另一帧,其帧码也放入进程的页表中

空闲帧

硬件支持

每个操作系统都有自己的保存页表的方法。有的为每个进程分配一个页表。页表的指针,与其他寄存器的值(如指令计数器),一起存入进程控制块。当分派器需要启动一个进程时,它应首先加载用户寄存器,并根据保存的用户页表来定义正确的硬件页表值。其他操作系统提供一个或多个页表,以便减少进程的上下文切换的开销。页表的硬件实现有多种方法,最为简单的一种方法是将页表作为一组专用的寄存器来实现。由于每次访问内存都要经过分页映射,因此效率是一个重要的考虑因素,这些寄存器应用高速逻辑电路来构造,以高效地进行分页地址的转换。CPU分派器在加载其他寄存器时,也需要加载这些寄存器。当然,加载或修改页表寄存器的指令是特权的,因此只有操作系统才可以修改内存映射表

如果页表比较小(例如256个条目),那么页表使用寄存器还是令人满意的。但是,大多数现代计算机都允许页表非常大(例如 100 万个条目)。对于这些机器,采用快速寄存器来实现页表就不可行了。因而需要将页表放在内存中,并将页表基地址寄存器(PTBR)指向页表。改变页表只需要改变这一寄存器就可以,这也大大降低了上下文切换的时间。采用这种方法的问题是访问用户内存位置的所需时间。如果需要访问位置i,那么应首先利用PTBR的值,再加上i的页码作为偏移,来查找页表。这一任务需要内存访问。根据所得的帧码,再加上页偏移,就得到了真实物理地址。接着就可以访问内存内的所需位置。采用这种方案,访问一个字节需要两次内存访问(一次用于页表条目,一次用于字节),内存访问的速度就减半。在大多数情况下,这种延迟是无法忍受的,我们还不如采用交换机制!这个问题的标准解决方案是采用专用的、小的、查找快速的高速硬件缓冲,它称为转换表缓冲区(TLB)。TLB是关联的髙速内存。TLB条目由两部分组成:键(标签)和值。当关联内存根据给定值查找时,它会同时与所有的键进行比较。如果找到条目,那么就得到相应值的字段,搜索速度很快。现代的TLB查找硬件是指令流水线的一部分,基本上不添加任何性能负担。为了能够在单步的流水线中执行搜索,TLB不应大,通常它的大小在 32〜1024 之间。有些 CPU 采用分开的指令和数据地址的 TLB。这可以将 TLB 条目的数量扩大一倍,因为查找可以在不同的流水线步骤中进行。通过这个演变,我们可以看到 CPU 技术的发展趋势:系统从没有TLB发展到具有多层的TLB,与具有多层的高速缓存一样。

TLB 与页表一起使用的方法如下,TLB 只包含少数的页表条目。当CPU产生一个逻辑地址后,它的页码就发送到 TLB。如果找到这个页码,它的帧码也就立即可用,可用于访问内存。如上面所提到的,这些步骤可作为 CPU 的流水线的一部分来执行;与没有实现分页的系统相比,这并没有减低性能。如果页码不在 TLB 中(称为TLB未命中),那么就需访问页表。取决于CPU,这可能由硬件自动处理或通过操作系统的中断来处理。当得到帧码后,就可以用它来访问内存(见下图)。另外,将页码和帧码添加到TLB,这样下次再用时就可很快查找到。

带 TLB 的分页硬件

如果 TLB 内的条目已满,那么会选择一个来替换。替换策略有很多,从最近最少使用替换(LRU),到轮转替换,到随机替换等。有的CPU允许操作系统参与LRU 条目的替换,其他的自己负责替换。另外,有的TLB允许有些条目固定下来,也就是说,它们不会从TLB 中被替换。通常,重要内核代码的条目是固定下来的。有的 TLB 在每个TLB 条目中还保存地址空间标识符(ASID)。ASID 唯一标识每个进程,并为进程提供地址空间的保护。当 TLB 试图解析虚拟页码时,它确保当前运行进程的 ASID 与虚拟页相关的 ASID相匹配。如果不匹配,那么就作为 TLB 未命中。除了提供地址空间保护外,ASID 也允许 TLB 同时包括多个不同进程的条目。如果 TLB 不支持单独的 ASID,每次选择一个页表时(例如,上下文切换时),TLB 就应被刷新(或删除),以确保下一个进程不会使用错误的地址转换。否则,TLB 内可能有旧的条目,它们包含有效的页码地址,但有从上一个进程遗留下来的不正确或无效的物理地址。在 TLB 中查找到感兴趣页码的次数的百分比称为命中率。80% 的命中率意味着,有 80% 的时间可以在 TLB 中找到所需的页码。如果需要 100ns 来访问内存,那么当页码在 TLB 中时,访问映射内存需要 100ns。如果不能在 TLB 中找到,那么应先访问位于内存中的页表和帧码(100ns),并进而访问内存中的所需字节(100ns),这总共要花费 200ns。为了求得有效内存访问时间,需要根据概率来进行加权:

有效访问时间=0.80X100 + 0.20X200= 120ns

有效访问时间=0.99X100 + 0.01X200= 101ns

调整Word自动分页属性的步骤为: 1、选定需调整分页状态的段落。 2、执行"格式"菜单中的"段落"命令。 3、从段落对话框中选择"换行和分页"选项卡。 4、在"分页"设置框中对Word自动分页的有关属性进行适当的修改。 主要有以下几个项目。

这种命中率的提高只多了1% 的访问时间。如前所述,现代 CPU 可能提供多级 TLB。因此,现代 CPU 的访问时间的计算,比上面的例子更为复杂。例如,Intel Core i7 CPU 有一个 128 指令条目的 L1 TLB 和 64 数据条目的 L1 TLB。当 L1 未命中时,CPU 花费 6 个周期来检查 L2 的 TLB 的 512 条目。L2 的未命中意味着,CPU 需要通过内存的页表条件来查找相关的帧地址,这可能需要数百个周期,或者通过中断操作系统以完成它的工作。这种系统的分页开销的完整性能分析,需要关于每个 TLB 层次的命中率信息。然而,从这可以看到一条通用规律,硬件功能对内存性能有着显著的影响,而操作系统的改进(如分页)能导致硬件的改进并反过来受其影响。TLB 是一个硬件功能,因此操作系统及其设计师似乎不必关心。但是设计师需要了解TLB的功能和特性,它们因硬件平台的不同而不同。为了优化运行,给定平台的操作系统设计应根据平台的 TLB 设计来实现分页。同样,TLB 设计的改变(例如,在多代 Intel CPU 之间)可能需要调整操作系统的分页实现。

打开Word文档,将光标移动到需要插入分页符的地方。点击布局,选择分隔符。点击分页符,这样即可在光标位置插入分页符。分页符是分页的一种符号,上一页结束以及下一页开始的位置。MicrosoftWord可插入一个"自动"分页符(或硬分。

保护

分页环境下的内存保护是通过与每个帧关联的保护位来实现的。通常,这些位保存在页表中。用一个位可以定义一个页是可读可写或只可读。每次内存引用都要通过页表,来查找正确的帧码;在计算物理地址的同时,可以通过检查保护位来验证有没有对只可读页进行写操作。对只读页进行写操作会向操作系统产生硬件陷阱或内存保护冲突。我们可轻松扩展这种方法,以提供更好的保护级别。我们可以创建硬件来提供只读、读写或只执行保护;或者,通过为每种类型的访问提供单独的保护位,我们可以允许这些访问的任何组合。非法访问会陷入操作系统。还有一个位通常与页表中的每一条目相关联:有效-无效位:

怎么分页

当该位为有效时,该值表示相关的页在进程的逻辑地址空间内,因此是合法(或有效)的页;

怎么分页

当该位为无效时,该值表示相关的页不在进程的逻辑地址空间内。

通过使用有效-无效位,非法地址会被捕捉到。操作系统通过对该位的设置,可以允许或不允许对某页的访问。例如,对于 14 位地址空间(0〜16383)的系统,假设有一个程序,它的有效地址空间为 0〜10468。如果页的大小为 2KB,那么页表如下图 6所示。

页表的有效位(v)或无效位(i)

页 0、1、2、3、4 和 5 的地址可以通过页表正常映射。然而,如果试图产生页表6或7内的地址时,则会发现有效-无效位为无效,这样操作系统就会捕捉到这一非法操作(无效页引用)。注意,这种方法也产生了一个问题。由于程序的地址只到10468,所以任何超过该地址的引用都是非法的。不过,由于对页5的访问是有效的,因此到12287为止的地址都是有效的。只有12288〜16383的地址才是无效的。这个问题是由于页大小为2KB的原因,也反映了分页的内部碎片。一个进程很少会使用它的所有地址空间。事实上,许多进程只用到地址空间的小部分。对这些情况,如果为地址范围内的所有页都在页表中建立一个条目,这将是非常浪费的。表中的大多数并不会被使用,却占用可用的地址空间。有的系统提供硬件,如页表长度寄存器来表示页表的大小,该寄存器的值可用于检查每个逻辑地址以验证其是否位于进程的有效范围内。如果检测无法通过,则会被操作系统捕捉到。

共享页

怎么分页

分页的优点之一是可以共享公共代码。对于分时环境,这种考虑特别重要。假设一个支持 40 个用户的系统,每个都执行一个文本编辑器。如果该文本编辑器包括 150KB 的代码及50KB 的数据空间,则需要 8000KB 来支持这 40 个用户。如果代码是可重入代码或纯代码,则可以共享,如下图 所示。这里有3 进程,它们共享3页的编辑器,这里每页大小为 50KB,每个进程都有它自己的数据页。

点击布局,选择分隔符。点击分页符,这样即可在光标位置插入分页符。分页符是分页的一种符号,上一页结束以及下一页开始的位置。MicrosoftWord可插入一个"自动"分页符(或硬分页符),或者通过插入"手动"分页符(或软分页符)在。

分页环境的代码共享

可重入代码是不能自我修改的代码:它在执行期间不会改变。因此,两个或更多个进程可以同时执行相同代码。每个进程都有它自己的寄存器副本和数据存储,以便保存进程执行的数据。当然,两个不同进程的数据不同。在物理内存中,只需保存一个编辑器的副本。每个用户的页表映射到编辑器的同一物理副本,但是数据页映射到不同的帧。因此,为支持 40个用户,只需一个编辑器副本(150KB),再加上 40 个用户数据空间 50KB,总的需求空间为 2150KB 而非 8000KB,这个节省还是很大的。其他大量使用的程序也可以共享,如编译器、窗口系统、运行时库、数据库系统等。为了共享,代码应可重入。共享代码的只读属性不应由代码的正确性来保证;而应由操作系统来强制实现。系统内进程之间的内存共享,类似于通过线程共享同一任务的地址空间。此外,回想一下,我们将共享内存用于进程间的通信,有的操作系统通过共享页来实现共享内存。

上一篇 2023年01月17 12:55
下一篇 2023年01月23 18:26

相关推荐

  • pos机怎么刷卡,pos机三种刷卡方法

    很多朋友想进入POS行业或者想办理POS机。但是由于不懂又不知道从哪里下手学习。今天小编就为大家分享一下POS机的基础知识。一1、打开pos机电源,输入操作号和相应密码。2、输入完毕来到pos机刷卡界

    2023年02月04 266
  • tcl电视机怎么样

    作为一个家居博主,自己对电视技术、电视市场行情还是比较了解的,平时也经常写电视测评。身边许多亲朋好友还有粉丝,想买电视时都会找到我“免费咨询”。不管什么尺寸什么需求,我都只推荐一个国产品牌,他们入手后

    2023年01月13 216
  • 投影仪怎么用,投影仪怎么看电视节目

    投影仪怎么看电视节目,投影机如今已被广泛应用于学校、会议室、电影院、歌剧院等场所。那么你知道使用投影机的正确操作有哪些吗?下面让小编把它们介绍给你。1、连接电源1)按投影仪或遥控器上的电源按钮启动投影

    2023年02月03 215
  • wps流程图怎么制作,手机wps流程图

    为了满足大家多方面的需求,WPS很早便在电脑版支持了「流程图」绘制。但在后台,常常看到许多用户的求助:简单的有:流程图怎么画?我怎么把连线箭头改变形状?同一个文本框的部分字体可以更改样式吗?难一点的就

    2023年02月05 241
  • 怎样建立微信,如何建立一个微信群

    不知道机友们还记不记得,早在去年10月份,就有媒体曝光了微信将推出「微信小号」的消息。如今时隔近一年,这个功能终于是正式开启了内测。添加的方法也不复杂,如果是被内测到的用户,如何建立一个微信群,那现在

    2023年01月05 297
  • 怎么在闲鱼上卖东西,闲鱼怎么卖电子版资料

    大家好,我是小成哥,一个5年资深闲鱼玩家。新手玩家闲鱼卖货,看这一篇就够了!绝对干货!我会结合我自己同时作为【买家】和【卖家】的视角用最简单易懂的语言,非常清晰的告诉你,第一次在闲鱼卖东西,需要注意

    2023年01月17 283
  • 怎样删除云相册的照片,云空间照片在哪里删除

    最近在网上看到这样一些帖子,vivo何时能出云相册,删除的照片该如何找回?众所周知,现在云数据,云存储等都是当代的新兴科技,不仅可以方便人们的生活,而且还扮演了一项“后悔药”的功能,那么对于一向注重科

    2023年01月06 294
  • 怎么查主板型号,怎么查看自己电脑主板型号

    前言的13代酷睿处理器已经发布有一段时间了,不过目前市面上适配的主板只有高端的Z790系列,想要处理器超频的用户自然不会错过Z790主板,但对于那些想入手13代i3、i5甚至i7非K系列的用户来说,Z

    2023年02月05 205
  • 怎么查看主板,设备管理器怎么看主板型号

    设备管理器怎么看主板型号,我们平时在更新电脑配置的时候可能会用到电脑主板的型号,因为需要考虑到主板和升级的硬件的兼容性问题。但是很多朋友可能对电脑并不是十分的了解,不知道如何查看自己电脑的主板型号,下

    2023年02月03 202
  • 体脂率怎么算,体脂率精准计算器

    体脂率在线计算器,计算公式体脂率是什么:英文为BodyFatRatio,简称为BFR,体脂率精准计算器,又称为体脂百分数,指的是人体内脂肪重量所占的人体总重量的比例。这在一定程度上能够反映人体内脂肪含

    2023年02月04 260
  • 文件夹怎么设密码,文件夹能直接设置密码

    电脑上都存有不少重要文件,文件夹能直接设置密码,有工作上的保密文件,也有生活中的私密文件,反正就是不希望别人看到的文件。那么在管理这些文件上,有什么特别好的方法呢?推荐使用:金舟文件夹加密大师操作步骤

    2023年01月17 200
  • 怎样查宽带是否欠费,有宽带账号怎么查欠费

    有宽带账号怎么查欠费,近日,家住西山区的李女士接到一个陌生电话,电话那头是一个人工语音的声音:“您好,您的宽带已欠费,人工服务请按0。”李女士一听心想是否是自己宽带没扣钱了呢?于是按照提示按了“0”转

    2023年01月03 280
  • 微信公众号id怎么查,微信公众号账号ID是什么

    微信搜一搜的价值被越来越多人看到,同时微信搜一搜也一直是公众号流量来源之一。但不少运营者都曾碰到过公众号搜索不到的情况,近日,西瓜资源会中也有人遇到了这个问题:图|截自西瓜资源会群聊为什么会遇到这种情

    2023年02月03 253
关注微信