视频字幕
欢迎来到计算机组成原理的卡通课堂!今天我们要学习虚拟存储器。想象一下,你的程序就像一个小朋友,想要一个很大很大的房子来存放所有的玩具。但是实际的物理内存就像真实的房子,空间有限。虚拟存储器就像魔法一样,让程序以为自己有无限大的空间,而操作系统在背后悄悄地管理这一切。程序可以访问比实际物理内存大得多的虚拟地址空间,这就是虚拟存储器的神奇之处!
现在让我们学习分段存储管理!想象程序就像一个积木城堡,由不同颜色的积木块组成。红色积木是代码段,存放程序指令;绿色积木是数据段,存放变量和常量;蓝色积木是堆栈段,用于函数调用。每个段都有自己的段号、基址和长度,这些信息记录在段表中。当程序要访问某个地址时,比如逻辑地址(1,200),系统会查找段表,找到1号段的基址是2000,然后加上段内偏移200,得到物理地址2200。这样就完成了从逻辑地址到物理地址的转换!
接下来我们学习分页存储管理!如果说分段像积木城堡,那么分页就像整齐的方格纸。物理内存被划分成许多固定大小的页框,就像一个个小方格。程序也被分成同样大小的页面,用不同颜色表示。页表就像一个地址簿,记录每个页面存放在哪个页框中。比如逻辑地址(1,100)表示第1页的第100个位置,通过查页表发现第1页在第5号页框,所以物理地址就是5乘以页面大小再加100。分页和分段各有优缺点:分页消除了外部碎片但可能产生内部碎片,分段逻辑清晰但可能产生外部碎片。就像天平一样,各有平衡!
现在我们来学习段页式存储的核心原理!想象一下,如果分段像积木城堡,分页像方格纸,那么段页式存储就像是用方格纸来建造积木城堡!程序首先按照逻辑功能分成不同的段,比如红色的代码段和绿色的数据段。然后每个段内部再划分成固定大小的页面,就像把每个积木块切成小方块。这样就形成了二级结构:段表记录每个段的页表基址,页表记录每个页面的物理位置。地址也变成了三部分:段号、页号和页内偏移。比如逻辑地址(0,1,200)表示第0段的第1页的第200个位置。可爱的导航员会帮助我们找到正确的转换路径!这种方式既保持了分段的逻辑清晰性,又避免了外部碎片问题。
现在让我们跟随可爱的小机器人,详细了解段页式存储器的地址转换过程!首先,小机器人接收到逻辑地址(2,1,300),立即将其分解为段号2、页号1和页内偏移300。接下来进行第一次安全检查:段号2是否超出段表范围?检查通过!然后查找段表,找到2号段的页表基址是3000。再进行第二次安全检查:页号1是否超出页表范围?也通过了!接着查找页表,发现1号页面对应的页框号是15。最后计算物理地址:15乘以页面大小1024再加上偏移300,得到最终的物理地址。整个过程就像小机器人在导航系统中一步步寻找目标地址,每一步都有安全检查,确保访问的合法性。这就是段页式存储器地址转换的完整流程!