1、页式存储管理

  • ==字块==是相对物理设备的定义
  • ==页面==则是相对逻辑空间的定义
  • ==页面==的大小是固定的,与==字块==大小一致

20211226142425.png

  • 将进程逻辑空间等分成若干大小的页面
  • 相应的==把物理内存空间分成于页面大小的物理块==
  • 以页面为单位把进程空间装进物理内存中分散的物理块

20211226142441.png

  • 页面的大小应该适中,过大难以分配,过小内存碎片过多
  • 页面大小通常是512B~8K

页表

20211226142452.png

  • ==页表==记录进程逻辑空间与物理空间的映射

20211226142505.png

20211226142518.png

多级页表

20211226142529.png

第一级存储==页表或者段表==的是CPU的高速缓存之类的,然后才去主存中获取

2、段式存储管理

==有一段连续的逻辑分布在多个页面中,将大大降低执行效率==

  • 将进程逻辑空间划分为若干段(非等分)
  • 段的长度由连续逻辑的长度决定
  • 主函数MAIN、子程序X、子函数Y等

段表

20211226143654.png

对编程的启发

  • ==Java中一个方法完成一个功能/逻辑就是根据段式存储管理来的,符合底层存储管理的方式,能让软件的所需的内存空间不频换切换,提升程序的效率==
  • ==又一点,那些经常使用的功能函数应该设置为静态函数,使其在一开始就加载并一直存在,这样就不会频繁发生主存-辅存的数据交换,提升程序的速度==
  • ==每个函数的逻辑不要过于复杂和过长==

3、段页式存储管理

==段式存储和页式存储都离散地管理了进程的逻辑空间==

  • 页是物理单位,段是逻辑单位
  • 分页是为了合理利用空间,分段是满足用户要求
  • 页大小由硬件固件,段长度可动态变化
  • 页表信息是一维的,段表信息是二维的
  • 分页可以有效提高内存利用率(虽然说存在页内碎片)
  • 分段可以更好的满足用户需求
  • 两者结合,形成段页式存储管理

3.1、概念

  • 先将逻辑空间按段式管理分成若干段
  • 再把段内空间按页式管理分成若干页

20211226143723.png

20211226143741.png