分段和分页的区别
分页
在分页中,进程的地址空间被划分为固定大小的块。虚拟内存和物理内存都被划分成相等的固定大小的块。虚拟内存中的块称为页,物理内存中的块称为页帧。
分页是一种内存管理方法,以页的形式从物理内存中替换到虚拟内存中。进程的地址空间会被划分成与页面大小相同的几部分。
分段
在分段中,进程的地址空间不会被划分为固定大小的块。每个段的详细信息保存在段表中。段表包含两个主要数据,一个是Base,它是段的基地址,另一个是Limits
,它是段的长度。
在分段中,CPU产生一个包含段号和段偏移量的逻辑地址,如果段偏移量比limits
小,则该地址为有效地址,否则会因为地址无效而引发计算错误。
分页和分段的区别
分页 | 分段 | |
---|---|---|
1 | 在分页中,进程的地址空间被划分为固定大小的页面 | 在分段中,进程的地址空间被划分为大小不同的段 |
2 | 操作系统负责分页 | 编译器负责分段 |
3 | 页大小由硬件决定 | 段大小由用户给出 |
4 | 速度比分段块 | 分段速度慢 |
5 | 分页会导致内部碎片 | 分段导致外部碎片 |
6 | 分页中,逻辑地址被划分为页号和页偏移 | 分段中,逻辑地址被划分为段号和段偏移 |
7 | 分页包含一个页表,页表包含每个页的基地址 | 分段包含段表,段表中包含段号和段偏移量 |
8 | 分页对于用户不可见 | 分段对于用户可见 |
9 | 在分页中,处理器需要页号和页偏移来计算实际物理地址 | 分段中,处理器使用段号和段偏移量计算地址 |
分段的缺点
- 外部碎片
- 复杂的内存管理算法
- 需要找到足够大的连续的空闲内存区域
- 大小不等的段不适合交换