02323 操作系统概论 第四章 内存管理

第一节 存储器的层次结构

存储器系统是一个具有不同容量, 成本和访问时间的存储设备的层次结构
从高层到低屋(L0-L5), 数据越大, 层次越低, 存储设备速度越慢, 容量更大, 价格更便宜.
CPU寄存器保存最常用的数据(L0层)
芯片内的L1高速缓存(SRAM) L1
芯片外的L2高速缓存(SRAM) L2
主存储器(DRAM) 也就是内存条 L3
本地二级存储 本地硬盘 L4
远程二级存储 FTP服务器等 L5

  • 程序的执行遵循局部性原理.表现为: 时间局部性和空间局部性
  • 过程调用的深度都不会超过5

第二节程序的链接和装入

一. 程序链接

链接程序不属于操作系统的构成部分, 但是它为操作系统提供可装入的程序模块. 链接程序要解决的问题是将编译后的目标模块装配成一个可执行的程序.

  1. 静态链接
  2. 动态链接

二. 程序的装入

  1. 绝对装入方式
  2. 可重定位装入方式(静态重定位)
  • 在程序装入时 对目标程序中的指令和数据地址的修改过程称为 重定位
  • 物理地址 = 逻辑地址 + 程序在内存中起始地址.
  1. 动态运行时装入(动态重定位)
  • 重定位寄存器是每CPU一个的, 当发生切换时, 要用获得的CPU的进程在内存的起始地址更新重定位寄存器

第三节. 连续分配存储管理方式

  1. 单一连续分配方式:适用单用户,单任务的系统
  2. 固定分区分配方式: 将内存用户区划分成若干个固定大小的区域, 每个区域中驻留一道程序
  3. 动态分区分配方式: 系统动态地对内存进行划分, 根据进程需要的空间大小分配内存. 内存中分区的大小和数量是变化的, 动态分区比静态分区提高了内存利用率.

一. 单一连续分配

二. 固定分区分配

  1. 划分分区的方法
    1). 分区大小相等: 适合控制多个相同对象的场合
    2). 分区大小不等: 减少内存浪费
  2. 支持固定分区分配的数据结构
  3. 固定分区分配的过程
  4. 固定分区的回收: 分配简单, 但浪费空间内存利用率低下, 现在的多道程序系统很少使用固定分区分配的内存管理方式. 但在某个实时控制系统中, 固定分区方式简单高效.

三. 动态分区分配

  1. 动态分区分配原理:
  2. 动态分区分配中的数据结构
    1). 空闲分区表
struct {
	int num;  //分区编号
	int length;  // 分区长度
	int addr;  // 分区起始地址
}

数组大小根据系统管理的最大分区数确定

2). 空闲分区链
使用空闲分区链可以动态地为每一个空闲分区建立一个结点, 每个结点包括分区大小,分区起始位置, 指向前一个空闲分区的指针,以及指向后一个空闲分区的结点的指针.
3. 动态分区分配算法
1). 首次适应算法:按开始地址递增排序
外部碎片
内部碎片
2). 循环首次适应算法
优点: 空间区分布均匀, 查找开锁较小
缺点: 容易使分区缺少大空闲区
3). 最佳适应算法: 每次进程分配前对空闲区按空闲区的大小递增排序
优点: 避免了大材小用, 能提高内存利用率,
缺点: 容易留下难以利用的小空闲区
4. 动态分区分配的流程
1). 内存分配流程
三种邻接情况:
仅回收区的前面有相邻的空闲分区
仅回收区的后面有相邻的空闲分区
回收区的前后都有相邻的空闲分区

第四节 基本分页存储管理方式

把进程离散地存储在内存中物理地址不连续的区域中, 这种内存管理方式称为离散内存管理方式.
主要有三种管理方式: 分页存储管理, 分段存储管理, 段页式存储管理

一. 分页存储管理的基本原理

  1. 基本概念:
    1),页: 将一个进程的逻辑地址空间分成若干个大小相等的片, 称为页
    2). 页框: 将物理内存空间分成与页大小相同的若干个存储块, 称为页框或页帧
    3). 分页储存: 在为进程分配内存时, 以页框为单位将进程中的若干个页分别装入多个可以不相连的页框中
    4), 页内磁片: 进程的最后一页装不满一个页框, 而形成了不可利用的碎片, 称为页内碎片, 是一种部分碎片
    5). 页表, 是系统为进程建立的数据结构, 页表的作用是实现从页号到页框号的映射.在基本的分页机制中, 每个进程有一个页表, 进程的每一个页在页表中有一个对应的页表项, 页表在内存中连续存放.
  2. 基本分页存储管理方式中的地址结构
    基本分页的逻辑地址结构包含两部分: 页号P和页内偏移量W. 若用m位表示逻辑地址,页大小为2n字节, 则用低n位表示页内偏移量W, 用高m-n表示页号P
    210个字节=1024B, 即1KB
    220个字节=1024B1024, 即1MB
    230个字节=1024B
    1024*1024, 即1GB

若A为逻辑地址, L为页大小, P为页号, W为页内偏移量, 则有以下计算关系
P = INT(A/L)
W = MOD(A/L)

  1. 分页地址变换
    为了能将用户地址空间中逻辑地址变换为内存空间中的物理地址, 在系统中必须设置地址变换机构, 该机构的基本任务是实现逻辑地址到物理地址的变换.
    页号对应的页表项起始地址=页表起始地址+页表项长度 x 页号
    物理地址=页框大小 x 页框号+页内偏移量
  2. 页大小的选择
    在分页系统中, 页的大小是由机器的体系结构和操作系统共同决定的.
    一般页的大小为2的整数次幂, 在目前的计算机系统中, 大多选择4KB大小的页
    影响页大小设计的因素如下:
    1). 管理内存的开锁
    2). 内存的利用率

二. 快表

页表的硬件实现有多种方法, 最为简单的一种方法就是将页表存放在一组专用寄存器中.
现代计算机系统中, 都把页表放在内存中, 这种情况下, CPU访问内存读写数据,或读取指令, 必须访问两次内存.为了减少CPU在有效访存上的时间开锁, 提高访存速度, 在硬件上引入了快表机制.

  1. 什么是快表
    快表也称转换后援缓冲(TLB), 是为了提高CPU访存速度而采用的专用缓存, 用来存放最近被访问过的页表项. TLB是关联的快速闪存,TLB的条目由两部分组成:键和值, TLB的条目有有限, 一般在64到1024之间
  2. 引入TLB之后的地址变换过程
  3. TLB性能分析
    TLB中找到某一个页号对应的页表项的百分比称为TLB命中率… 当能在TLB中找到所需要的表项, 有效访存时间等于一次访问TLB的时间加上一次内存的时间

三. 两级和多级页表

  1. 两级页表
    两级页表是将页表再进行分页, 使每个页表分页的大小与内存页框的大小相同, 并为它们编号, 页目录表中的每个表项中记录了页表分页所在页框号
    本书中把这种页表分页称为页表
    1). 两级页表的逻辑地址结构
    物理地址 = A所在的页框号 x 页框大小 + 页内偏移量d.
  1. 两级页表的寻址.
  2. 减少的页表占用内存的方法
    当前所需要的页目录表和页表存放在内存中, 其余页表存放在外存中, 当所需页表不在内存中时, 产生中断, 将请求的页表调入内存.
  1. 多级页表结构

四. 反置页表

  1. 反置页表
  2. 反置页的地址映射

第五节 基于分页的虚拟存储系统

虚拟存储器是指具有请求调入功能和置换功能, 能从逻辑上对内存容量进行扩充的一种存储器系统.
好处: 提高内存利用率.
提高多道程序度
把逻辑地址空间和物理地址空间分开,
虚拟存储系统具有以下几个特征:

  • 离散性: 离散性是实现虚拟存储管理的基础
  • 多次性
  • 对换性
  • 虚拟性, 虚拟性是实现虚拟存储系统的最重要的目标.
    请求分页系统是最基本, 最常用的虚拟存储系统的实现方式.

一. 请求分页的硬件支持

为了实现请求分页, 需要特殊的页表, 缺页异常机构和支持请求分页的地址变换机构

  1. 页表, 是请求分页系统最重要的数据结构, 其作用
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值