段页式内存管理(转载)
转载博客:https://blog.csdn.net/qq_50985215/article/details/127670165
分页、分段的优缺点分析
![0](https://img2024.cnblogs.com/blog/3261801/202403/3261801-20240329214858358-1710497099.png)
分页管理它的缺点就是不方便按照逻辑块实现信息的共享和保护
而分段管理,如果段长过大,为其分配很大的连续空间会很不方便,而且还是产生外部碎片
段页式管理=分段+分页
![0](https://img2024.cnblogs.com/blog/3261801/202403/3261801-20240329214857427-932316137.png)
段页式就是先将进程按照逻辑分段,然后再将各段分页,将各个页放入内存空间中的内存块中存储
段页式管理的逻辑地址结构
![0](https://img2024.cnblogs.com/blog/3261801/202403/3261801-20240329214859988-422355310.png)
段号的位数决定了每个进程最多可以分为几个段
页号的位数决定了每个段最大有几个页
页内偏移量 决定了页面大小,内存块大小是多少
段页式存储的段表、页表的地址变换
![0](https://img2024.cnblogs.com/blog/3261801/202403/3261801-20240329214900693-662806683.png)
根据我们的逻辑地址,得到对应的段号,页号,页内偏移量
根据段号跟段表寄存器的段表长度比较,判断是否越界,如果越界就发生越界中断
根据段表始址和段号来查询段表,找到对应的页表存放块,会根据页表长度和页号对比,查询是否越界
找到了对应的页表,根据我们的页号去页表找到对应的内存块号
找到我们的数据的物理内存地址,然后根据页内偏移量找到对应的内存单元