面试题答案
一键面试分页技术
- 原理:将进程的逻辑地址空间划分成大小相等的页(Page),把物理内存空间划分成与页大小相同的块(Frame)。在进程运行时,以页为单位将进程的页映射到物理内存的块中。通过页表(Page Table)来记录逻辑页号到物理块号的映射关系。
- 优点:
- 内存利用率高,减少了外部碎片。因为页的大小固定,可灵活分配内存块。
- 便于实现虚拟内存,在需要时可将部分页换出到外存,需要时再换入。
- 缺点:
- 产生内部碎片,因为页的大小固定,进程最后一页可能装不满,造成浪费。
- 页表需要占用额外内存空间,且页表查询会增加系统开销。
分段技术
- 原理:将进程的逻辑地址空间按照程序的逻辑结构划分为若干个段(Segment),每个段有自己的段名和长度。段的长度不固定,根据逻辑结构确定。通过段表(Segment Table)来记录每个段在内存中的起始地址和长度。逻辑地址由段号和段内偏移量组成,通过段表找到段的起始地址,再加上段内偏移量得到物理地址。
- 优点:
- 符合程序的逻辑结构,便于程序的模块化设计和管理,段可以按功能划分,如代码段、数据段等。
- 没有内部碎片,因为段的长度按需分配。
- 缺点:
- 易产生外部碎片,因为段长度不固定,内存分配和回收后容易留下难以利用的小空闲块。
- 段表管理相对复杂,段表项需要记录段的起始地址和长度等信息,增加了系统开销。
分页与分段的区别
- 划分方式:分页是按固定大小划分逻辑地址空间,分段是按程序逻辑结构划分逻辑地址空间。
- 大小特性:页大小固定,段大小不固定。
- 碎片情况:分页产生内部碎片,分段产生外部碎片。
- 用户可见性:分页对用户透明,用户无需关心分页细节;分段对用户相对可见,用户在编程时可按段组织程序。