存储管理的主要功能:
地址转换(逻辑地址转为物理地址 存储器的分配和回收 存储保护 存储扩充
地址转换(重定位)
逻辑地址—>物理地址;多道程序中编译程序不可能预支经编译后所得到的目标模块应放在内存何处,不能用绝对装入,要用可重定位装入。
静态转换:在装入时对目标程序中指令和数据地址进行修改 动态转换
地址转换推迟到真正执行时
静态的不允许程序运行时在内存中移动位置,动态的可以
分配方式
连续分配
单一连续分配
单个程序独占 固定分区分配
划分分区:分区大小相等、不等 内存分配:按大小排序,分区使用表 优点:能在内存中装入多道程序 缺点:存储空间浪费 动态分区分配
数据结构:空闲分区表;空闲分区链 动态分区分配算法:
顺序搜索算法(用于不太大的系统)
首次适应:空闲分区地址递增,从链首开始寻找,满足要求后切割
优点:优先利用低址,保留高址大空闲区,为以后到达的大作业
分配大的内存空间创造了条件
缺点:低址部分被不断划分,留下许多难以利用的、很小的空闲
分区
循环首次适应:空闲分区地址递增,从上次找到的下个空闲分区开始
优点:避免低址部分留下太多空闲分区 缺点:缺乏大的空闲分区
最佳适应:空闲分区大小递增,找到的第一个
优点:避免大材小用
缺点:每次切割剩下的都是最小的,会留下难以利用的碎片
最坏适应:找最大的一个空闲分区
优点:使剩下的空间不会太小,产生碎片的可能性最小,对中小
作业有利
缺点:缺乏大的空闲分区
索引搜索算法(大中型系统)
快速适应:每一类相同容量的分区,单独设一个链表,查找时先去索
引表,然后去链表取下第一块即可(可将其理解为一个菜单) 优点:提高搜索速度 缺点:分区归还主存时较为复杂;分配空闲分区时是以进程为单
位的,一个分区只属于一个进程,存在浪费(以空间换空间)
伙伴系统:内容看书吧
时间性能 :劣于快速适应,优于顺序搜索 空间性能:劣于顺序搜索优于快速适应 哈希算法
直接根据分区大小利用哈希函数计算
分配内存:m.size-u.size<=size
回收内存:回收区与前后空闲分区的邻接情况 动态可重定位分区分配
比动态分区增加了紧凑功能
地址变换在程序执行期间随着对每条指令或数据的访问自动进行(动态地址转
换)
离散分配方式
分页存储管理:将用户程序的地址空间分为若干固定大小的区域(页)
页面:进程的逻辑地址空间分为若干页 物理块:内存的物理地址空间分为若干块 若干页装入多个可以不相邻的物理块
最后一页经常装不满,形成的碎片为“页内碎片” 页面太小
减小内存碎片,内存利用率提高
每个进程占用页面过多,页表过长,占用大量内存 降低页面换进换出的效率 页面太大
减少页表长度,提高换进换出效率 页内碎片增大
页面适中大小:2的幂,通常为1kb-8kb 逻辑地址形式:
页号+位移量/页内地址(一维)
页表:实现从页号到物理块号的地址映射
进程的各个页离散的存储在内存的任一物理块中 为了找到每个页面对应的物理块
地址转换机构
硬件(一个页表项用一个寄存器)实现的动态地址转换机构 存储保护:页表长度寄存器
执行检索前,先将页号与页表长度进行比较,若页号大于等于页表长
度,则 表示本次访问的地址已超越进程的地址空间。这一错误被系统发现,产生越界中断
若未发生越界错误,则将页表始址与页号*页表项长度相加,得到该
表项在页表中的位置
快表
在地址变换机构中增设一个具有并行查询能力的特殊高速缓冲寄存
器(快表)
快表不命中时要访问两次内存
一次访问内存中的页表,找到物理块,将块号与页内偏移量W
(即页内地址)拼接以形成物理地址
第二次从第一次得到的地址中获得所需要的数据
分段存储管理:把用户地址空间分为大小不同的若干段
为了满足用户(程序员)在编程和使用(信息共享、信息保护、动态增长、动
态链接)上的要求,支持以模块为单位进行
逻辑地址形式:段号+段内地址(二维,既包含一部分地址空间,又标识了逻
辑关系) 数据结构
段表(记录该段在内存中的起始地址和段的长度)
段表可放在寄存器(提高地址转换速度)或内存(更常见)中 地址转换
段表寄存器(存放段表始址和段表长度),硬件实现的动态地址转换 存储保护
进行地址变换时,系统将逻辑地址中的段号S与段表长度TL进行比
较,若S>TL则段号太大,访问越界,产生越界中断信号
分页分段管理比较 分页 分段 大小 信息 目的 逻辑地址 固定、硬件决定 信息的物理单位 提高内存利用率 一维,页号+页内地址 不固定、程序决定 的信息逻辑单元,更便于共享 方便程序设计 二维,段号+段内地址
段页式管理
既有分段系统的易于实现、分段可共享、易于保护、动态链接等优点,也能像
分页系统那样,很好的解决内存的外部碎片问题 先将用户程序分成若干段,再把每个段分成若干页,并为每个段赋予一个段名 逻辑地址:段号+段内页号+页内地址(二维)
数据结构:每个进程一张段表(页表地址和页表长度),每个段一张页表,位
视图
地址转换:硬件(段表寄存器)实现的动态地址转换机构,访问3次内存
第一次访问内存中的段表,得到页表始址;第二次访问内存中的页表,去
除该页所在的物理块号,并将该号与页内地址一起形成指令或数据的物理
地址,第三次访问从第二次访问得到的地址中取出指令或数据。
常规存储器
一次性:作业必须一次性装入内存后方能运行
驻留性:作业被装入内存后,整个作业都一直驻留在内存中,其中任何部分都不会被换
出,直至运行结束 局部性原理
在一较短时间内,程序的执行仅局限于某个部分,相应地,它所访问的存储空间也
局限于某个区域。
时间局限性:若程序的某条指令被执行,则不久后这条指令可能再次被执行,若某
条数据被访问过,则这条数据可能再次被访问。原因是程序中存在着大量的循环操作
空间局限性:一旦程序访问了某个存储单元,在不久后,其附近的存储单元也将被
访问,即程序在一段时间内所访问的地址可能集中在一定的范围内。典型情况是程序的顺序执行
虚拟存储器
定义:具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系
统。逻辑容量由内存容量和外村容量之和决定,运行速度接近于内存速度,成本又接近外存 特征
多次性:一个作业的程序和数据无需在作业运行时一次性全部装入内存,而是允许
被分成多次调入内存运行,只需将当前需要运行的那部分程序和数据装入内存即可 对换性:一个作业的程序和数据,无需在作业运行时一直常驻内存,而是允许在作
业的运行过程中进行换进换出
虚拟性:用户看到的内存容量远大于十级内存容量 实现方法
分页请求系统 分段请求系统
请求分页
数据结构
页号、物理块号、状态位P、访问字段A、修改位M、外存地址
状态位:指示该页是否已调入内存 访问字段:记录本页在一段时间内被访问的次数或时多久未被访问,提供给置
换算法进行换进换出时的参考
修改位:标识该页是否被修改过,供置换页面参考 外存地址:通常时物理块号,供调入该页时参考
动态地址转换
硬件+软件 缺页中断 内存分配
固定分配局部置换:进程物理块固定;缺页时只能从分配给该页的n个页面中选出
一页换出,然后再调入一页,以保证分配给进程的内存空间不变 可变分配全局置换:进程运行期间分配的物理块可调整;缺页则将空闲的物理块分
配给该进程,分配给该进程的内存空间增加 可变分配局部置换 调入策略
预调页:预先估计在不久后便会被访问的页面,将其调入内存 请求调页:进程发现需要访问某程序和数据,但此页面不在内存,便立即提出请求,
由OS将需要的页面调入内存 从哪里调入
对换区:系统拥有足够的对换区空间(进程运行前将与该进程有关的文件从文
件去拷贝仅对换区
文件区:系统缺少足够的对换区空间
UNIX方式:放在文件区的直接从文件区调入;曾经用过又换出的,由于放在
对换区,直接从对换区调入;由于unix系统允许页面共享,某进程请求的页面若被其他进程调入内存,可直接使用
抖动:刚被换出的页面很快又要被使用,需要重新调入,此时再选一页调出;而此
刚被调出的页面又很快要被访问,又需要调入,如此频繁的更换页面,以致一个进程在运行中把大部分时间花费在页面置换工作上,称该进程发生了“抖动”
预防方法:采用局部置换;把工作集算法融入处理机调度;利用“L=S”准则调
节缺页率;选择暂停的进程
影响缺页率的因素:置换算法、页面大小、进程分得的页块数量,进程访问内存的
离散程度。 工作集
在某段时间间隔内,进程实际要访问页面的集合
置换算法
OPT最佳置换算法:理想化,性能最好,实际无法实现,以其作为标准衡量其他算
法的优劣
FIFO先进先出算法:最直观,性能最差,实际应用极少 LRU最近最久未用算法 NRU 最近未用算法
LFU 最近最少使用算法
请求分段
段的大小受到物理内存配置的 便于实现段的动态链接
便于实现段的共享:共享段表
段的置换时,有时还要“紧凑”合并空闲分区才能换入要装入的段。
文件系统
文件系统主要功能
文件目录管理
提供文件操作的接口 文件存储空间的管理
文件的共享和文件保护、保密
文件:文件是指由创建者所定义的、 具有文件名的一组相关元素的集合 文件系统:从用户角度看,是实现“按名存取”文件的软件。 逻辑文件(逻辑结构):用户所看到的
文件是由一系列的逻辑记录组成的,是用户可以直接处理的数据及其结构,于
文件的物理特性,又称问文件组织 无结构的字符流文件 有结构的记录文件 物理文件(物理结构):文件在存储介质上的结构,用户看不到 逻辑结构与物理结构都会赢下对文件的检索速度
文件目录:文件控制块的集合,UNIX中,文件目录是文件名与inode号构成的目录项
的集合。
目录文件:文件的内容是文件的目录(DOS中的每个子目录是一个目录文件,UNIX中
的每个目录都是一个目录文件) 目录管理的要求
实现“按名存取”。
提高对目录的检索速度。 文件共享。 允许文件重名。
单级目录结构:查找速度慢 、 不允许重名、 不便于实现文件共享 两级目录(主目录和用户目录):解决了文件的重名问题、可以实现文件的共享。 多级目录结构(树型目录):查找速度快、解决了文件重名问题,可以实现文件的共享。 (当前/工作目录、绝对路径名、相对路径名)