内存管理是操作系统的基本功能之一。 现代操作系统允许每个进程获得比给定计算机系统上实际(物理)内存总大小更多的虚拟内存。 内存管理的主要目标是将大而慢的内存与小而高速的内存结合起来,以达到更大的高速内存的效果。

分页和分段

什么是分页?

就内存利用率而言,固定分区和可变分区之间的分离是无效的,因为固定分区会导致内部碎片,而动态会导致外部碎片。解决碎片问题的一种可能解决方案是不允许将进程写入连续的存储块。程序可以任意分散在内存中。在这种情况下,工作存储器被分成固定大小的较小块,称为帧。程序的逻辑地址空间也分为相同大小的块,称为页面。将程序输入到内存后,页面将被写入空闲内存帧。为了便于将程序从磁盘传输到工作内存,该磁盘还分为与存储帧大小相同的帧。因此,来自磁盘的一帧被写入工作存储器的一帧。分页系统以以下方式操作:接受程序执行后,将计算其大小,并以所需的页数表示。如果有足够数量的可用帧,则该过程每页记录在内存页中。同时,在帧表中输入写入每个页面的帧数。

什么是分段?

用户程序和关联的数据可以分为多个段。尽管有最大的片段长度,但所有程序的片段不必大小相同。与分页一样,使用分段的逻辑地址由两部分组成,在这种情况下,为分段数和该分段内的位错。由于使用了不同大小的分段,因此分段类似于动态分区。在没有覆盖方案或不使用虚拟内存的情况下,需要将所有程序段都加载到内存中才能执行。与动态分区相比,差异在于分段可以占用多个分区,并且该分区不必相邻。分段解决了内部分段的问题,但是除了动态分区之外,外部分段的问题仍然存在。但是,由于该过程分为多个较小的部分,因此外部碎片通常较小。与程序员看不见的分页不同,分段通常是可见的,适合组织程序和数据。为了进行模块化编程,可以将程序或数据进一步分为几个较小的段。这种技术的缺点是程序员必须知道最大段大小的限制。使用不同大小的段的下一个便利是逻辑地址和物理地址之间没有预期的连接。与分页类似,简单的分段技术将分段表用于每个进程,并在主存储器中使用可用块的列表。

分页和细分之间的对比

1. 分页和分段的概念
分页在等长的块(页面)上提供虚拟和物理地址空间以及辅助存储空间。这允许将连续的虚拟地址空间分配给实地址空间和辅助存储器中的分散过程(不一定连续分布)。术语页面甚至是指内存,而不是在程序级别可见的逻辑对象。分段在程序级别上直接对应于对象的块(段)上提供虚拟地址空间。因此,段没有固定的长度,因此即使段大小也可以在程序执行期间更改。因此,可以在对象级别进行保护和划分,并且存在执行分段的可见过程。

2. 分页和分段的特征
应用程序开发人员不知道分页。他编写程序就好像内存是线性的,而操作系统和处理器则关心其分区以及如何转换为虚拟地址。但是,分段系统上的程序员在其程序中列出了地址,分段和页面的两部分。所有页面的尺寸均相同,而分段则不同。分段具有多个线性地址空间,而分页只有一个。段允许对应用程序组件进行逻辑分区和保护,而页面则不允许。

3. 分页和分段的优点
对程序员而言透明的分页可消除外部碎片,从而确保有效使用主存储器。移入和移出主内存的片段是固定的,并且大小相同,因此可以开发利用程序行为的复杂内存管理算法。细分对开发人员是可见的,并且能够管理数据结构,模块化的增长以及对交换和保护的支持。

分页 分段
固定页面大小 段的大小不固定
程序员看不见 对程序员可见
一个线性地址空间 多个线性地址空间
不允许对应用程序组件进行逻辑分区和保护 允许

总结

分页基于固定长度的块上整个地址空间的分布,这些块在内存量化时运行。 此外,有必要提供一种标记可用内存的方法,该方法可以通过指示页面状态(每个节点指向下一个空闲页面的全局链接列表)的每个页面的“页眉”的存在来执行,或者通过 将可用页面地址放在全局数组中,这通常是最糟糕的解决方案。
分段意味着将地址空间划分为多个段,这些段已明确标记了对MMU处理器的访问权限。 在该段内,进程分配的内存量与所需的数量一样多,但是内存管理的问题是如何提供这样的分配,即可以保留足够大的连续块内存(可能需要一些时间)。

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:分页和分段
本文链接:https://www.vsdiffer.com/vs/paging-vs-segmentation.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。