操作系统之存储

存储管理

    存储管理指的是对内存储器的管理,负责对内存的分配和回收、内存的保护和扩充等,目的是尽量提高内存的使用效率。

文章脉络

            

分类

    实存:真正的内存空间;虚存:外存中的虚拟内存

重定位

   重定位是指,装入程序时,将程序中的逻辑地址转换为物理地址的过程。安装方式,可以分为静态重定位和动态重定位。为什么要重定位?因为程序的逻辑地址一般从0开始,而内存中前面的空间留给系统或其他程序使用,导致了逻辑地址和物理地址不对应的问题,所以进行转换。

   静态重定位:虚空间程序执行之前,装配程序完成的地址转换工作。如下,程序转移时,把其中涉及到的逻辑地址全部转换为物理地址,如下所示:

        

 

   动态重定位:程序装入内存,CPU访问内存之前,进行的地址转换。如下:

        

   因为动态重定位实在CPU访问之前才进行地址转换,所以在内存中2500仍为2500,当CPU提取时,才会进行地址转换。

实存分配

   分为以下几种方式

        

   单一连续分配:把整个用户可用内存区当做一个块使用,很明显,这样只能执行单用户单程序模式。

   固定分区分配:把用户可用内存区分成几个不等的块,一旦分配即固定不变。

   可变分区分配:分成几个大小不等的块,但是可以随着程序执行完毕对内存进行回收和合并。可变分区有四种算法:

   首次适应法:从主存地址值开始查找,找到第一块可用的自由区,并把剩余的部分进行合并。这种方法的优点是可以快速分配,缩小查找时间。

   最佳适应法:选择内存中等于或最接近需求大小的内存自由区。这种方法的优点是可以减少内存碎片,但是由于最接近需求所用的内存区域,容易剩余小得无法再用的碎片。

   最差适应法:选择内存中最大的自由区使用。

    循环首次适应算法:是首次适应法的变型,它的特点是每次都是向下查找,而不是从头开始。

   随着进程的执行,剩余的区域变得越来越小,怎么解决?可以用合并自由区域和存储拼接技术。合并自由区指的是,将相邻自由存储区合并为单一自由区的方法;存储拼接技术也叫碎片收集,包括移动存储器等,把所有占用的区域放到主存的一端,依此来解决碎片浪费问题。

   每种算法都有各自的优缺点,根据实际情况选择使用。

虚存管理

   为什么会有虚存?因为虚存可以扩大内存的使用范围,让原本内存不可运行的大程序,经过虚存管理变成可行。虚存管理方式分为以下三种方式:

   页式存储组织

   这种方式是将用户程序分为若干个大小相等的页,将内存分为若干个段,让后把这些也和段分别对应起来,盛放对应关系的容器,称之为页表,如下所示:

            

   段式存储组织

   从用户的角度出发,何为从用户的角度出发?即按照意义将程序分段,比如按主程序、子程序、逻辑分段,段的大小不等,且段的大小大于页的大小。   

            

   段页式存储

   结合了页式存储组织和段式存储组织的优势,根据程序模块分段,段内再分页,内存被分为定长的页,段也是存储虽然提高了内存空间的利用率,但是增加了段表和页表的开销:

   

   页面置换算法

   如果页面被频繁地装入和调出,成为“抖动”,应尽量减少抖动,常用的算法有以下几种:

  • 最优算法:选择不再使用或很久以后才使用的页。的确最优,但是难以实现。
  • 随机算法:随机选择被淘汰的页,开销小,但是可能刚选中就要访问。
  • 先进先出算法:选择在内存驻留时间最长的页,但也可能淘汰掉频繁使用的页。
  • 最近最少使用算法:选择离当前时间使用最少的页。

   还有其它算法,不管算法是什么,都围绕这一个主题:合理减少页面的淘汰和调入。

   存储管理的对象是内存,围绕着内存管理、分配、优化等中心,让尽量少的资源完成尽量多的任务,存储管理先说到这里。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值