操作系统2期末
第四章 存储器管理
存储器的多层结构
基本存储层次3层
- CPU寄存器
- 主存
- 辅存
高档计算机中功能细分为6层
- [CPU寄存器]寄存器
- [主存]高速缓存
- [主存]主存储器
- [主存]磁盘缓存
- [辅存]固定磁盘
- [辅存]可移动存储介质
主存与寄存器
- 主存储器/内存
- 寄存器
高速缓存和磁盘缓存
- 高速缓存
- 磁盘缓存
用户程序的运行
- 编译(源程序经过编译程序形成目标模块)
- 链接(目标模块经过链接程序形成完整装入模块)
- 装入(由装入模块把装入模块装入内存)
程序的装入
- 绝对装入
- 可重定位装入/静态重定位
- 动态运行时装入
程序的链接
目标模块和需要的库函数装配成完整装入模块
- 静态链接方式
- 装入时动态链接
- 运行时动态链接
三个连续分配存储方式
- 单一连续分配
仅用于单用户,单任务系统 内存中只有一道程序
没有外部碎片 有内部碎片
利用率较低
- 固定分区分配
最简单的多道程序存储管理
存在两个问题
没有外部碎片 有内部碎片 利用率低
动态分区分配/可表分区分配
动态划分区域,不预先划分
分区的大小/数目可变
有外部碎片(可以用紧凑方式解决,需要重定位寄存器)
顺序搜索的四种动态分区分配算法(很有可能大题)
- 首次适应
- 循环首次适应
- 最佳适应
- 最坏适应
索引搜索的动态分配算法
- 快速适应/分类搜索法
根据空闲分区的容量大小进行分类
- 伙伴系统
已分配分区和空闲分区的大小都是2的k次幂
$$buddy_k(x)=\begin{cases}x+2^k(若xMOD 2^{k+1}=0)\\\\x-2^k(若xMOD2^{k+1}=2^k)\end{cases}$$
- 哈希算法
动态可重定位分区分配
- 紧凑
- 动态重定位
- 单一连续分配
对换/交换技术
- 覆盖:同一个程序、进程中
- 交换:不同进程和作业间
非连续分配管理分为三种:
每个进程有一个页表,页表驻留内存
分页存储管理
- 分为:基本分页和请求分页;基本和请求的区别在于是否需要把作业中所有页面装入内存才能运行
- 页表中放每页在内存中的物理块号
分段存储管理
- 分为:基本分段和请求分段
分段存储管理的优点有:
- 方便编程
- 信息共享
- 信息保护
- 动态增长
- 动态链接
- 段表中记录每个段的始地址和段的长度
分段的信息共享
- 可重入代码/纯代码 不能修改;若需要修改则必须把可能改变的数据复制到进程的局部数据区,并修改局部数据区的数据
段页式存储管理
段页式结合了页式和段式:每个进程一张段表,每个段一张页表
- 用分段方式分配和管理用户地址空间
- 用分页方式来管理物理内存空间
- 段页式基本原理
程序分段,段内分页
段表中放的是页表的始地址和页表的长度
一般(没有高速缓冲寄存器的时候)每次都需要访问内存三次
- 段页式的地址变换过程
第五章 虚拟存储器
常规存储器管理方式的特征
- 一次性
- 驻留性
虚拟存储器的特征
- 多次性
- 对换性
- 虚拟性
虚拟存储器的实现方法
- 分页请求系统
- 请求分段系统
请求分页存储管理方式
请求分页中的硬件支持
- 请求页表机制
- 缺页中断机构
- 地址变换机构
请求分页的内存分配中涉及的三个问题
- 最小物理块数的确定
内存分配策略
- 固定分配局部置换
- 可变分配全局置换
- 可变分配局部置换
- 物理块分配算法
页面调入策略的三个问题
- 何时调入页面
- 从何处调入页面
- 页面调入过程
影响缺页率的因素
- 页面大小
- 进程所分配物理块的数目
- 页面置换算法
- 程序固有特征
页面置换算法:选择换出页面的算法称为页面置换算法
不适当的页面置换算法会导致抖动(刚被换出的页面很快又被访问,又需要换入)
- 最佳置换算法OPT
理想化/理论上的算法
淘汰页在最长(未来)不会被使用的
- 先进先出置换算法FCFS
淘汰最先进入的页面
- 最近最久未使用LRU
必须有硬件支持:寄存器或栈
- 最少使用置换LFU
为内存中的每一个页面设置一个移位寄存器 记录页面被访问频率
淘汰最近时期使用最少的页
Clock置换算法(LRU的近似算法)
解决了LRU需要硬件支持的问题
- 简单的Clock置换算法/NRU(Not Recently Used)算法
每个页面一位访问位,所有页面通过链接指针链接为一个循环队列
- 改进型Clock置换算法
- 简单的Clock置换算法/NRU(Not Recently Used)算法
- 最佳置换算法OPT
页面缓冲算法
影响页面换进换出效率的若干因素
- 页面置换算法
- 写回磁盘的频率
- 读入内存的频率
- 页面缓冲算法PBA
访问内存的有效时间EAT计算(具有快表机制的请求分页管理方式)
$\lambda$是查找快表的时间 t是访问实际物理地址需要的时间 e是缺页中断的时间
- 被访问页在内存 页表项在快表中
$EAT=\lambda+t$
- 被访问页在内存 页表项不在快表中
$EAT=\lambda+t+\lambda+t=2*(\lambda+t)$
- 被访问页不在内存中
$EAT=\lambda+t+e+\lambda+t$
- 被访问页在内存 页表项在快表中
抖动和工作集的概念
- 产生抖动的根本原因:系统中进程太多,分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求。致使每个进程在运行时,频繁出现缺页,必须请求系统将所缺页面调入内存。这会导致每个进程的大部分时间都用于进程的换进和换出,不能做任何有效工作,导致处理机利用率几乎为0.
- 工作集:某段时间间隔中,进程实际访问的页面集合。
抖动的预防
- 采用局部置换策略
- 把工作集算法融入到处理机调度中
- 使用L=S准则调节缺页率
- 选择暂停的过程
请求分段存储管理方式
请求分段的硬件支持
- 请求段表机制
- 缺段中断机构
- 地址变换机构
分段的共享和保护(分段的一个优点就是便于实现分段的共享和保护)
- 共享段表
- 共享段分配和回收
分段保护
- 越界检查
- 存取控制检查
- 环保护机构
第六章 输入输出系统
IO系统基本功能
- [方便用户使用IO]隐藏物理设备的细节
- [方便用户使用IO]与设备的无关性
- [提高CPU和IO的利用率]提高处理机和IO设备的利用率
- [提高CPU和IO的利用率]对IO设备进行控制
- [方便用户共享设备]确保对设备的正确共享
- [方便用户共享设备]错误处理
IO系统的层次结构和模型
- IO软件层次结构
- IO系统中各模块的层次视图
IO系统接口
IO设备和设备控制器
- IO设备分类
- 设备控制器
中断机构和中断处理程序
- 中断机构
- 中断处理程序
设备驱动程序
[必考]磁盘存储器的性能和调度
改善磁盘系统性能的方法
- 选择好的磁盘调度算法,减少磁盘寻道时间
- 提高磁盘IO速度,提高对文件的访问速度
- 冗余技术,提高磁盘系统可靠性
磁盘的数据和格式
- 磁盘设备包括一个/多个盘片
- 每个盘片有一个/两个存储面
- 每个盘面有若干个磁道,每个磁道上可存储相同数目二进制位数
- 一个物理记录存储在一个扇区/盘块/数据块上
- 磁盘能存储的物理记录块数目是由扇区数、磁道数以及磁盘面数所决定的。
磁盘类型
- 固定头磁盘:磁盘在每一条磁道上都有一个读/写磁头
- 活动/移动头磁盘:每个盘面仅由一个磁头
磁盘访问时间(由三部分组成)
- 寻道时间$$T_s$$:把磁头移动到指定磁道上所经历的时间。
$T_s$=启动磁臂的时间s+移动n条磁道的时间
- 旋转延迟时间$T_{pi}$:指定扇区移动到磁头经历的时间
- 传输时间$T_t$:指把数据从磁盘读出或向磁盘写入数据所经历的时间。
$T_t=\frac{b}{rN}$ 其中r是磁盘每妙的转数 N是一条磁道上的字节数
- 寻道时间$$T_s$$:把磁头移动到指定磁道上所经历的时间。
磁盘调度算法(目标是使平均寻道时间最少)
早期的磁盘调度算法
- 先来先服务FCFS(只有FCFS算法不会导致磁臂黏着)
- 最短寻道时间有限SSTF:可能会导致饥饿
基于扫描的磁盘调度算法
- 扫描(SCAN)算法/电梯调度算法
在最大最小之间来回移动(具体看题目意思)
- 循环(CSCAN)扫描算法
磁道单项行走
扫描到了最大之后 直接回到最小的
NStepSCAN和FSCAN调度算法
- NStep:将磁盘请求队列分为N步一处理 外部按照FCFS处理子队列 内部按照SCAN算法处理N步序列
- FSCAN:分为两个子队列处理
- 扫描(SCAN)算法/电梯调度算法
第七章 文件管理
文件和文件系统
数据组成成分的分类(基于文件系统的概念)
数据项
- 基本数据项
- 组合数据项
- 记录:一组相关数据项的集合
文件
- 结构文件
- 无结构文件
文件名和文件类型
- 文件名和扩展名
文件类型
按照文件用途分类
- 系统文件:系统软件构成的文件,允许调用,不允许读和修改
- 用户文件
- 库文件:标准子例程、常用例程构成的文件,允许调用不允许修改
按照文件中数据形式分类
- 源文件
- 目标文件:源程序经过编译,但是还没有链接的目标代码 后缀是".obj"
- 可执行文件:编译后代码经过链接形成的文件
按存取控制属性分类
- 只执行文件
- 只读文件
- 读写文件
按组织形式和处理方式分类
- 普通文件
- 目录文件:由文件目录组成的文件 通过目录文件可以对它的下属文件的信息进行检索 对其可执行文件进行操作
- 特殊文件:系统中各类IO设备
文件系统的层次结构
文件系统模型的三个层次
对象及其属性
文件系统管理的三个对象:
- 文件
- 目录
- 磁盘/磁带存储空间
对 对象 操纵和管理的软件集合(文件管理系统的核心)
- 文件系统功能大部分在这一层实现!
这一层实现的功能:
- 对文件存储空间的管理
- 对文件目录的管理
- 用于将逻辑地址转为物理地址的机制
- 对文件读写的管理
- 对文件共享与保护等功能
- 实现以上功能时,OS一般会给文件分层
与文件系统有关的软件分层(4层)
- IO控制层
- 基本文件管理层
- 基本IO管理程序
- 逻辑文件系统
文件系统的接口
- 命令接口:通过键盘终端
- 程序接口
文件操作
- 基本文件操作
- 文件“打开”和“关闭”
- 其他文件操作
文件的逻辑结构
用户看到的文件叫做逻辑文件
文件的两种结构
- 逻辑结构/文件组织:从用户观点出发 观察到的文件组织形式
- 物理结构/存储结构:系统将文件存储在外存上所形成的存储组织形式;与存储介质的性能有关,与外存分配方式也有关
文件逻辑结构的类型
成批组织文件时的目标:提高检索记录速度和效率,方便修改文件,尽量减少文件占用的存储空间
按照结构分类
有结构文件/记录式文件
- 定长记录:文件中记录长度都相同
- 不定长记录:文件中记录长度不相同
- 无结构文件/流式记录:系统中运行的大量的源程序,可执行文件,库函数都是;文件长度以字节为单位;如果看作是有结构文件,那么一个字节作为一个记录
按照文件组织方式分类
顺序文件:由一系列记录按照某种顺序排列而成的文件,记录可以是定长记录可以是变长记录
按照顺序文件中记录排列方式分类
- 串结构
- 顺序结构
顺序文件优点
最佳应用场景:要对文件中的记录批量存取时
- 存取效率最高
- 顺序存储(磁带)设备只能存储顺序文件
顺序文件缺点(增删改查都很难)
- 交互式场景如果要修改单个记录,效率性能可能差;大文件的时候效率也很差(概括为:查找或者修改很困难)
- 增加和删除记录困难
改进:为顺序文件配置一个运行记录文件或称为事务文件
顺序文件中记录寻址方式(找到一条记录的位置)
- 隐式寻址
显式寻址
- 可以对于定长记录文件的直接、随机访问
- (增加适当的支持机构后)能实现对于不定长文件的直接、随机访问
索引文件:为可变长记录建立一张索引表,为每个记录设置一个表项,以加速对记录的检索速度
- 按照关键字建立索引
两种方式:
- 按关键字建立索引
为变长记录建立索引表,为主文件中每个记录在索引表中设置一个表项,记录指向记录的指针(记录在逻辑地址空间的首地址)和记录长度L,索引表按照关键字排序。(索引表本身是定长记录的顺序文件)
- 具有多个索引表的索引文件
不同用户为了不同目的,可以为一个顺序文件建立多个索引表。(每一个可能成为检索条件的域配置一张索引表)
- 按关键字建立索引
索引文件优点
- 检索速度快:把需要顺序查找的文件变为了可随机查找的文件
- 插入删除记录方便
索引文件缺点
- 需要配置索引表
- 每个记录都需要索引项,增加存储开销
索引顺序文件:(顺序文件和索引文件结合的产物,对顺序文件的改进版本)
特点:
- 保留了顺序文件按照关键字组织的特征,但是克服了变长记录顺序文件不能随机访问、不便于插入删除记录的缺点
- 增加了文件索引表
- 增加了溢出文件
- 为每个文件建立一张索引表
- 为一组记录中的第一个记录建立一个索引表项
- 定义:
直接文件
- 直接文件的定义:根据给定的关键字直接获得指定记录的物理地址;即关键字本身决定了记录的物理地址。
- 从关键字到记录物理地址的转换被称为键值转换
- 组织直接文件的关键在于如何进行记录值到物理地址的转换
- 哈希文件(最广泛运用的一种直接文件)
利用Hash函数(散列函数)将关键字直接转化为相应记录
文件目录
目录管理的要求
- 实现“按名存取”:提供文件名就能快速准确查找指定文件在外存上的存储位置
- 提高对目录的检索速度
- 文件共享:允许多个用户共享一个文件
- 允许文件重命名:允许不同用户对不同文件用相同名称
文件控制块FCB
文件和文件控制块一一对应
文件控制块的集合称为文件目录,一个文件控制块就是一个文件目录项,一个文件目录也被看作一个目录文件
FCB包含的三种信息:
- 基本信息
- 存取控制信息:文件主的存取权限、核准用户存取权限、一般用户存取权限
- 使用信息:文件的建立日期和时间、文件上次修改日期时间、当前使用信息
索引结点
- 引入/为什么需要索引结点:对于文件描述信息不需要调入内存(在寻找文件的时候只需要文件名)所以把文件描述信息单独形成一个称作索引结点的数据结构(i结点);
- 引入索引结点后,文件目录中每个目录项仅由文件名和文件对应i结点的指针组成。
- 磁盘索引结点:存放在磁盘上的索引结点;每个文件有唯一的一个磁盘索引结点
- 内存索引结点:存放在内存中的索引结点;当文件被打开时,将磁盘索引结点拷贝到内存的索引结点中
文件目录的结构:
简单文件目录
- 单级文件目录
两级文件目录
- UFD 用户文件目录 User File Directory
- MFD 主文件目录 Master File Directory
树形文件目录(现代OS中最通用且最实用的文件目录)
路径名path name
- 从根目录到数据文件,把目录文件名和数据文件名依次用/连接
当前目录
- 为每个进程设置一个当前目录/工作目录,进程对于文件的访问基于当前目录
- 目录操作(略)
树形目录的优点
- 查询速度更快
- 层次结构更加清晰,可以容易地赋予不同的存储权限
- 树形目录的缺点:在树形目录中查找一个文件,需要按照路径名逐级访问中间结点,增加磁盘访问次数,影响查询速度
目录查询技术:
- 线性检索法/顺序检索法
- Hash方法
文件共享
- 基于有向无循环图(DAG)实现文件共享
- 利用符号链接实现文件共享
文件保护
影响文件安全的三个因素和解决方案:
- 人为因素
解决:通过存取控制机制,防止由人为因素造成的文件不安全性
- 系统因素
解决:采取系统容错技术,防止系统部分的故障所造成的文件不安全性
- 自然因素
解决:建立后备系统,防止由自然因素所造成的不安全性
- 人为因素
存取控制机制
- 访问权:进程只允许访问他们有“访问权”的对象
定义:进程对于某个对象执行操作的权利
- 保护域/域:每个进程只能在保护域内执行操作(规定了能访问的对象和执行的操作)
定义:进程对于一组对象访问权的集合
- 访问权:进程只允许访问他们有“访问权”的对象
第八章 磁盘存储器的管理
磁盘存储器的优点:
- 存储容量大
- 存取速度快
- 可以实现随机存取
磁盘存储器管理的主要任务和要求:
1. 有效利用存储空间 2. 提高磁盘IO速度 3. 提高磁盘系统的可靠性
外存的组织方式:文件的物理结构和外存组织方式有关。
##### 对于不同的外存组织方式将形成不同的文件物理结构。
##### 常用的组织方式有连续组织方式、链接组织方式和索引组织方式
连续组织方式/连续分配方式
- 定义:逻辑文件中的记录顺序存储到邻接的物理盘块中,形成文件结构叫顺序文件结构,文件叫顺序文件。
优点:
- 顺序访问容易
- 顺序访问快
缺点:
- 要求为文件分配连续的存储空间
说明:连续分配会产生外部碎片,浪费外存利用率;
紧凑方法可以消除外部碎片,但是浪费大量机器时间。
- 必须事先知道文件的长度
- 不能灵活的插入删除记录
- 对于动态增长的文件,事先不能知道文件最终大小,很难为它们分配空间;即使事先知道文件最终大小,在采用预分配的方法时,也会使大量存储空间长期空闲。
- 要求为文件分配连续的存储空间
文件的索引组织方式[教材8.1.5]:
链接组织方式的一些问题:
- 不能高效的直接存取
- FAT占用较大内存
- 索引组织方式基于:打开文件时只需要把文件占用的盘块编号调入内存,不需要将整个FAT调入内存。
因此,索引组织基于把所有文件对应的盘块号集中为索引表,在访问的时候把盘块号调入内存。
索引组织方式的优点:
- 既支持顺序访问又支持随机访问/可以直接访问
- 查找效率高
- 便于文件删除
- 索引组织方式的缺点:索引表占用一定空间
三种索引组织方式
- 单级索引组织方式
每个文件分配一个索引块/表,分配给这个文件的所有盘块号都记录在索引块中。建立文件的时候只用在目录项中填指向该索引块的指针。
- 单级索引优点:支持直接访问,不会产生外部碎片。在文件大的时候索引优于链接。
- 单级索引缺点:对小型文件采取分配,使索引块利用率变低。(因为索引块可能甚至大于文件大小)
- 多级索引组织方式
为一个文件分配的盘块号装满了一个索引块,需要再分配一个索引块。
这种时候可以建立多级索引:
- 多级索引优点:大大加快对于大文件的查找速度
多级索引缺点:
- 访问盘块时 要启动磁盘的次数随着索引级数增加
- 对大文件好 中小文件就内样 但是一般的文件系统中小文件居多
增量式索引组织方式/混合组织方式-UNIX就是这种
- 基本思想:用多种组织方式构成文件物理结构-照顾小中大文件
[直接寻址] 小文件 最多10个盘块 每个盘块地址直接放进FCB(或索引节点)
[一次间址] 中文件 单级索引 先从FCB/inode中获得索引表 然后去索引表获得盘块地址
[二次、三次间址] 两次、三级索引
UNIX systemV的组织方式
一共有13个地址项 i.addr(0)~i.addr(12)
- 10个直接地址项 i.addr(0)~i.addr(9)放直接地址/直接盘块号
- 一次间址 i.addr(10)
- 二次间址 i.addr(11)
- 三次间址 i.addr(12)
- 基本思想:用多种组织方式构成文件物理结构-照顾小中大文件
链接组织方式
- 定义:将文件装在多个离散的盘块中,属于同一个文件的多个离散盘块链接成一个链表,由此形成的物理文件称为链接文件。
链接组织方式的优点:
- 消除磁盘的外部碎片,提高外存利用率
- 对插入删除和修改记录都非常容易
- 能适应文件的动态增长,无需事先知道文件大小
链接组织方式的缺点:
- 只适合顺序访问,不适合随机访问
- 指针占用空间,降低了存储效率
- 可靠性较差,有一个指针出问题整个链都会断开
分类:
隐式链接
- 定义:文件目录的每一个目录项中都含有指向链接文件第一个和第最后一个盘块的指针;文件的每个盘块中都含有下一个盘块的指针。
主要问题:
- 只适合顺序访问,随机访问低效
- 可靠性差:如果一个指针出问题,整个链都会断开
- 改进措施:几个盘块组合为一个簇,分配盘块时以簇为单位(改进有限,这样内部碎片会变大)
显式链接
- 定义:把用于链接文件各物理块的指针显式地存放在内存的一张链接表中,整个磁盘中仅设置一张这样的表,这个表叫做文件分配表FAT(File Allocation Table)。每个表项中存放链接指针(下一个盘块号)表中第一个盘块号(链首指针对应的盘块号)作为文件地址被填入文件的FCB的“物理地址”字段
显式链接优点:
- 查找记录的过程在内存中进行,所以显著提高了检索速度和并大大减少了访问磁盘的次数
FAT技术(File Allocation Table)
- FAT12 FAT16 FAT32 后面的数字表示FAT一个表项的位数
- 卷/分组:将一个物理磁盘分为四个逻辑磁盘,每个逻辑磁盘就是一个卷或者分组;每个卷是一个可以被单独格式化和使用的逻辑单元,供文件系统分配空间时使用。
- 一个物理磁盘最多只能分为四个逻辑磁盘
卷/分组的组成:
- 文件系统信息
- 一组文件
- 空闲空间
- 单独区域存放:目录和FAT表,逻辑驱动字母
FAT12
早期FAT12
- 盘块就是扇区,扇区大小一般是512字节 512B!
以簇为单位的FAT12
- 簇是一个新的分配单位
- 簇是一组相邻的扇区,作为一个虚拟扇区
- 簇的大小一般是2n个盘块
以簇为分配单位的优点
- 适应磁盘容量不断增大的情况
- 减少FAT表中的项数,使FAT表占用更小空间,减少FAT表存储开销
以簇为分配单位的缺点:
- 随着支持硬盘的容量增加,簇内碎片也会成倍增加,限制磁盘最大容量
- FAT12只支持短文件名
FAT16
- FAT12的12位只能表示4096个表项 FAT16可以表示16位 有65536个表项
- FAT16中每个簇可以表示4,8,····,最多64个盘块/扇区
FAT32
- FAT32中每一簇在FAT中的表项固定为4B大小
- FAT表的计算
FAT组织方式引发的问题
- 不支持高效的直接存取
- FAT表要占用较大空间
NTFS的文件组织方式
(New Technology File System)
- 专门为Windows NT开发的文件系统
新特征:
- 64位磁盘地址
- 支持长文件名
- 具有系统容错功能
- 能保证系统中数据一致性
- 文件加密/文件压缩
磁盘组织
- 以“簇”作为磁盘空间分配和回收的基本单位
文件存储空间的管理
1. 空闲表法 2. 空闲链表法 3. 位示法 4. 成组链表法
实验
主要考实验五:文件系统 判断选择填空都可能(没有大题)
- 文件系统shell命令使用文件系统
- 文件系统访问的系统调用-指导书附录
- FAT系统的概念会考
上课内容重点
4,5,7,8章很重要
- 没有套路题(计算题)
- 涉及概念深入理解,写很多字,不涉及过多计算
- 以书本为主-要串起来概念
- IO磁盘调度方法必考
- 分配也必考