OS系列 2-2

存储器管理

存储器概述
程序的链接和装入

存储分配(管理)方式

连续分配

离散分配

虚拟存储器

存储分配管理方式

连续分配

单一连续
    介绍:将内存分为系统区和用户群。采用静态分配方式,即当任务进入内存,只有运行结束才能够释放内存
    用途:只能用于单用户、单任务的OS

固定分区分配
    介绍:将内存分为多个固定大小的分区,除了OS占一个分区外,其余的一个程序占一个分区。分区的大小可以相等,可以不相等。
    用途:用于运行多道程序
    特点
        一个作业只能装入一个分区,大小不合适则暂时无法加入
        有内部碎片
        需要一张分区表,记录分区的区号和大小、起始位置和状态

动态分区分配》》可变式分区分配
    介绍:事先不进行分区,而是在作业进入内存区的时候,根据作业的大小动态的建立分区,使分区的大小正适合作业的需要。
    分配的算法:
        基于顺序搜索的动态分区分配算法
            首次适应算法
                地址由低到高,找出一个能满足要求的空闲分区给所需要的请求
            循环首次适应算法
                首次适应的变种,分配内存时,从上次找到的空闲区的下一个空闲处开始查找,该算法可以使得内存中空闲区域分布的较均匀。
        基于索引搜索的动态分区分配算法
            最佳适应算法
                每次分配最小的内存,这种方法能使碎片尽量小
            最坏适应算法
                每次分配最大的内存
    数据结构
        空闲分区表
        空闲分区链
可重定位分区分配-紧凑功能
    介绍:是在动态分区分配的基础上进行,当某一个作业没有位置的时候,如果有多个小分区组合可以装下,则将小分区组合,装下任务
    真正的地址:相对地址+重定位寄存器中的地址

离散分配

如果允许将一个进程直接分散地装入到许多不相邻接的分区中,则无须再进行“紧凑”

基本分页存储管理方式

页面或页:将一个进程的逻辑空间分成多个相等的碎片
(物理)块或页框:把内存空间分为与页面相同大小的多个存储块
页表:通过页号找到块号
    页面到块地址的映射表
内存碎片
    因为最后的一页的内容装不满一个块,形成了多余的碎片
地址结构=页号+偏移量
    页号:在第页
    偏移量:在某一个页的什么位置    
有关的硬件
    地址变换机构:将逻辑地址转换为内存空间的物理地址(将逻辑地址的地址转换为内存中的物理块号)
    快表:一种特殊的高速缓冲区(TLB)》》联想寄存器
        内容是页表中的一部分或者全部内容
        作用:加快地址映射速度    
    页表寄存器(page-Table Register)》》》PTR
        存放页表在内存中的开始地址和页表的长度
地址转换机构的类型
    基本的地址的变换机构:最开始的机构,将页表放在外存
    具有快表的地址变换机构:基本机构的优化,将页表改为快表
二级页表、多级页表、反置页表》》》待补充

基本分段存储管理方式

***为了更加好的编程而按照自身的关系而划空间分的一种方式

段:将程序按照自身的逻辑关系华划分的区域大小
地址:段号+段内地址(段内偏移量)
优点:
    方便编程,便于实现
    信息共享
    存储保护
    动态增长
    动态链接

分段和分页存储管理的对比

1 页是信息的物理单位,对用户不可见
2 段是信息的逻辑单位,对用户可见
3 页的大小由系统决定,段的大小由用户自己决定
4 分段比分页更加容易实现信息的共享和保护

段页式存储管理方式

1结合了分页和分段式两种存储方式的特点而弄出来的另外一种管理方式 
将用户程序划分为多个段,然后将每一个段分成多个页,每一个段有段名
地址结构:段号+段内页号+页内地址