-
存储管理的功能
-
范围
-
内存资源管理
-
外存资源管理(实现分级)
-
内存与外存可采取相似的管理技术。
-
-
功能
-
存储分配
-
存储共享
-
存储保护
-
存储扩充
-
地址映射
-
-
-
存储分配
-
时刻
-
作业进入内存时的进程创建
-
运行结束后的撤销
-
外存和内存空间的交换(基本单位为整个进程,对应程序称为可重定位程序)
-
长度变化(栈溢出)
-
-
所需表目
-
分配表:记录已分配区域
-
空闲表:记录未分配区域
-
在虚拟存储管理的系统中,内外存各需两表
-
-
覆盖技术
-
将较大程序装入较小空间的技术。
-
只将全局代码和数据静态放在内存中,其他部分动态装入,后装入的使用先装入的空间,由应用程序自己实现。
-
-
-
存储共享
-
内容
-
代码(纯代码,运行时不修改自身)
-
数据(目的主要是通信)
-
-
目的
-
节省内存空间
-
实现进程通信
-
-
-
存储保护
-
防止地址越界
-
防止进程侵犯,访问其他进程的空间
-
-
防止操作越权
-
防止不同进程越过对共享内存所规定的访问权限
-
-
存储保护一般以硬件支持为主
-
-
存储扩充
-
方式
-
内存外存结合,形成虚拟存储体系,对用户透明。
-
-
目的
-
容量相当于外存,速度接近内存。
-
-
-
地址映射
-
目的
-
将逻辑地址转换为物理地址。
-
-
完成映射的硬件机构:存储管理部件
-
基址寄存器
-
限长寄存器
-
快表
-
-
不能完成地址映射时,将产生中断。
-
-
内存资源管理
-
内存分区
-
静态分区&&等长分区(基于存储器)
-
页式,段页式。
-
分区在系统运行前确定,分配给进程的内存区域可比实际需要的长。
-
-
动态分区&&异常分区(基于程序结构)
-
段式,界地址。
-
系统运行过程中划分内存空间。
-
-
-
内存分配
-
静态等长区域分配
-
每个区域长度为2的i次方字节,称为一个页面。
-
位图:用1为代表一个页面的状态,为1时表明该页面被占用。
-
空闲页表:包含首页号和页数。若干连续空闲页作为一组登记在空闲页表。
-
空闲页链:分配时取链头的页,去配时将被释放的页面连入链头。节省空间,适用于内存页面的分配。
-
-
动态异常区域分配
-
用空闲区域表记录空闲区首地址,空闲区长度。
-
最先适应算法
-
选取满足申请长度要求的起始地址最小的空闲区域。
-
尽量使用低地址空间,在高地址形成较大的空闲区域。但可能会分割较大的空闲区。
-
-
下次适应算法
-
自上次分配空闲区域的下一个位置开始,选取第一个可满足的空闲区域。
-
使得存储器的低区和高区均匀磨损,分配更均匀。
-
-
最佳适应算法
-
分配时选取满足申请且长度最小的空闲区域。
-
可能会形成很小以至于无法使用的区域,称为碎片。
-
解决方法:移动占有区域,使空闲区域连成一片,这个过程为紧凑。紧凑开销大,尽量避免。
-
-
-
最坏适应算法
-
分配时选取满足申请且长度最大的空闲区域。
-
可避免形成碎片,但分割较大的空闲区域。
-
-
-
-
-
单一连续区域(单对界)存储管理
-
一个进程有一个起始地址和长度,代码数据放在同一个连续区(动态异常分区)内。
-
双对界:一个保存代码,一个保持数据。数据区域为进程独享。
-
所需表目
-
内存分配表:记录被分配的区域,或省略该表,将其内容登记在各自PCB中。
-
空闲区域表。
-
-
所需寄存器
-
首址寄存器:整个系统有一个。
-
限长寄存器:整个系统有一个。
-
系统将经分配后的物理起始地址和长度由分配表或PCB取出,分别送入两个寄存器。
-
-
物理地址=逻辑地址+首址
-
地址映射
-
需要一次限长(检查逻辑地址是否越界)检查。
-
-
-
页式存储管理
-
内存空间的划分
-
面向进程虚拟空间的,静态等长分区。
-
每个物理页框有2的i次方个单元,将其从0开始编址,称为页内地址。将页框从0开始编号,称为页框号。
-
物理地址=页框号*2的i次方+页内地址
-
页框号为物理地址的高位,页内地址为物理地址的低位。
-
-
进程空间的划分
-
静态等长分区。
-
每个逻辑页面有2的i次方个单元,将其从0开始编址,称为页内地址。将页框从0开始编号,称为逻辑页号。
-
逻辑地址=逻辑页号*2的i次方+页内地址
-
逻辑页号为逻辑地址的高位,页内地址为逻辑地址的低位。
-
逻辑页面是连续的,但其对应的页框不一定连续。
-
-
所需表目
-
页表
-
每个进程有一个页表。
-
记录逻辑页面和内存页框之间的对应关系。
-
将逻辑页号与页表的起始地址相加得到页框号的入口地址。
-
-
总页表
-
系统有一个总页表。
-
记录页框的使用情况。
-
-
-
所需寄存器
-
页表首址寄存器
-
页表长度寄存器
-
一组联想寄存器:快表
-
保存页表的部分项目。
-
数量少,速度快,逻辑页号不连续。
-
-
-
地址映射
-
需要一次限长(检查逻辑页号是否越界)检查。
-
-
有效访问时间(EAT)
-
快表命中率*(快表访问时间+访问所读物理内存的时间)+(1-快表命中率)*(快表访问时间+访问物理内存(页表)时间+访问所读物理内存的时间)
-
-
多级页表
-
问题:系统难以提供长度较大的连续区来存放页表。
-
结构
-
外页表(页目录表)
-
内页表(按需调入内存)
-
-
-
反置页表
-
面向物理页框的,页表内容为pid和逻辑页号p。
-
系统有一个反置页表。
-
问题:每次访问需顺序搜索
-
解决:采用杂凑技术,计算得到入口地址。
-
-
-
页式存储问题
-
消除了外部碎片问题,但存在未被使用的已分配空闲空间,称为页内零头。
-
-
快表可达:页面尺寸*快表容量
-
-
段式内存管理
-
分段对用户可见,一个段对应一个程序单位。
-
内存空间的划分
-
动态异长分区。
-
每个物理段在内存中有一个起始地址,称为段首址。物理段内所有单元从0开始编址,称为段内地址。
-
物理地址=段首址+段内地址(一维地址)
-
-
进程空间的划分
-
静态异长分区。
-
每个逻辑段对应一个程序单位。逻辑段内所有单元从0开始编址,称为段内地址。每个逻辑段有一个符号名字,称为段名。将逻辑段从0开始编号,称为段号。
-
在源程序中使用段名,在编译、连接后转换为段号。
-
-
段号为逻辑地址的高位,段内地址为逻辑地址的低位。(对源程序来说,叫做段名,段内入口名)
-
逻辑段是连续的,但其对应的物理段不一定连续。
-
-
所需表目
-
段表
-
每个进程有一个段表。
-
记录段号和段首址之间的对应关系。
-
还包含段长这一信息。
-
-
空闲表
-
系统有一个空闲表。
-
记录内存的使用情况。
-
-
-
所需寄存器
-
段表首址寄存器
-
段表长度寄存器
-
一组联想寄存器:快表
-
保存段表的部分项目。
-
数量少,速度快,段号不连续。
-
-
-
地址映射
-
需要一次限长(检查段号是否越界)检查。
-
若访问快表,则需要一次限长(检查段内地址是否越界)检查。
-
若访问段表,则需要一次限长(检查段内地址是否越界)检查。
-
-
段的共享与保护
-
如果某一进程的段号与另一进程的段号对应同一段首址和段长,则实现共享。
-
共享的段有访问权限。
-
系统有一个共享段表。
-
-
-
段页式内存管理
-
段式方便共享,页式方便解决碎片问题。
-
内存空间的划分
-
与页式存储管理相同。
-
页框号为物理地址高位,页内地址为物理地址低位。
-
-
进程空间的划分
-
与段式存储管理相同,进程被静态划分为逻辑段。
-
与页式存储管理相同,每段空间被静态划分为若干逻辑页面。
-
段号为逻辑地址高位,逻辑页号为逻辑地址中位,页内地址为逻辑地址低位。
-
同一段内的逻辑页面是连续的,但其对应的页框不一定连续。
-
-
所需表目
-
段表
-
每个进程有一个段表。
-
记录页表长度与页表地址。
-
-
页表
-
每个段有一个页表。
-
记录逻辑页号与页框号之间的对应关系。
-
-
总页表(位图)
-
系统有一个总页表。
-
记录并管理内存页面。
-
-
-
所需寄存器
-
段表首址寄存器
-
段表长度寄存器
-
一组联想寄存器:快表
-
保存段表和页表中的部分项目。
-
-
-
地址映射
-
需要一次限长(检查段号是否越界)检查。
-
需要一次限长(检查页号是否越界)检查。
-
-
段的共享与保护
-
段的长度可大于内存长度,因为以页为分配单位。
-
-
计算机操作系统教程:主存储器管理-期末复习大纲
最新推荐文章于 2024-10-09 11:27:45 发布