视频字幕
在传统的连续内存分配方式中,进程必须占用连续的内存空间,这会产生大量的外部碎片,导致内存利用率低下。为了解决这个问题,操作系统引入了分页存储管理方式。分页存储的核心思想是将物理内存和逻辑内存都划分为固定大小的块,物理内存中的块称为页框,逻辑内存中的块称为页面。通过这种方式,页面可以装入任意的页框中,从而消除了外部碎片问题。
在分页存储管理中,有两个核心概念需要理解:页面和页框。页面是逻辑地址空间中的固定大小块,通常大小为4KB,页号从0开始编号。页框是物理内存中的固定大小块,与页面大小完全相同,页框号也从0开始编号。页面可以装入任意的页框中,这意味着进程的逻辑地址空间在物理内存中可以是不连续的。通过这种映射关系,我们实现了逻辑地址到物理地址的灵活转换。
页表是分页存储管理中的核心数据结构,它记录了页面到页框的映射关系。每个进程都有自己独立的页表,存储在内存中。页表由多个页表项组成,每个页表项包含页框号、有效位、访问位、修改位和保护位等信息。页框号指向对应的物理页框,有效位表示页面是否在内存中,访问位和修改位用于页面置换算法,保护位控制对页面的访问权限。通过页表,操作系统可以快速找到逻辑页面对应的物理页框,实现地址转换。
地址转换是分页存储管理的核心过程。首先,将逻辑地址分解为页号和页内偏移,页号等于逻辑地址除以页面大小的整数部分,页内偏移等于逻辑地址对页面大小取模的结果。然后,根据页号查找页表,获得对应的页框号。最后,将页框号乘以页面大小再加上页内偏移,得到最终的物理地址。例如,当页面大小为4KB时,逻辑地址5120对应页号1和页内偏移1024,通过页表查找得到页框0,最终物理地址为1024。
通过一个完整的实例来展示分页存储的实际工作过程。假设系统中有两个进程A和B,每个进程都有3个页面。进程A的页面0映射到页框2,页面1映射到页框5,页面2映射到页框1。进程B的页面0映射到页框3,页面1映射到页框0,页面2映射到页框4。可以看到,两个进程的页面在物理内存中是交错分布的,但通过各自的页表,每个进程都能正确访问自己的内存空间。这种方式完全消除了外部碎片,提高了内存利用率,并实现了进程间的内存隔离。