学习笔记——存储器管理(1)

存储器工作原理

存储管理的功能

主要任务: 

(1)为多道程序的运行提供良好的环境
(2)方便用户使用存储器
(3)提高存储器的利用率
(4)逻辑上扩充内存

主要功能:

(1)内存分配
(2)地址映射
(3)内存保护
(4)内存扩充

存储器层次

学习笔记——存储器管理(1)_第1张图片

地址转换与存储保护

                   程序的编译、链接、装载和运行
               学习笔记——存储器管理(1)_第2张图片

链接(3种):生成可装载执行模块

 (1)静态链接

(2)动态链接

(3)运行时动态链接

程序装载(3种方式):把可执行程序装入内存

(1)绝对装载

       在模块中出现的所有地址都是内存绝对地址

(2)可重定位装载

  模块内使用的地址都是相对地址

(3)动态运行时装载

 1、为提高内存利用率,装入内存的程序可换出到磁盘上,适当时候再换入到内存中,对换前后程序在内存中的位置可能不同。
  2、允许进程的内存映像在不同的时候处于不同位置上,此时模块内使用的地址必为相对地址

地址重定位(3种):可执行程序逻辑地址转换(绑定)为物理地址

也称为地址映射、地址转换

(1)静态地址重定位

(2)动态地址重定位

(3)运行时链接地址重定位

存储保护

 防止地址越界(各道程序只能访问自己的内存不能互相干扰)和控制正确存取(检查访问权限)

连续存储空间管理

固定分区存储管理

划分分区的方法:分区大小相等/不等

可变分区存储管理(动态分区模式)

定义:

      可变分区存储管理是按作业的实际大小来划分分区,且分区个数也是随机地,实现多个作业对内存的共享,进一步提高内存资源的利用率。

可变分区存储管理数据结构——可变分区内存分配表

可变分区内存分配表有两张表格组成:

 已分配区表

未分配区表

 空闲区管理方法:申请空闲区、归还空闲区

可变分区管理分配算法

(1)首次使用分配算法

(2)循环首次适应分配算法

(3)最佳适应分配算法

(4)最差适应分配算法

(5)快速适应分配算法

可变分区回收算法

学习笔记——存储器管理(1)_第3张图片

可变分区地址转换与存储保护

    采用动态地址重定位,进程的程序和数据的地址转换由硬件完成:基址寄存器和限长寄存器
                学习笔记——存储器管理(1)_第4张图片

可重定位分区分配

(1)紧凑的基本概念——零头、碎片
(2)动态重定位
         *重定位寄存器
         *地址变换: 内存地址 = 相对地址+重定位地址
                              物理地址=逻辑地址+重定位地址
                              物理地址 = 相对地址+基址地址
                               实地址 = 虚地址+基地址
(3)重定位分区分配算法——>紧凑的使用
(4)多对基址/限长寄存器
             学习笔记——存储器管理(1)_第5张图片

内存不足的存储管理技术

(1)移动技术

(2)对换技术

 对换:把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上
 对换是提高内存利用率的有效措施
         整体对换——>进程对换
         部分对换——>页面对换、分段对换

(3)覆盖技术

离散分区分配:

定义

         将一个进程(或作业)直接分散地许多不必相邻的分区中,而不需要进行“紧凑”

方式

(1)分页存储管理
(2)分段存储管理
(3)段页式存储管理

分页存储管理(离散分区)

分页存储管理基本原理

(1)页框(物理地址)
(2)页面(逻辑地址)
(3)逻辑地址形式
               学习笔记——存储器管理(1)_第6张图片
(4)页表和地址转换 
              使用动态重定位技术,给每个页面设立重定位寄存器,重定位寄存器的集合便称页表
               定义:页表是操作系统为每个用户作业建立的,用来记录程序页面和内存对应页框的对照表
                  学习笔记——存储器管理(1)_第7张图片
(5)分页存储管理地址转换和存储保护
          学习笔记——存储器管理(1)_第8张图片  学习笔记——存储器管理(1)_第9张图片
         实际地址转换时,只要把逻辑地址中的页内位移d作为绝对地址中的低地址,根据页号p从页表中查得页框号b作为绝对地址中的搞地质,拼接后就组成访问内存的绝对地址。

翻译快表

快表

     (1)  翻译快表:用来存放进程最近访问的部分页表项,经常放在cache中
     (2)快表的存取时间远小于内存,速度快但造价高,故容量较小,只能存放几十个页表项。
     (3)快表的工作机制:
                   1、 快表项包含页号及对应页框号,当把页号交给快表后,它通过并行匹配同时对所有快表项进行比较
                   2、如果找到,则立即输出页框号并形成物理地址,
                   3、如果找不到,再查内存中的页表以形成物理地址,同时将页号及页框号登记到快表中
                   4、当快表已满且要登记新页时,系统需要淘汰旧的快表项,最简单的策略是“先进先出”,总是淘汰最先登记的页面、

快表和页表的关系

  快表小于页表
  快表是页表的一部分,存的是最近使用过的一些页表项

分页存储空间分配和去分配(回收)

空闲表法

 分配算法:
    首次适应算法
     循环首次适应算法
     最佳适应算法
     最差适应算法

空闲链法

 (1)空闲盘块链
(2)空闲盘区链
               回收合并算法

位示图法

   内存分配的位示图和链表方法

学习笔记——存储器管理(1)_第10张图片    学习笔记——存储器管理(1)_第11张图片

分页存储空间页面共享和保护

程序共享
         
•由于指令包含指向其他指令或数据的地址,进程依赖于这些地址才能执行,不同进程中正确执行共享代码页面,必须为它们 在所有逻辑地址空间中指定同样页号
信息保护
•实现信息共享必须解决共享信息保护问题。通常的做法是 在页表中增加标志位,指出此页的信息只读/读写/只可执行/不可访问等,进程访问此页时核对访问模式。例如,欲向只读块写入信息则指令停止执行,产生违例异常信号。

多级页表

页表的问题:

   (1)逻辑地址空间越来越大,页表也就变得非常大,占用内存空间越来越大
   (2)页表要求连续的内存空间存储

多级页表的概念:

 (1)系统为每个进程建一张页目录表,它的每个表项对应一个页表页
 (2)页表页的每个表项给出了页面和页框的对应关系
 (3)页目录表是一级页表,页表页是二级页表
  (4)逻辑地址结构有三部分组成:页目录、页表页、位移量
  学习笔记——存储器管理(1)_第12张图片

多级页表地址转换过程

           学习笔记——存储器管理(1)_第13张图片

多级页表结构的本质

     (1)多级不连续导致多级索引
     (2)以二级页表为例,用户程序的页面不连续存放,要有页面地址索引,该索引是进程页表
      (3)进程页表又是不连续存放的多个页表页,故页表页也要页表页地址索引,该索引就是页目录。
      (4)页目录项是页表页的索引,而页表页项是进程程序的页面索引

关于页表的访存

 二级页表地址转换需三次访问内存,一次访问页目录,一次访问页表页,一次访问指令或数据

你可能感兴趣的:(操作系统)