计算机操作系统--内存管理(下)

一、页表

页表是虚拟内存系统用来储存逻辑地址和物理地址之间映射的数据结构。CPU为进程页面生成逻辑地址,因此它们通常由进程使用。物理地址是存储器的实际帧地址。它们通常由硬件或更具体地由RAM子系统使用。CPU始终通过其逻辑地址访问进程。

二、从页表映射到主内存

在操作系统中,总是需要从逻辑地址映射到物理地址。

1.生成逻辑地址

CPU为进程的每个页面生成逻辑地址。这包含页码和偏移量。

2.缩放

要确定进程的实际页码,CPU将页表基地存储在特殊的寄存器中。每次生成地址时,都会将页表基数的值添加到页码中,以获取表中页表项的实际位置。这个过程称为缩放。

3.生成物理地址

所需页面的帧号由其在页面表中的条目确定。生成的物理地址包含:帧号和偏移量,因此它将从逻辑地址复制。

4.获取实际的帧数

帧号和来自物理地址的偏移量被映射到主存储器以获得实际的字地址。

三、页表项

除了页表帧号之外,页面表还包含一些表示关于页面的额外信息的位。

1.禁用高速缓存

有时候,最接近CPU的信息和最接近用户的信息之间存在差异。 操作系统总是希望CPU尽快访问用户的数据。 CPU访问某些情况下可能不准确的缓存,因此,操作系统可以禁用所需页面的缓存。 如果缓存被禁用,则该位被设置为1。

2.引用

如果页面在最后一个时钟周期被引用,则该位被设置为1,否则它保持为0

3.修改

如果页面已被修改,则该位将被设置,否则它将保持为0。

4.保护

保护字段表示在页面上应用的保护级别。 它可以只读或读写和执行。 需要记住它不是一个点,而是一个包含许多比特的字段。

5.存在/缺席

在请求分页的概念中,所有页面不需要存在于主存储器中。因此,对于存在于主存储器中的所有页面,该位将被设置为1,并且该位对于所有不存在的页面。
如果某个页面不在主内存中,则称为页面错误。

四、虚拟内存

虚拟内存是一种解决方案,为用户提供了一个拥有非常大的主内存的幻觉。这通过将辅助存储器的一部分作为主存储器完成的。这种方案,用户可以加载比可用主存更大的进程,因为存在内存可用于加载进程的错觉。操作系统不是在主内存中加载一个大进程,而是在主内存中加载多个进程的不同部分。通过这样了,多程序程度将会增加,因此CPU利用率也会增加。

按需分页

这是虚拟内存管理的一种流行方法。在需求分页中,最少使用的进程页面存贮在辅助存储器中。当需求发生或发生页面错误时,页面会被复制到主存储器。有各种页面替换算法用于确定将被替换的页面。

优点

<1>多程序的程度将会增加
<2>用户可以用较少的真实RAM运行大型应用程序
<3>不需要购买更多的内存RAM

缺点

<1>由于交换需要时间,系统变慢
<2>切换应用程序需要更多时间
<3>用户将有较小的硬盘空间供其使用

五、后备缓冲器

寻呼的缺点

<1>页表的大小可能非常大,因此浪费了主存
<2>CPU将花费更多的时间从主存储器中读取单个字

如何减少页面大小

<1>页面大小可以通过增加页面大小来减小,但会导致内部碎片,并且也会导致页面浪费
<2>其他方式是使用多级分页,但增加了有效访问时间,因此这不是一个实际的方法

如何减少有效的访问时间

<1>CPU可以使用一个寄存器,里面存储页表,这样访问页表的访问时间可以变得非常少,但是寄存器并不便宜,并且与页面大小相比非常小,因此这也不是实用的方法。
<2>为了克服分页中的这些缺点,我们寻找一种比寄存器便宜并且比主存更快的存储器,以便CPU可以一次又一次的访问页表所需的时间可以减少,并且它只能聚焦访问实际的单词。

参考地点

在操作系统中,引用局部性的概念表明,OS不能将整个进程加载到主存储器中,而只能加载主存储器中经常由CPU访问的那些页面数量,以及OS也可以仅加载那些对应于那些许多页面的页表项。

转换后备缓冲器(TLB)

可将转换后备缓冲区定义为内存缓存,可用于减少一次又一次访问页表所需的时间,它是一个更靠近CPU的内存缓存,CPU访问TLB所用的时间少于访问主内存所花费的时间。TLB比主内存更快更小,但比寄存器便宜,更大。

<1>如果TLB命中率提高,有效访问时间将会减少

<2>在多级寻呼的情况下,有效的访问时间将会增加。

六、按需分页

根据虚拟内存概念,要执行某个过程,只需要在主内存中存在一部分过程,这意味着在任何时候只有少数几页才会出现在主内存中。但是决定哪些页面需要保护在主存储器中,哪些页面需要保护在辅助存储器中,这很困难,所以按需分页建议将所有帧的页面保留在辅助存储器中,直到它们被需要为止。

什么是页面错误

如果引用的页面不存于主内存中,那么将会有一个未命中的概念被称为页面遗漏或页面错误。CPU必须从辅助存储器访问遗漏页面。如果页面错误的数量非常多,那么系统的有效访问时间将变得非常高。

什么是抖动

如果页面错误数量等于参考页面的数量或者页面错误的数量如此之高以致CPU在从辅助存储器读取页面时仍然忙,则有效访问时间将是CPU从辅助存储器读取一个字。这个概念被称为抖动。

转换页表

转换页表是由操作系统为所有进程维护的全局页表。在转换页表中,条目数等于主存储器中的帧数。他可以用来克服页表的缺点。无论是否存在于主存储器中,总是为页表保留一个空间。但是如果页面不存在,这只是内存的浪费。

七、页面替换算法

页面替换算法决定哪个内存页面将被替换。 替换过程有时称为换出或写入磁盘。在主存储器中找不到请求的页面时(页面错误),完成页面替换。

虚拟内存有两个主要方面,即帧分配和页面替换。 拥有最佳的帧分配和页面替换算法是非常重要的。 帧分配全部是关于将多少帧分配给进程,而页面替换则是确定需要替换的页码,以便为请求的页面留出空间。

如果算法不是最优的

<1>如果分配给进程的帧数量不够或不准确,则可能会出现抖动问题。 由于缺少帧,大部分页面将驻留在主内存中,因此会出现更多页面错误。但是,如果操作系统将更多的帧分配给进程,则可能会出现内部碎片。

<2>如果页面替换算法不是最优的,那么也会出现抖动问题。 如果在不久的将来会引用被请求的页面替换的页面数量,那么将会有更多的插入和换出数量,因此操作系统必须执行更多的替换操作,这会导致性能不足。

页面替换算法的类型

<1>最佳页面替换算法- 这种算法取代了将来不会被引用的页面。 虽然它不能实际实行,但可以用作基准。 其他算法在最优性方面与此相比较。

<2>(LRU)页面替换算法- 该算法替代长时间未被引用的页面。 该算法与最佳页面替换算法相反。

<3>FIFO - 在这个算法中,维护一个队列。 首先分配帧的页面将首先被替换。 换句话说,在队列稀有端的页面将被替换为每个页面错误。

Belady异常

在LRU和最佳页面替换算法的情况下,可以看出,如果增加帧数,页面错误的数量将会减少。 然而,Balady发现,在FIFO页面替换算法中,随着帧数的增加页面错误的数量会增加。

在某些情况下,这是FIFO算法显示的奇怪行为。 这一个异常称为Belady异常。

八、分段

在操作系统中,分段是一种内存管理技术,其中内存分为可变大小的部分。 每个部分被称为可以分配给进程的段。
有关每个段的详细信息存储在称为段表的表中。 分段表存储在一个或多个分段中。
分段表包含两个信息:
<1>基:它是细分分段的基地址
<2>限制:它是分段的长度。

为什么需要分段

到目前为止,我们使用分页作为主要内存管理技术。 分页更接近操作系统而不是用户。 它将所有进程划分为页面形式,而不管进程是否具有需要在同一页面中加载的某些相关功能部分。

操作系统不关心用户对过程的看法。 它可以将相同的功能划分为不同的页面,这些页面可以或不可以同时加载到存储器中。 它降低了系统的效率。

逻辑地址按段表转换为物理地址

CPU产生一个包含两部分的逻辑地址
<1>分段号
<2>偏移量

分段号被映射到段表。 将各段的限制与偏移进行比较。 如果偏移量小于极限值,则地址有效,否则由于地址无效而引发错误。
在有效地址的情况下,该段的基地址被添加到偏移量以获得主存储器中实际字的物理地址。

分段的优势

<1>没有内部碎片
<2>平均分段大小大于实际页面大小
<3>较小开销
<4>重定位段比整个地址空间更容易
<5>与分页中的页表相比,分段表更小

分段的缺点

<1>它可以有外部碎片
<2>很难将连续内存分配给可变大小的分区
<3>昂贵的内存管理算法

分页与分段的比较

在这里插入图片描述

分段的分页

纯粹的分段并不是很流行,并没有被许多操作系统所使用。 但是,分段可以与分页结合使用,以从两种技术中获得最佳功能。

在分段的分页中,主存储器被分成可变大小的段,它们被进一步分成固定大小的页面。

<1>页面比分段小
<2>每一个段都有一个页面,这意味着每个程序都有多个页
<3>逻辑地址表示为分段号(基地址),页码和页面偏移量。

分段号 → 它指向相应的分段号。
页码 → 它指向分段中的确切页面。
页面偏移 → 用作页面帧内的偏移量。

逻辑地址到物理地址的转换

CPU产生一个分为两部分的逻辑地址:分段号和分段偏移。 分段偏移必须小于分段限制量。 偏移量进一步分为分页码和分页偏移量。 为了映射页表中的确切分页码,分页码被添加到页表基地中。

分段分页的优点

<1>它减少了内存使用量
<2>分页表大小受到分段大小的限制
<3>分段表只有一个对应于一个实际分段的条目
<4>外部碎片不存在
<5>它简化了内存分配

分段分页的缺点

<1>内部碎片将在哪里
<2>与分页相比,分段复杂度要高的多
<3>分页表需要连续存储在内存中。

猜你喜欢

转载自blog.csdn.net/qq_52269550/article/details/117225710
今日推荐