os梳理5——第五章:存储器管理
-
翻书整理非ai,可能存在不严谨的地方~~
-
一:存储器层次结构
-
最高:cpu寄存器(在cpu内部)
-
中间:主存储器
-
最低层:辅助存储器
-
-
二:程序的装入与链接
-
地址绑定
-
概念:
-
将程序中的逻辑地址转换为物理内存地址的过程
-
在编译时绑定
-
缺点:只适用于早期单道批,只能将程序加载到固定内存位置;程序无法移动
-
优点:执行速度快
-
-
在装入时绑定
-
优点:可以加载到内存的任何可用位置
-
缺点:多道灵活性仍然受限
-
-
在运行时绑定(动态重定位)
-
-
内存保护
-
概念:
-
确保每个进程只能访问自己分配的内存区域,防止进程间相互干扰
-
典型内存保护错误示例
-
总线错误
-
访问了物理不存在的内存
-
-
堆栈溢出
-
通常由无限递归或者超级大的局部变量引起
-
-
段错误
-
因为访问了未分配,权限不足的内存
-
-
-
-
程序的装入
-
绝对装入方式
-
产生绝对地址
-
单道
-
-
可重定位装入方式(静态重定位)
-
会使装入模块种所以的逻辑地址转换为物理地址
-
地址变换一次性完成,以后不再改变
-
单道
-
-
动态运行时装入方式
-
多道
-
程序装入时不立刻转换地址
-
运行时需要用重定位寄存器转换
-
-
-
程序的链接
-
静态链接
-
运行前链接
-
形成完整可执行文件
-
占用空间大,更新困难
-
-
装入时动态链接
-
边装入边链接
-
装入时间长
-
便于实现模块更新共享
-
-
运行时动态链接
-
运行时链接
-
节省内存
-
灵活高效
-
-
-
-
三:对换与覆盖
-
对换
-
暂时不用的进程放到外存
-
需要的进程放到内存
-
有助于内存扩充
-
空间管理:连续分配,提高换入换出效率
-
-
覆盖
-
程序的不同模块共享同一块内存区域
-
适用于小内存系统
-
需要更复杂的程序设计
-
-
-
四:连续分配存储管理方式
-
单一连续分配
-
内存分为:系统区,用户区
-
缺点:内存利用率低,只支持单任务
-
-
固定分区分配
-
内存划分为固定大小的分区,每个分区一个作业
-
缺点:存在内存碎片
-
-
动态分区分配
-
根据作业大小动态创建分区
-
常用分配算法
-
首次适应
-
最佳适应
-
最坏适应
-
临近适应
-
-
-
-
五:离散分配存储管理方式
-
分页存储管理
-
特点
-
将内存和进程划分为固定大小的页 / 页框
-
通过页表实现从逻辑地址到物理地址的转换
-
存在页内碎片,支持虚拟存储
-
-
分类
-
快表(TLB)
-
作用
-
存储最近访问的页表项
-
-
作用效果
-
加速地址转换的专用高速缓存
-
-
-
多级页表
-
作用
-
解决大地址空间页表占用过多内存的问题
-
-
例如
-
二级页表,三级页表
-
-
-
-
-
分段存储管理
-
特点
-
按逻辑单位划分,比如函数,数组
-
支持共享保护
-
存在外部碎片
-
-
-
段页式存储管理
-
特点
-
兼具分段存储,分页存储的优点
-
兼具二者特点
-
先分段,段内再进行分页
-
需要段表和页表共同完成地址转换
-
-
-
-