什么是分页和分段

2024-12-19

摘要:分页(Paging): 分页是一种内存管理策略,它将进程的逻辑地址空间划分为固定大小的块,称为“页”(Pages)。物理内存也被划分为同样大小的块,称为“帧”(Frames)。 每个页在内存中可能不...

分页(Paging):

什么是分页和分段

分页是一种内存管理策略,它将进程的逻辑地址空间划分为固定大小的块,称为“页”(Pages)。物理内存也被划分为同样大小的块,称为“帧”(Frames)。

每个页在内存中可能不连续存放,但通过页表来记录页号与物理帧号之间的映射关系,实现从逻辑地址到物理地址的转换。

访问内存时,需要两次内存访问:第一次查找页表以获取物理地址,第二次访问实际数据。

分页的主要目的是解决内存碎片问题,提高内存利用率,并支持虚拟内存,使得程序可以访问超过实际物理内存大小的地址空间。

分段(Segmentation):

分段则是将程序的地址空间按照逻辑或功能划分为若干个独立的段(Segments),如代码段、数据段、堆栈段等,每个段的大小可变。

段表用于存储段的基地址和长度,逻辑地址由段号和段内偏移量组成。

分段机制允许每个段在内存中独立地进行连续分配,这有助于数据保护、共享和程序结构的逻辑划分。

相对于分页,分段更关注于满足程序员对程序结构的逻辑需求。

分页与分段的区别:

1. 目的不同:分页侧重于提高内存利用率和实现虚拟内存,而分段侧重于满足程序的逻辑结构和提供数据保护、共享能力。

2. 地址空间:分页的地址空间是一维的,而分段的地址空间是二维的,需要段号和段内偏移量。

3. 块大小:分页的页大小固定,由操作系统决定;分段的段大小不固定,由程序逻辑决定。

4. 透明性:分页对程序员通常是透明的,而分段需要程序员明确划分段。

5. 碎片问题:分页可能导致内部碎片,但避免了外部碎片;分段则可能产生外部碎片,但内部碎片较少。

在现代操作系统中,为了结合两者的优点,经常采用段页式存储管理,即先将程序划分为段,再将每个段分成页,这样既保持了逻辑上的独立性,又实现了高效的内存分配和管理。

相关推荐