3.内存管理
2017-01-13 14:20:13 0 举报
AI智能生成
内存管理是操作系统的核心功能之一,它负责有效地分配和回收计算机的物理内存资源。通过合理的内存管理,系统可以确保应用程序在执行过程中获得足够的内存空间,同时避免因内存不足而导致的性能下降或程序崩溃。内存管理的主要任务包括:确定进程的内存需求、为进程分配合适的内存空间、跟踪进程的内存使用情况以及在进程不再需要时回收其内存。为了实现这些目标,操作系统采用了多种内存管理技术,如分页、分段、虚拟内存等。
作者其他创作
大纲/内容
存储分配方式
连续分配
单用户单道程序
分区
方式
固定式分区
分配
数据结构
分区队列
每个分区设置独立的等待队列
全部分区设置一个等待队列
主存使用情况表
地址变换
静态重定位
存储保护
上下限寄存器
可变式分区
分配
数据结构
分区说明表
已分配区表
未分配区说明表
空闲区链
结构
状态位
分区大小
指针
分配算法
首次
改进
循环首次适应算法
最佳
改进
空闲区按容量大小递增排列
最差
地址变换
动态重定位
存储保护
基址(重定位)寄存器+限长寄存器
优缺点
优点
实现多道程序共享内存
实现分区管理的系统设计相对简单
实现存储保护的手段比较简单
缺点
主存利用不充分,存在内零头(固定)+外零头(可变)
无法解决“大作业,小主存”问题
不连续分配
页式管理
页面/物理块(页框)
地址分离
页号 + 页内位移
硬件实现
页表
形成
存储分配
存放
主存
结构
物理块号
控制寄存器
页表基址寄存器(PTBR)
页表长度寄存器(PTLR)
地址变换
注意:地址越界?
执行一次访问操作至少需要两次访问主存
访问页表
访问指定页
快表TLB
为了提高存取速度
地址变换机构中,具有并行查找能力的,高速缓冲寄存器组
TLB命中率
多级页表
页表不连续存储,更有效利用空间
索引/哈希
存储分配
页表
进程控制块
存储空间使用情况表
存储分块表
位示图
存储保护
越界保护
页号与页表长度寄存器的值进行比较
访问保护
在页表中为每个物理块设置保护位
存储共享
段式管理
地址:段号+段内位移
无地址分离
段表
起始地址+长度
地址变换/存储保护
与页式相比,多了段内越界保护
存储分配
分配算法类似可变式分区
段页式管理
地址结构
段号 + 页号 + 页内位移
地址变换
三次访问主存
覆盖与交换
覆盖
发生在进程内
覆盖区
覆盖段
交换
发生在进程间
时机
进程用完时间片或等待输入输出
作业要求扩充存储而得不到满足时
关键
在外存保留副本,每次仅修改变化部分
虚拟内存
特点
多次性
多次装入
对换性
进程的换入换出
虚拟性
借助于外存
基础
局部性原理
时间局限性
空间局限性
请求页式
页表
页号+物理块号+状态位+访问位+修改位+外存地址
缺页中断
进行缺页中断处理后,应重新执行被中断的指令
页面置换
抖动
算法
最佳算法OPT
先入先出算法FIFO
Belady异常
最近最久未用算法LRU
硬件:硬件计数器
软件:栈式页面置换算法
LFU(Least Frequently Used)
时钟页面置换算法CLOCK(第二次机会)
问题
交换区的管理
系统使用交换区的方法
交换空间的设置
确定页面大小
p=(2se)^(1/2)
p=页面大小,s=进程平均大小,e=页表项大小
确定最小物理块数
物理块分配算法
可变分配
固定分配
页面置换策略
全局置换
局部置换
调页时机
预调页
请求调页
页面共享
计数
写时复制
功能
存储分配
地址变换
存储保护
防止地址越界
存取方式检查
存储共享
可重入程序/纯代码
装入和链接
逻辑地址/地址空间
物理地址/存储空间
地址重定位
逻辑地址 → 物理地址
方式
静态重定位
动态重定位
程序链接
静态链接
链接时机
运行前
特点
目标文件比较大
问题
对相对地址进行修改
变换外部调用符号
装入时动态链接
链接时机
装入时
优点
各目标模块分开存放,便于修改和更新
便于实现对目标模块的共享
运行时动态链接
链接时机
运行时
程序装入
绝对装入方式
逻辑地址 = 实际内存地址
绝对地址的获取
程序员直接赋予
编译或汇编时给出
问题
多道环境下编译程序不可能预知所编译模块在内存中的位置
只适合单道程序设计
可重定位装入方式
目标模块的起始地址为0,其他地址相对于起始地址进行计算
静态重定位
优点
无需硬件支持,易实现
为每个程序分配一个连续的存储区
缺点
程序占有连续的存储区
程序执行期间不允许在主存中移动
不能共享存储器中的程序
动态运行时装入方式
装入内存后所有地址仍为相对地址,程序执行时才进行地址变换
动态重定位
重定位寄存器
优点
执行期间可以移动用户程序,只需修改重定位寄存器即可
程序不必占用连续的存储空间
便于多用户共享存储器中的程序
主存利用率高
程序链接
程序装入
0 条评论
下一页