分页和分段的区别
分页
分页是一种内存管理技术,其中进程地址空间被划分为大小相同的块,称为页(大小为2的幂,介于512字节和8192字节之间)。进程的大小以页数来衡量。类似地,主内存被划分为小的固定大小的块(物理)内存,称为帧,并且帧的大小与页的大小保持一致,以优化主内存的使用并避免外部碎片。
类似地,主内存被划分为小的固定大小的块(物理)内存,称为帧,并且帧的大小与页的大小保持一致,以优化主内存的使用并避免外部碎片。
分段
分段是一种内存管理技术,其中每个作业被划分为多个不同大小的段,每个段对应一个包含执行相关功能的代码块的模块。每个段实际上是程序的不同逻辑地址空间。当要执行一个进程时,其对应的段被加载到非连续的内存中,尽管每个段都加载到一个连续的可用内存块中。分段内存管理的工作方式与分页非常相似,但是这里的段是可变长度的,而分页中的页是固定大小的。
程序段包含程序的主函数、实用函数、数据结构等等。操作系统为每个进程维护一个段映射表和一个空闲内存块列表,其中包含段号、大小和主内存中的相应内存位置。对于每个段,该表存储段的起始地址和段的长度。对内存位置的引用包括一个标识段的值和一个偏移量。
以下是分页和分段之间的一些重要区别。
序号 | 关键点 | 分页 | 分段 | |
---|---|---|---|---|
1 | 内存大小 | 在分页中,进程地址空间被划分为固定大小的块,称为页。 | 在分段中,进程地址空间被划分为大小不同的块,称为段。 | |
2 | 职责 | 操作系统将内存划分为页。 | 编译器负责计算段的大小、虚拟地址和实际地址。 | |
3 | 大小 | 页的大小由可用内存确定。 | 段的大小由用户确定。 | |
4 | 速度 | 就内存访问而言,分页技术更快。 | 分段比分页慢。 | |
5 | 碎片 | 分页可能会导致内部碎片,因为某些页可能未得到充分利用。 | 分段可能会导致外部碎片,因为某些内存块根本没有被使用。 | |
6 | 逻辑地址 | 在分页中,逻辑地址被划分为页号和页偏移量。 | 在分段中,逻辑地址被划分为段号和段偏移量。 | |
7 | 表 | 在分页中,逻辑地址被划分为页号和页偏移量。 | 在分段中,逻辑地址被划分为段号和段偏移量。 | |
8 | 数据存储 | 页表存储页数据。 | 段表存储段数据。 |
广告