美文网首页
操作系统-存储器管理

操作系统-存储器管理

作者: IAmWhoAmI | 来源:发表于2016-07-21 10:58 被阅读52次

    一个free talk。

    计算机用于存储记忆的部分。

    所有存储介质都算在其中。

    存储管理,就是如何使用计算机的存储设备来存储内容的方式。
    好比,你怎么利用你的抽屉来放东西。

    所以很多人提出了观点。
    都是一些,实际解决中,抽象出来的方式。

    所以,如果自己可以设计更好的,那就可以用更好的,只要能解决问题,就行。


    存储器主要存什么?
    程序和数据。

    一个程序要运行,程序代码以及相应的被使用的数据,都将被装载入内存之中。
    这里我们将这两个东西绑在一起。

    程序装入发展史

    1.绝对装入
    逻辑地址和物理地址,直接一一对应。
    (这种方式,很直接,但是简直是写程序的时候,你要知道底层,不适合推广,不通用。
    说起来操作系统引导的时候,读的那些内容,绝对是逻辑地址对应物理地址了吧。

    2.静态重定位装入
    物理地址不是原来 程序的逻辑地址,
    逻辑地址变成偏移地址,然后,物理地址= 基础地址+偏移地址。
    (当然这只是一种思路,可以有其他的换算方式。当然我听说过这一种。
    中断发生的时候,去中断表中找对应的代码,也算是一种重定向吧。这个其实挺常见。

    静态= 逻辑地址到物理地址的变化过程在程序运行前完成,在执行期间不再改变。

    3.动态重定位装入
    静态的方式,程序运行时,不能再内存中移动或是重新定位地址。
    在虚拟存储器管理中,用户程序代码多次换出还如内存,每次地址都会变。
    所以需要这种。

    4.覆盖技术
    当内存不够用,
    代码不是一次性执行完,分成多个阶段,那就阶段一运行完,
    阶段二放入内存,覆盖阶段一的代码位置,继续运行
    这种方式,肯定比直接全部装入运行慢,因为要再读阶段二,
    但是,内存不足的情况下,可以运行更大的程序。

    5.紧凑技术

    连续存储空间管理

    1.单一连续分配
    2.固定 分区分配方式
    内存切成固定大小,可以是等大的,也可以是不等大的

    3.可变分区分配方式
    将空闲的分区以链表的方式连起来,也可以是索引表的方式

      分区分配算法:
      1.首次适应法
    从头开始,循环链表,找到可以放得直接放进去
    2.循环首次适应法
    每次循环到一个位置,从那个位置继续循环,找到直接放进去,不从头开始
    3.最优适应法
    遍历,找到最小的,放得下的。
    4,最差适应法。
    最大的放得下的。
    5.快速适应法
    设置多个空闲分区链,
    每个链根据空闲分区的大小来设置,
    分配的时候,根据要分配的大小去不同的位置找。
    
    分配的时候,空间,减去用去的 = 剩余的,然后加到链表中。
    回收的时候,如果,腾出来的空间,是相邻的就合并。
    
    

    分页存储

    内存,按页切割,每个页大小相同
    然后程序维护分页表。

    物理地址计算,逻辑地址有个页号,以及偏移地址。
    页表存了页号对应的逻辑地址

    快表。TLB
    多级分页。

    分段

    分页虽然挺好的,但是一旦程序发生了变化,动态加载导致段寄存器变成,那么整个页表都要收影响,
    所以按段来进行切割。

    段页式

    两种合并

    虚拟存储器

    缺页中断

    #调页算法
    决定何时将进程需要页调入内存
    1.请求就调入
    2.预先调入
    
    #分配策略
    应该分配多少物理内存给程序
    1.平均分配
    2.进程按比例分配
    3.优先权分配
    
    #内存置换策略
    决定内存中哪些被换出
    (可以全局置换,程序A缺页,置换出去的,所有操作系统中的程序的某一页。
    局部置换,程序A缺页,置换出去的是,该程序的某一页。
    一般全局的好一点,因为,有的程序就是不怎么跑,把那段代码换出去。
    不然有可能局部置换,换的很频繁,因为空间不足。
    有的分配的多的,其实都没跑,空间一直没回收回来。)
    
    --------页面置换算法:
    1.先进先出
    2。最佳置换
    3.最近最久未被使用
    就是如果最近没被使用,最久没被使用,缺页的时候移除去。
    实现方式:计数器,堆栈式。堆栈好。
    4.时钟置换算法
    有一个状态值,记录了是否被访问过,一个记录是否被修改过,
    
    
    
    

    相关文章

      网友评论

          本文标题:操作系统-存储器管理

          本文链接:https://www.haomeiwen.com/subject/jqhbjttx.html