分页和分段
内存管理是操作系统的基本功能之一。现代操作系统允许每个进程获得比给定计算机系统上的实际(物理)存储器的总大小更多的虚拟内存。内存管理的主要目标是通过将大而慢的内存与小而高速的内存相结合,来实现更大的高速内存的效果。
什么是分页?
在内存利用方面,固定和可变分区之间的分离是无效的,因为固定分区导致内部,而外部碎片则动态。碎片问题的可能解决方案是允许不将过程写入连续的存储器块。程序可以在存储器中任意分散。在这种情况下,工作存储器被分成称为帧的固定大小的较小块。程序的逻辑地址空间也被分成相同大小的块,称为页面。当程序进入存储器时,页面被写入空闲存储器帧。为了便于将程序从磁盘传输到工作存储器,磁盘也被分成与存储器帧大小相同的帧。因此,来自盘的一帧被写入工作存储器的一帧中。寻呼系统以下列方式操作:当程序被接受执行时,计算其大小,用所需的页数表示。如果有足够数量的帧是空闲的,则该过程将记录在每页的存储器页面中。同时,在页表中输入每页写入的帧数。
什么是细分?
用户程序和相关数据可以分成许多段。尽管存在最大段长度,但所有程序的段不必具有相同的大小。与分页一样,使用分段的逻辑地址由两部分组成,在这种情况下,该分段中的分段和位错的数量。由于使用了不同大小的段,因此分段类似于动态分区。在没有覆盖方案或使用虚拟存储器的情况下,需要将所有程序段加载到存储器中以供执行。与动态分区相比,差异在于分段可以占用多个分区,并且该分区不必相邻。分段解决了内部碎片问题,但除了动态分区外,还存在外部碎片问题。但是,由于该过程被分成许多较小的部分,因此外部碎片通常较小。与程序员看不到的分页不同,分段通常是可见的,适合于组织程序和数据。出于模块化编程的目的,程序或数据可以进一步划分为几个较小的段。这种技术的缺点是程序员必须知道最大段大小的限制。使用不同大小的段的下一个便利是逻辑和物理地址之间没有预期的连接。与分页类似,简单分段技术使用每个进程的段表和主存储器中的可用块列表。
分页和分段之间的区别
1.分页和分段的概念
分页提供虚拟和物理地址空间,以及相等长度的块(页面)上的辅助存储空间。这允许将连续虚拟地址空间分配给真实地址空间和辅助存储器中的分散(不一定是连续分布)的过程。甚至页面作为术语,指的是在程序级别可见的内存而不是逻辑对象。分段在块(段)上提供虚拟地址空间,这些块直接对应于程序级别的对象。因此,段没有固定长度,因此在程序执行期间甚至可以更改段大小。因此,在对象级别可以进行保护和划分,并且存在执行分段的可见过程。
2.寻呼和分段的特征
应用程序开发人员不知道分页。他编写程序就好像内存是线性的,操作系统和处理器关心它的分区和转换为虚拟地址。然而,分段系统上的程序员在其程序中列出了地址,段和页面的两个部分。所有页面都具有相同的大小,而段不同。分段具有多个线性地址空间,并且仅分页一个。段允许对应用程序组件进行逻辑分区和保护,而页面则不允许。
3.分页和分段的优点
对程序员来说透明的分页可以消除外部碎片,从而确保有效使用主内存。移入和移出主存储器的部分是固定的并且大小相同,因此可以开发利用程序行为的复杂存储器管理算法。开发人员可以看到分段,并且能够管理数据结构的增长,模块化以及对交换和保护的支持。
分页与分段:比较图表
分页 |
分割 |
固定页面大小 | 细分的大小不固定 |
对程序员来说是不可见的 | 程序员可见 |
一个线性地址空间 | 多个线性地址空间 |
不允许对应用程序组件进行逻辑分区和保护 | 允许 |
分页和分段摘要
- 寻呼是基于作为存储器量化操作的固定长度块上的整个地址空间的分布。此外,有必要提供一种标记可用存储器的装置,该装置可以通过每个页面的“标题”的存在来执行,该“标题”指示页面的状态(每个节点指向下一个空闲页面的全局链表)或者将空闲页面地址放在全局数组中,这通常是最糟糕的解决方案。
- 分段意味着将地址空间划分为具有明确标记的MMU处理器访问权限的段。在段内,进程分配的内存与所需的内存完全相同,但内存管理的问题是如何提供这样的分配,它可以保留足够大的连续块内存,这可能需要一些时间。