视频字幕
虚拟存储器是计算机系统中的重要概念。它允许程序使用比实际物理内存更大的地址空间。通过虚拟存储器,系统可以将程序和数据在内存与硬盘之间自动调度,为每个程序提供独立的地址空间,从而提高内存利用率和系统安全性。
段是程序按逻辑功能划分的区域。一个程序通常包含代码段、数据段、堆栈段和堆段。代码段存放程序指令,数据段存放全局变量,堆栈段存放局部变量和函数调用信息,堆段存放动态分配的内存。段的长度是可变的,具有明确的逻辑意义,便于共享和保护。
段表是段式存储管理的核心机制。段表记录每个段的详细信息,包括段基址、段长度、访问权限和有效位。当CPU发出逻辑地址时,系统根据段号查找段表,获取对应的段基址,然后将段基址与段内偏移相加,得到最终的物理地址。这个过程实现了逻辑地址到物理地址的转换。
地址转换过程就像邮递员投递邮件一样。首先,CPU发出逻辑地址,包含段号和段内偏移。然后,邮递员根据段号查找段表,获取对应的段基址和段长度。接下来检查地址的有效性,确保偏移量不超过段长度。最后,将段基址与偏移量相加,得到物理地址,完成地址转换过程。
段式虚拟存储器有明显的优缺点。优点包括逻辑清晰、便于共享、支持动态增长和提供保护机制。多个程序可以共享同一个代码段,节省内存空间。但是段式存储也有缺点,主要是会产生外部碎片,增加地址转换开销,并且段表会占用额外的内存空间。与页式存储相比,段式存储逻辑更清晰,但会产生碎片问题。