功能
1.内存空间分配和回收
2.地址转换:逻辑地址转换成物理地址
3.内存空间扩充:虚拟存储技术或自动覆盖技术,从逻辑上扩展内存
4.内存共享
5.存储保护:保证各道作业在各自存储空间运行,互不干扰
程序链接与装入
1.编译:把源代码编译成若干个目标模块
2.链接:链接程序编译后形成的一组目标模块和库函数链接,形成装入模块
3.装入:装入模块装入内存
链接
静态链接
运行前,进行链接
装入时动态链接
边装入边链接
运行时动态链接
执行时进行链接
装入
绝对装入
只适用于单道,编译时,编译程序产生绝对地址的目标代码
逻辑地址与实际内存地址完全相同,不需要对程序和数据地址进行修改
可重定位装入(静态重定位)
装入后,作业不能再内存移动,不能再申请内存空间
动态运行时装入(动态重定位)
把地址转换推迟到程序真正执行才进行,需要重定位寄存器支持
程序分配到不连续存储区,运行前只装入部分代码就可运行,程序运行时,需动态进行内存分配
逻辑地址与相对地址
逻辑地址都从0开始
需要通过内存管理部件将逻辑地址转换成物理地址,需要硬件辅助
内存映像
代码段:只读,可共享
数据段:全局变量和局部变量
PCB
堆:存放动态分配变量,通过malloc分配,从低到高增长
栈:实现函数调用,从高到低增长
内存保护
进程有独立进程空间
方法:
1.上下限寄存器
2.重定位寄存器(基址寄存器)和界地址寄存器(限长寄存器)
重定位寄存器含最小物理地址值,界地址寄存器含逻辑地址最大值
内存共享
只读的区域才可以共享
可重入代码(纯代码),允许多个进程同时访问,但不允许更改
连续分配管理方式
内碎片和外碎片
内碎片:分区内有碎片
外碎片:分区之间有碎片
单一连续分配
分为系统区和用户区
仅有一道用户程序,用户区被该程序独占
特点:无外碎片,有内碎片吗,仅用于单用户,单任务
固定分区分配(连续分配)
将内存划分成若干固定区域,每个分区只有一道作业,有空闲便从外存后备作业队列选合适大学装入该分区
两种划分分区
1.分区大小相等
2.分区大小不等
建立分区使用表,按分区大小排队
特点:存在内碎片,无外碎片,不能实现多进程共享一个主存区
动态分区分配(连续分配)
装入时动态分配内存
特点:有外碎片,可以用紧凑技术解决(对进程进行移动和整理,需要动态重定位寄存器支持)
分配策略
首次适应
最好和最快
临近适应
有小碎片
最佳适应(内存碎片可能性最大)
性能差,外部碎片
最坏适应(内存碎片可能性最小)
性能差
基本页式存储管理
划分
进程中为页,内存中为页框,外存为块
页面太小,页表长,占大量内存,增加硬件地址转换开销
页面太大,页内碎片多
地址结构
页表
一般在内存的PCB中
基本地址变换机构
硬件自动完成
地址空间是一维的
快表的地址变换机构
两级页表
现将页表分页,将各个页面离散存放,在离散基础上建外层页表
缺点
采用多级页表会增加查表时间,减慢地址变换速度
如果多级页表不在内存,会增加缺页中断次数
优点
多级页表能减少页表所占连续内存空间,不会减少页表项所占字节数
分段管理
按照用户进程的自然段进行划分
段内要求连续
作业地址空间是二维的
段表
共享性
为了便于共享,系统建立共享段表,物理内存保存一份段内容
地址变换机构
段的共享和保护
两个作业段表中相应表项指向共享段的物理副本
段页式管理
系统有一个段表寄存器,指出作业段表始址和段表长度
(页表寄存器和段表寄存器作用都是段表或页表寻址,判断是否越界)
总结
分页:解决外部碎片,内存利用率高
分段:便于实现,分段可共享,便于保护,可动态链接
段页式:结合优点
虚拟内存管理
基础
局部性理论
虚拟地址
进程访问内存时使用逻辑地址
每个进程拥有自己独立的虚拟地址空间,进程访问内存时,通过地址转换机制实现虚拟地址到物理地址转换
C语言malloc()返回虚拟地址
虚拟内存(离散)
逻辑容量
内存和外存容量之和决定
最大容量(虚拟地址空间大小)
计算机地址结构确定
虚拟存储器
多次性:允许多次将作业分成多份调入内存
对换性:无须作业一直驻留内存,运行将暂时不需要使用的调出内存,等需要使用时再调回内存
虚拟性:逻辑上扩充内存容量
虚拟内存技术实现
实现方式:
请求分页存储管理
请求分段存储管理
请求段页式存储管理
硬件支持
一定容量内存和外存
页表(段表)机制
中断机构
地址变换机构
虚拟页式管理修改位
内存每一页都在外存有副本
在替换某页时,如果没有修改过,就不用将该页写回外存
否则必须将该页写回外存
请求分页存储管理
页表机制
状态位:该页是否调入内存
访问字段:本页被访问次数
缺页中断
访问页面不在内存时,便产生缺页中断,请求操作系统提供缺页处理将所缺页调入内存。
此时将缺页进程阻塞
如果用空闲块就分配并调入页,修改对应页表项
如果没有空闲块,就淘汰某页(淘汰页被修改过,将其写入外存)
地址变换
页框分配
1.驻留集大小
给特定进程分配几个页框
给一个进程分配的物理页框集合是进程驻留集
分配进程页框越小,驻留在主存进程越多,提高CPU利用率
分配页框越小,缺页率越高
分配页框多,没什么影响
2.内存分配策略
固定分配局部置换
可变分配全局置换
可变分配局部置换
抖动
根本原因
进程运行太多,分配物理块太少,从而使频繁缺页,导致排队等待中进程数量增大,造成大多数时间用于页面换进和换出
有效措施
撤销部分进程
对换功能
磁盘空间分为文件区和对换区
文件区用于存放文件
对换区用于存放从主存换出程序或数据
对换
整体对换
以进程为单位对换
部分对换
以进程或页面或段进行对换
页缓冲队列
相联存储器
它允许通过数据内容或者地址来访问存储单元