📜  分页分段和分段分页

📅  最后修改于: 2021-08-27 17:58:03             🧑  作者: Mango

先决条件:分页分段不同的黑白分页和分段

单级分页的主要局限性
单级分页的一个很大挑战是,如果逻辑地址空间很大,则分页表可能会占用主内存中的大量空间。例如,假设逻辑地址为32位,每页为4 KB,则页数将为2 ^ 20页。没有附加位的页表的大小为20位* 2 20或2.5 MB。由于每个进程都有自己的页表,因此在使用单级分页时将消耗大量内存。对于具有64位逻辑地址的系统,即使是单个进程的页表也无法放入主存储器中。对于具有较大逻辑地址空间的进程,其许多页表条目都是无效的,因为许多逻辑地址空间都未使用。

页表中的条目无效

分段分页
解决此问题的方法是将分段与分页一起使用以减小页表的大小。传统上,程序分为四个段,即代码段,数据段,堆栈段和堆段。

流程段

通过为每个段创建一个页表,可以减小页表的大小。要完成此硬件支持是必需的。现在,CPU提供的地址将被划分为段号,页号。和偏移量。

内存管理单元(MMU)将使用段表,该段表将包含页表(基本)的地址和限制。页表将指向主存储器中各段的页框。

分段分页

分段分页的优点

  1. 由于页仅用于段的数据,因此减小了页表的大小,从而减少了内存需求。
  2. 给出了程序员的观点以及分页的优点。
  3. 与分段相比,减少了外部分段。
  4. 由于不需要将整个段换出,因此换出到虚拟内存变得更加容易。

分段分页的缺点

  1. 内部碎片仍然存在于页面中。
  2. 需要额外的硬件
  3. 转换变得更加连续,从而增加了内存访问时间。
  4. 在当今的系统中,由于页表大小的变化和段表大小的变化,导致出现外部碎片。

分页细分

  1. 在分段分页中,并非每个进程都具有相同数量的分段,并且分段表的大小可能很大,这会由于分段表大小的变化而导致外部碎片。为了解决这个问题,我们使用分页分割,这需要对分页表进行分页。现在,CPU生成的逻辑地址将由第1页,段号,第2页和偏移量组成。
  2. 即使具有分段分页的页表也可以具有许多无效页。代替将多级分页与分段分页一起使用,可以通过直接应用多级分页而不是分段分页来解决较大页表的问题。

分页细分

分页细分的优势

  1. 没有外部碎片
  2. 减少内存需求(否)。的页面限制为段大小。
  3. 页表的大小较小,就像分段式分页一样,
  4. 与分段分页类似,不需要将整个分段换出。

分页细分的缺点

  1. 内部碎片仍然是一个问题。
  2. 硬件比分段分页要复杂。
  3. 在第一阶段额外的分页级别增加了内存访问的延迟。