计算机操作系统教程:主存储器管理-期末复习大纲

  1. 存储管理的功能

    1. 范围

      1. 内存资源管理

      2. 外存资源管理(实现分级)

      3. 内存与外存可采取相似的管理技术。

    2. 功能

      1. 存储分配

      2. 存储共享

      3. 存储保护

      4. 存储扩充

      5. 地址映射

  2. 存储分配

    1. 时刻

      1. 作业进入内存时的进程创建

      2. 运行结束后的撤销

      3. 外存和内存空间的交换(基本单位为整个进程,对应程序称为可重定位程序

      4. 长度变化(栈溢出)

    2. 所需表目

      1. 分配表:记录已分配区域

      2. 空闲表:记录未分配区域

      3. 在虚拟存储管理的系统中,内外存各需两表

    3. 覆盖技术

      1. 将较大程序装入较小空间的技术。

      2. 只将全局代码和数据静态放在内存中,其他部分动态装入,后装入的使用先装入的空间,由应用程序自己实现。

  3. 存储共享

    1. 内容

      1. 代码(纯代码,运行时不修改自身)

      2. 数据(目的主要是通信)

    2. 目的

      1. 节省内存空间

      2. 实现进程通信

  4. 存储保护

    1. 防止地址越界

      1. 防止进程侵犯,访问其他进程的空间

    2. 防止操作越权

      1. 防止不同进程越过对共享内存所规定的访问权限

    3. 存储保护一般以硬件支持为主

  5. 存储扩充

    1. 方式

      1. 内存外存结合,形成虚拟存储体系,对用户透明。

    2. 目的

      1. 容量相当于外存,速度接近内存。

  6. 地址映射

    1. 目的

      1. 将逻辑地址转换为物理地址。

    2. 完成映射的硬件机构:存储管理部件

      1. 基址寄存器

      2. 限长寄存器

      3. 快表

    3. 不能完成地址映射时,将产生中断。

  7. 内存资源管理

    1. 内存分区

      1. 静态分区&&等长分区(基于存储器)
        1. 页式,段页式。

        2. 分区在系统运行前确定,分配给进程的内存区域可比实际需要的长。

      2. 动态分区&&异常分区(基于程序结构)
        1. 段式,界地址。

        2. 系统运行过程中划分内存空间。

    2. 内存分配

      1. 静态等长区域分配
        1. 每个区域长度为2的i次方字节,称为一个页面。

        2. 位图:用1为代表一个页面的状态,为1时表明该页面被占用。

        3. 空闲页表:包含首页号和页数。若干连续空闲页作为一组登记在空闲页表。

        4. 空闲页链:分配时取链头的页,去配时将被释放的页面连入链头。节省空间,适用于内存页面的分配。

      2. 动态异常区域分配
        1. 用空闲区域表记录空闲区首地址,空闲区长度。

        2. 最先适应算法
          1. 选取满足申请长度要求的起始地址最小的空闲区域。

          2. 尽量使用低地址空间,在高地址形成较大的空闲区域。但可能会分割较大的空闲区。

        3. 下次适应算法
          1. 自上次分配空闲区域的下一个位置开始,选取第一个可满足的空闲区域。

          2. 使得存储器的低区和高区均匀磨损,分配更均匀。

        4. 最佳适应算法
          1. 分配时选取满足申请且长度最小的空闲区域。

          2. 可能会形成很小以至于无法使用的区域,称为碎片。

            1. 解决方法:移动占有区域,使空闲区域连成一片,这个过程为紧凑。紧凑开销大,尽量避免。

        5. 最坏适应算法
          1. 分配时选取满足申请且长度最大的空闲区域。

          2. 可避免形成碎片,但分割较大的空闲区域。

  8. 单一连续区域(单对界)存储管理

    1. 一个进程有一个起始地址和长度,代码数据放在同一个连续区(动态异常分区)内。

    2. 双对界:一个保存代码,一个保持数据。数据区域为进程独享。

    3. 所需表目

      1. 内存分配表:记录被分配的区域,或省略该表,将其内容登记在各自PCB中。

      2. 空闲区域表。

    4. 所需寄存器

      1. 首址寄存器:整个系统有一个。

      2. 限长寄存器:整个系统有一个。

      3. 系统将经分配后的物理起始地址和长度由分配表或PCB取出,分别送入两个寄存器。

    5. 物理地址=逻辑地址+首址

    6. 地址映射

      1. 需要一次限长(检查逻辑地址是否越界)检查。

  9. 页式存储管理

    1. 内存空间的划分

      1. 面向进程虚拟空间的,静态等长分区。

      2. 每个物理页框有2的i次方个单元,将其从0开始编址,称为页内地址。将页框从0开始编号,称为页框号。

      3. 物理地址=页框号*2的i次方+页内地址

      4. 页框号为物理地址的高位,页内地址为物理地址的低位。

    2. 进程空间的划分

      1. 静态等长分区。

      2. 每个逻辑页面有2的i次方个单元,将其从0开始编址,称为页内地址。将页框从0开始编号,称为逻辑页号。

      3. 逻辑地址=逻辑页号*2的i次方+页内地址

      4. 逻辑页号为逻辑地址的高位,页内地址为逻辑地址的低位。

      5. 逻辑页面是连续的,但其对应的页框不一定连续。

    3. 所需表目

      1. 页表
        1. 每个进程有一个页表。

        2. 记录逻辑页面和内存页框之间的对应关系。

        3. 将逻辑页号与页表的起始地址相加得到页框号的入口地址。

      2. 总页表
        1. 系统有一个总页表。

        2. 记录页框的使用情况。

    4. 所需寄存器

      1. 页表首址寄存器

      2. 页表长度寄存器

      3. 一组联想寄存器:快表

        1. 保存页表的部分项目。

        2. 数量少,速度快,逻辑页号不连续。

    5. 地址映射

      1. 需要一次限长(检查逻辑页号是否越界)检查。

    6. 有效访问时间(EAT)

      1. 快表命中率*(快表访问时间+访问所读物理内存的时间)+(1-快表命中率)*(快表访问时间+访问物理内存(页表)时间+访问所读物理内存的时间)

    7. 多级页表

      1. 问题:系统难以提供长度较大的连续区来存放页表。

      2. 结构

        1. 外页表(页目录表)

        2. 内页表(按需调入内存)

    8. 反置页表

      1. 面向物理页框的,页表内容为pid和逻辑页号p。

      2. 系统有一个反置页表。

      3. 问题:每次访问需顺序搜索

        1. 解决:采用杂凑技术,计算得到入口地址。

    9. 页式存储问题

      1. 消除了外部碎片问题,但存在未被使用的已分配空闲空间,称为页内零头。

    10. 快表可达:页面尺寸*快表容量

  10. 段式内存管理

    1. 分段对用户可见,一个段对应一个程序单位。

    2. 内存空间的划分

      1. 动态异长分区。

      2. 每个物理段在内存中有一个起始地址,称为段首址。物理段内所有单元从0开始编址,称为段内地址。

      3. 物理地址=段首址+段内地址(一维地址

    3. 进程空间的划分

      1. 静态异长分区。

      2. 每个逻辑段对应一个程序单位。逻辑段内所有单元从0开始编址,称为段内地址。每个逻辑段有一个符号名字,称为段名。将逻辑段从0开始编号,称为段号。

        1. 在源程序中使用段名,在编译、连接后转换为段号。

      3. 段号为逻辑地址的高位,段内地址为逻辑地址的低位。(对源程序来说,叫做段名,段内入口名)

      4. 逻辑段是连续的,但其对应的物理段不一定连续。

    4. 所需表目

      1. 段表
        1. 每个进程有一个段表。

        2. 记录段号和段首址之间的对应关系。

        3. 还包含段长这一信息。

      2. 空闲表
        1. 系统有一个空闲表。

        2. 记录内存的使用情况。

    5. 所需寄存器

      1. 段表首址寄存器

      2. 段表长度寄存器

      3. 一组联想寄存器:快表

        1. 保存段表的部分项目。

        2. 数量少,速度快,段号不连续。

    6. 地址映射

      1. 需要一次限长(检查段号是否越界)检查。

      2. 若访问快表,则需要一次限长(检查段内地址是否越界)检查。

      3. 若访问段表,则需要一次限长(检查段内地址是否越界)检查。

    7. 段的共享与保护

      1. 如果某一进程的段号与另一进程的段号对应同一段首址和段长,则实现共享。

      2. 共享的段有访问权限。

      3. 系统有一个共享段表。

  11. 段页式内存管理

    1. 段式方便共享,页式方便解决碎片问题。

    2. 内存空间的划分

      1. 与页式存储管理相同。

      2. 页框号为物理地址高位,页内地址为物理地址低位。

    3. 进程空间的划分

      1. 与段式存储管理相同,进程被静态划分为逻辑段。

      2. 与页式存储管理相同,每段空间被静态划分为若干逻辑页面。

      3. 段号为逻辑地址高位,逻辑页号为逻辑地址中位,页内地址为逻辑地址低位。

      4. 同一段内的逻辑页面是连续的,但其对应的页框不一定连续。

    4. 所需表目

      1. 段表
        1. 每个进程有一个段表。

        2. 记录页表长度与页表地址。

      2. 页表
        1. 每个段有一个页表。

        2. 记录逻辑页号与页框号之间的对应关系。

      3. 总页表(位图)
        1. 系统有一个总页表。

        2. 记录并管理内存页面。

    5. 所需寄存器

      1. 段表首址寄存器

      2. 段表长度寄存器

      3. 一组联想寄存器:快表

        1. 保存段表和页表中的部分项目。

    6. 地址映射

      1. 需要一次限长(检查段号是否越界)检查。

      2. 需要一次限长(检查页号是否越界)检查。

    7. 段的共享与保护

      1. 段的长度可大于内存长度,因为以页为分配单位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值