目录展示
- 介绍
- 什么是分页?
- 分页的优点
- 分页的缺点
- 什么是分段?
- 细分的优势
- 分段的缺点
- 分页和分段之间的主要区别
- 结论
- 经常问的问题
介绍
分页和分段有什么区别?分页和分段都是操作系统中的内存管理技术。现在,为了理解分页和分段的区别,首先有必要了解内存管理的基础知识。所以让我们快速讨论一下。
内存是我们计算机系统中的存储空间。它被分成大量称为单元格或字节的小部分。每个字节都有自己的地址。在我们的计算机中,我们有两种类型的内存:辅助内存和主内存,即 RAM。众所周知,我们所有的程序都存储在二级存储器中,为了执行它们,我们需要一个 CPU(中央处理单元)。现在,由于速度限制,CPU 没有直接连接到辅助存储器。CPU 连接到主存储器。这就是为什么要运行任何程序,它必须存在于主内存(或 RAM)中。但是CPU的处理速度非常快。并且,为了有效地使用 CPU,需要将越来越多的程序存储到 RAM 中。众所周知,RAM 的大小在我们的系统中要小得多,因为它是一种昂贵的内存。由于体积较小,有效地管理内存非常重要。管理内存是什么意思?当程序进入 RAM 时,它们必须以这样一种方式分配内存,以便可以存储越来越多的程序。在内存管理中,我们在内存中进行分区,以便我们可以将越来越多的程序放入其中,我们也在程序中进行分区以将其存储到内存中。这里的内存是指主内存,即 RAM。
我们有两种类型的内存管理技术:
- 连续内存分配
- 非连续内存分配
分页和分段差异比较:在连续内存分配中,一个程序的所有分区都在主存中分配了连续的内存。在连续分配中,我们有两种类型的分区:固定分区和可变分区。顾名思义,在固定分区中,我们将内存划分为固定大小的插槽。每个分区将具有相同的大小。另一方面,在可变大小分区中,分区大小将取决于程序的大小,并且会动态分配。每当程序进入 RAM 时,我们才会为它们分配空间。如果程序大小为 5 MB,则将在内存中分配 5 MB 的分区。不管分区的类型如何,整个程序将始终只分配连续的内存。此处不允许跨程序。
在非连续内存分配中,不必连续存储程序的所有分区。我们可以在不同的内存分配中存储程序的不同分区。分页和分段都是非连续的内存管理技术。
什么是分页?
在分页内存管理技术中,我们将程序划分为固定大小相等的页面,并将主内存(RAM)划分为固定大小相等的帧。每个页面的大小将始终等于每个框架的大小。因此,流程的一页将完全适合框架。当一个程序到达系统供CPU执行时,会检查其大小,以页数表示。流程的每一页都需要一个框架来存储。因此,如果程序被分成 n 页,那么主存储器中必须至少有 n 个空闲帧可用。如果有 n 个帧可用,则将它们分配给这个新到达进程的页面。程序的第一页被加载到一个分配的帧中,帧号被添加到这个过程的页表中。
分页和分段有什么区别?在连续内存分配中,我们遇到了外部碎片的问题。现在,外部碎片是一种条件,当我们在内存中有足够的空间来满足请求但空闲空间分散在各处时,即,它不是连续的。自由空间被分割成大量的小孔。由于分页是一种非连续的内存分配技术,它解决了外部碎片的问题。但是随着外部分片,它也解决了compaction的开销。压缩:使用重新分配将所有空白空间组合在一起。
分页的优点
- 分页避免了外部碎片化和压缩。
- 在分页中,内存的分配既简单又便宜。
- 在这种技术中,相同大小的页面和框架之间的进程交换很容易。
- 分页还解决了将不同大小的内存块装入后备存储的问题。
- 刚刚换出的页面最不可能再次使用。
- 它允许请求分页和准备。
分页的缺点
帧被分配为单位,因此,它们可能有一些内部碎片。如果程序的内存需求与页边界不一致,则分配的最后一帧可能不会完全填满,并且会有一些空闲空间。
例如,假设页面/帧大小为 8MB,进程为 14MB。在这种情况下,将分配 2 帧,但最后一帧将有 2 MB 可用空间。
在最坏的情况下,一个进程需要 n 页加上 1 个字节。它将被分配 n + 1 帧,导致几乎整个帧的内部碎片。
例如,考虑一个 9MB 的进程,其中页面大小为 8MB。在这种情况下,它将被分配 2 帧。第二帧将只占用 1 个字节。
页表和帧表用于保存空闲和分配空间的详细信息。它们消耗额外的内存来存储。每个进程在内存中都有自己的页表。
什么是分段?
分页和分段有什么区别?分段是一种内存管理技术,用于将程序存储在主内存中。在 Segmentation 中,一个过程被划分为不同大小的部分,称为段。段的长度各不相同,每个段的长度本质上是由其在程序中的用途定义的。分段支持程序员对内存的看法。现在,程序员对内存的看法是什么?因此,在编写程序时,程序员会将其视为具有一组方法、过程或函数的主程序。它还可能包括各种全局变量、堆栈、对象等。同样,在分段中,编译器将程序视为不同的段。编译程序时,编译器会自动将整个程序分成段。编译器可能会为全局变量、堆栈、代码、堆、
分段的优势
- 分段支持程序员对内存的看法。
- 没有内部碎片。
- 段表的大小一般小于页表的大小。因为在分页中我们需要为每个进程一个单独的页表。每个页表的大小取决于进程拥有的页数。
分段的缺点
- 当程序从内存中加载和删除时,空闲内存空间被分解成小块,称为孔洞,导致外部碎片。
- 在交换的情况下,段的大小不等是不好的。
- 很难将连续内存分配给可变大小的分区。
- 分段是一种昂贵的内存管理技术。
分页和分段差异比较:主要区别总结
否 | 分页 | 分段 |
---|---|---|
1. | 程序被分成大小相等的部分,称为页面,以将它们存储在主内存中。 | 程序被分割成可变大小的部分,称为段,以将它们存储在主内存中。 |
2. | 分页是由操作系统完成的。 | 分段由编译器完成。 |
3. | 它可以将相同功能的代码存储到不同的页面中。 | 它将相同的功能存储在一个段中。 |
4. | 这会导致系统效率降低,因为要执行一个功能,我们可能需要访问多个页面。 | 由于编译器在一个段中保留了相同类型的函数,因此它会产生一个更高效的系统。 |
5. | 页表用于存储有关页面和框架的详细信息。 | 段表用于存储段的详细信息。 |
6. | 为了将逻辑地址转换为物理地址,使用具有<页号,帧号>的页表条目。 | 为了将逻辑地址转换为物理地址,使用具有<基地址,限制>的段表条目。 |
7. | 与分段相比,分页速度更快。 | 分割很慢。 |
8. | 当程序大小小于确定的页面大小时,分页会导致内部碎片。 | 在删除一些导致小孔的程序后,分段会导致外部碎片。 |
9. | 逻辑地址由两部分组成:页码和页偏移量。 | 逻辑地址由两部分组成:段号和段偏移量。 |
10. | 在分页中,操作系统维护一个可以分配给页面的空闲帧列表。 | 在分段中,操作系统维护存在于主内存中的空洞列表。 |
11. | 页被认为是信息的物理单元。 | 段被认为是信息的逻辑单元。 |
12. | 分页的概念对用户来说是完全隐藏的。 | 分割的概念对用户是可见的。 |
13. | 在分页中,页面的大小总是等于帧的大小。 | 在分段中,对分段的大小没有限制。 |
结论
分页和分段有什么区别?分页和分段都是非连续的内存管理技术。它们都用于为程序分配主内存。分页将所有程序分成大小相等的页面,而不管程序可能具有一些需要在同一页面上加载的相关功能。它可以将相同的函数存储到不同的页面中,并且这些页面可能会或可能不会同时加载到内存中。它降低了系统的效率。为了克服这个限制,使用了分段。分段将程序分成多个段。每个段包含相同类型的函数,例如主函数可以包含在一个段中,全局变量可以包含在一个段中,库函数可以包含在另一个段中。
分页和分段差异比较常见问题
问: 分页是连续的吗?
不,分页是非连续的内存分配。我们可以将程序的页面存储在不连续的框架中。
问:使用什么分页?
A. 在连续内存分配中,我们不能跨越不同内存分区中的进程。这会导致外部碎片化。为了克服这个问题,我们使用非连续内存分配。每当一个进程想要进入 RAM 时,我们都会检查内存中存在的总漏洞。我们根据孔尺寸对工艺进行分区。现在,这个过程成本很高,因为我们在运行时对一个过程进行分区。因此,为了降低整个过程的成本,我们事先将过程分为固定大小的页面和固定大小的帧中的 RAM。