操作系统第一轮强化笔记
根据天勤高分笔记所做
1. 计算机系统概述
Tips:
中断处理和子程序调用中,中断处理一定会压栈保存而子程序调用不需要保存的内容是程序状态字寄存器PSW
在外部中断过程中,程序计数器的内容由中断隐指令自动保存,通用寄存器内容由操作系统保存
多重处理–并行 多任务处理–并发
操作系统是虚拟机√
操作系统基本概念
-
概念速记
-
引入操作系统的目的:
-
1.用户与硬件系统之间接口
-
2.控制和管理硬件软件资源
- 处理器
- 存储器
- 外设
- 程序和数据
-
3.合理组织系统工作流程
-
-
-
特征
-
并发
-
共享
-
互斥共享
-
同时访问
- 并发
-
-
虚拟
-
异步
-
-
功能
-
处理器管理/进程管理
-
存储器管理/内存管理
-
设备管理/I/O管理
-
文件管理
-
用户接口
-
命令接口
- 联机/交互式: cmd
- 脱机/批处理: .bat
-
程序接口
- 系统调用
-
图形接口
- GUI
-
-
操作系统发展分类
-
手工操作
-
批处理系统
-
单道批处理系统
- 特点:机器利用率提高,人工操作时间减少
- 缺点:CPU利用率低
-
多道批处理系统
-
特点
- 1.多道程序运行,宏观并行,微观串行
- 2.用户脱机使用
- 3.成批处理
-
缺点:无交互性,使用不便
-
-
-
分时操作系统
-
方法:时间片轮转
-
特点
- 多路性
- 交互性
- 独占性
- 及时性
-
-
实时操作系统
-
特点
- 及时响应
- 高可靠性
-
操作系统运行环境
-
CPU
-
内核态/管态
-
特权指令
- I/O指令
- 设置中断屏蔽指令
- 清内存指令
- 存储保护指令
- 设置时钟指令
- 访问程序状态指令
- 存取特殊寄存器指令
-
内核
-
硬件关联较紧密模块
- 时钟管理
- 中断处理
- 设备驱动
- …
-
运行频率较高的程序
- 进程管理
- 存储器管理
- 设备管理
- …
-
-
-
用户态/目态
-
-
中断
-
内中断/异常
- 故障 fault
- 自陷 trap
- 终止 abort
-
外中断/中断
-
操作系统体系结构
-
模块组合结构
-
层次结构
-
微内核结构
- 切换频繁,效率较低
2. 进程管理
Tips:
对进程的管理和控制使用原语,引入原语的主要目的就是为了实现进程间的通信和控制
同类进程互斥,不同类进程同步
可重入代码:允许多个进程同时访问
键盘驱动程序不是多线程系统的特长
同步信号量初值需要根据初始条件确定,有初始量设初始量,没有则为0
线程共享同一进程的全部资源,但拥有自己栈空间不允许共享
不同进程内的线程也可以并发执行
响应比=等待时间/执行时间 + 1
同类进程互斥,不同类进程同步
中断处理进程进入阻塞态
程序的执行顺序
-
程序的顺序执行
-
顺序性
-
封闭性
- 执行结果不受外界因素影响
-
可再现性
-
-
程序的并发执行
-
间断性
- 并发程序相互制约
-
非封闭性
-
不可再现性
-
-
对并发程序仍需保持其封闭性和可再现性
进程
由程序段,数据段和PCB三部分构成的进程映像,也叫进程实体。进程映像是静态的,进程是动态的,进程是进程实体的运行过程。
进程切换一定会产生中断,进行CPU模式转换,从用户态进入内核态,再返回用户态;但CPU模式转换不一定发生进程切换。
目的:使多个程序并发执行,改善资源利用率及提高系统吞吐量。
进程是一个拥有资源的独立单元,同时也是一个被CPU独立调度和分配的单元。
-
定义:系统资源分配和独立运行的基本单位
-
特征
- 动态性
- 并发性
- 独立性
- 异步性
-
-
组成
-
程序段
- 代码数据
-
数据段
- 与程序逻辑本身相关的数据
-
进程控制块PCB
进程存在的唯一标志
保证程序的并发执行
系统总是通过PCB对进程进行控制-
进程描述信息
- 进程标识符(PID)
- 用户标识符(UID)
-
进程控制和管理信息
- 进程当前状态
- 进程队列指针
- 进程优先级
- 家族联系
-
程序和数据地址
-
CPU现场保护区
-
占有资源清单
-
通信信息
-
-
-
进程5种基本状态
主动转换:
执行状态 --> 阻塞状态:主动调用阻塞原语,请求并等待某事件发生被动转换:
就绪状态 --> 执行状态:进程被调度获得CPU,上处理机运行
执行状态 --> 就绪状态:时间片用完或者高优先级进程到达
阻塞状态 --> 就绪状态:等待事件发生而被唤醒-
创建状态
申请空白的PCB,并向PCB中填写一些控制和管理进程的信息,然后由系统为该进程分配运行时所需的资源,最后把该进程转入就绪状态
- 用户登录
- 作业调度
- 提供服务
- 应用请求
-
就绪状态
-
运行状态
-
阻塞状态
-
结束状态
-
-
进程通信
-
低级进程通信
- 互斥
- 同步
-
共享存储
- 多个进程对共享存储区读写
-
消息传递
-
直接通信
- 发送到对方消息缓冲队列中
-
间接通信
- 发送到信箱中再被对方接收
-
-
管道通信
- 特点:共享文件,半双工通信
-
线程
目的:减少程序在并发执行时所付出的时空开销,提高操作系统的并发性能。
定义:进程内的一个执行单元,可调度实体,本身不能独立运行,只能包含在进程中执行。
与同属于一个进程的其他线程共享进程拥有的全部资源。
引入线程后,线程是独立调度的基本单位,进程是拥有资源的基本单位
同一进程内的线程之间也可以并发执行
-
实现方式
-
用户级线程
- 应用进程利用线程库管理
- 一个线程阻塞整个进程阻塞
- 线程越多的进程每个线程执行时间越少
-
内核级线程
- 操作系统内核管理
- 一个线程I/O阻塞不影响其他线程运行
- 线程越多的进程获得的CPU时间越多
-
模型
-
多对一模型
多个用户级线程映射到一个内核级线程
优点:
线程在用户空间管理,效率较高
缺点:
一个用户级线程被阻塞,整个进程都会被阻塞
由于系统只能识别一个内核级线程,因此该内核级线程关联的多个线程不能并行地运行在多处理机上 -
一对一模型
一个用户级线程 对 一个内核级线程
优点:
并发性比多对一模型好
缺点:
创建一个用户级线程就需要创建一个内核级线程 -
多对多模型
多个用户级线程 对 多个内核级线程
best
不仅可以使多个用户级线程在真正意义上并行执行,而且不会限制用户级线程的数量。当一个用户级线程阻塞,可以调度执行其他线程。
-
-
-
线程锁 — 功能越强,性能越低
-
互斥锁
- 共享资源互斥访问
-
条件锁
- 条件不满足阻塞,满足唤醒
-
自旋锁
- 对请求的资源势在必得,不停循环检测
-
读写锁
- 读者—写者模型锁
-
调度
-
调度层次
-
作业调度
-
内存调度
-
进程调度
-
不能进行进程调度的情况
- 处理中断过程中
- 进程访问临界区
- 原子操作
-
-
-
调度方式
- 抢占方式/可剥夺方式
- 非抢占方式/不可剥夺方式
-
调度算法
-
先来先服务(FCFS)
-
思想:First Come,First Serve
-
特点:非抢占式,对短进程/作业不利
- 有利于CPU繁忙型,不利于I/O繁忙型
-
-
短作业优先(SJF)
- 思想:Shortest Job First
- 特点:平均周转时间最短,对长进程/作业不利
-
优先级调度
-
进程的优先级
-
静态优先级
确立后不再改变
- I/O型>计算型
- 交互型>非交互型
- 系统进程>用户进程
-
动态优先级
-
-
思想:优先分配优先级最高的进程
-
分为抢占式和非抢占式
-
-
时间片轮转(进程调度)
-
思想:公平分配CPU时间片
- 时间片太大:退化成FCFS
- 时间片太小:进程频繁切换
-
特点:抢占式
-
-
高响应比优先(作业调度)
-
思想:优先分配响应比最高的作业
响应比 =
(等待时间 + 运行时间)/ 运行时间 -
特点:对短作业有利,需要计算响应比,系统开销大
-
-
多级反馈队列调度(进程调度)
特点:时间片轮转和优先级调度的综合与发展,动态调整进程优先级和时间片的大小,第一个队列优先级最高,优先级越高的队列时间片越短。
最后一个队列使用时间片轮转调度算法,其余使用FCFS算法。- 思想:划分若干队列,每个队列采用一种调度算法
- 特点:抢占式
-
-
指标
- 周转时间:完成时间-提交时间 = 等待时间 + 运行时间
- 带权周转时间: 周转时间 / 运行时间
- 响应时间:等待时间 / 作业时间
进程同步
-
制约关系
-
同步(不同类进程)
- 进程—进程
-
互斥(同类进程)
- 进程—资源—进程
-
-
临界资源访问
一次只允许一个进程使用的资源
临界资源是系统资源
临界区是进程中的代码段,每个进程临界区可以不同- 进入区
- 临界区
- 退出区
- 剩余区
-
临界区互斥
-
原则:空闲让进、忙则等待、有限等待、让权等待
-
基本方法
-
软件实现
-
单标志法
- 只能交替访问,违背空闲让进
-
双标志法 先检查
-
可能同时访问,违背忙则等待
两边检查为false,同时进入临界区
-
-
双标志法 后检查
-
可能都无法访问,违背有限等待
两边同时设置为true,后检查阻塞
-
-
Peterson算法
-
满足有限等待,但不满足让权等待
双标志后检查和单标志法的结合
先设置双标志和单标志
再检查双标志
-
-
-
硬件实现
优点:
适用范围广
简单
支持多个临界区
缺点:
进程等待进入临界区耗费CPU时间
不能实现让权等待
可能导致饥饿-
思想:标志位的检查和修改不可打断。原语
-
中断屏蔽法
-
硬件指令法
- 原子操作指令 TestAndSet
-
-
信号量
-
操作
-
P(wait)操作原语
- s = s-1,s<0 阻塞
-
V(signal)操作原语
- s = s+1,s ≤ 0 唤醒
-
-
分类
-
整型信号量
- 无可用资源时忙等,不满足让权等待
- mutex,用于互斥,s = 1
-
记录型信号量
- synchronize,用于同步,s = 0
-
-
-
-
经典问题
前驱-后继中,前驱V,后继P
互斥信号量初始值设1
临界资源个数信号量初始设n
同步信号量成对出现对进程同步问题来说,P操作都不可颠倒
P先互斥再同步可能导致死锁
(互斥后请求不到资源阻塞)
先同步P(full/empty)再互斥P(mutex)V操作顺序可颠倒
互斥信号量是针对同类进程的信号量
单生产者和单消费者不需要互斥信号量-
生产者—消费者问题
- full = 0,empty = n,mutex = 1
-
读者—写者问题
- 读者优先/公平请求/写者优先
-
哲学家进餐问题
-
理发师问题
-
-
-
管程
-
定义
- 由一组数据以及定义在这组数据之上的对这组数据的操作组成的软件
-
组成
- 管程的名称
- 局部于管程内部的共享结构数据说明
- 对该数据结构进行操作的一组过程(函数)
- 对局部于管程内部的共享数据设置初始值的语句
-
特点
-
共享资源的操作封装
共享数据结构只能被管程内的过程所访问外部进程只能通过管程内的过程(函数)才能访问管程内的资源
-
每次仅允许一个进程进入管程
-
-
比较
-
条件变量
-
基于管程,针对进程
- signal操作不一定唤醒阻塞进程(队列为空)
-
-
信号量
-
基于进程,针对临界资源
- 只有信号量的值才能反应剩余资源数
- V(signal)操作一定使资源+1
-
-
-
死锁
-
产生原因
- 系统资源不足(根本)
- 进程执行顺序不当
-
必要条件
-
互斥条件
-
不剥夺条件
-
请求保持条件
- 循环等待条件
-
-
-
-
死锁处理策略
-
死锁预防
-
破坏互斥条件
- 需资源能被进程同时访问,不合理
-
破坏不剥夺条件
-
请求资源得不到时释放已有资源
- 重复申请增加系统开销
-
-
破坏请求与保持条件
-
预先静态分配,一次性分配资源
- 降低资源利用率,可能导致饥饿
-
-
破坏环路等待条件
-
编号,有序资源分配法
- 限制了新设备的增加
-
-
-
死锁避免
-
安全状态与安全序列
- 不安全状态不一定死锁
- 安全序列不唯一
-
银行家算法
- 优先分配资源可满足的进程,寻找安全序列
-
-
死锁检测
-
资源分配图
-
死锁定理
可完全简化:所有结点孤立
不同的简化顺序将得到相同的不可简化图
死锁条件:
当且仅当系统S状态的资源分配图是不可完全简化的,该定理称为死锁定理
-
-
死锁检测算法
- 寻找是否存在不安全序列
-
-
死锁解除
-
资源剥夺法
- 抢占其他进程资源
-
撤销进程法
- 回收资源,直到空闲资源足够
-
进程回退法
- 自愿释放资源,回退到足以回避死锁的地步
-
-
-
概念辨析
-
饥饿
- 与资源分配策略有关,可从公平性角度避免
- 当进程任务即使完成也无意义时称为饿死
-
活锁
-
忙时等待下的饥饿
- 如不公平的互斥算法
-
-
饥饿或饿死进程可能只有一个,死锁一定涉及多个进程
-
死锁一定发生循环等待,饿死不一定,因此不能检测饿死
-
3. 内存管理
逻辑地址到物理地址的转换过程由硬件自动完成(地址重定位)
指令的执行期间产生和处理缺页中断,通常CPU是在指令执行完毕后检查是否有中断请求
一条指令可以产生多个缺页中断
当系统中还有空闲块时,缺页中断不执行页面置换算法
抖动产生的原因是在请求分页系统中的每个进程只能分配到所需全部内存空间的一部分
分页管理可以信息共享,限制较多
非虚拟存储器管理方式扩展内存使用交换技术
n级页表寻址空间: (页面项数)^n × 页面大小
减少多道程序度数可以增加CPU利用率
增大内存容量可以降低缺页率
使用更快速的设备不能提高利用率
二分查找不具有局部性,不使用于按需调页的虚存管理策略
n个不同的页号至少缺页n次,和页面替换算法无关
外层页表不表示页面的物理位置,需额外寄存器进行地址变换
分页存储管理,每个进程一页表,且进程页表驻留内存,系统设置一个页表寄存器PTR
分页管理存储空间利用率最高
采用分页或分段管理后,系统提供给用户的物理地址空间=总空间-段表页表空间,所以不能确定
抖动的原因是页面置换算法不合理
虚拟存储只能基于非连续分配
虚拟存储容量只与地址位数有关,与内外存容量无关
页式存储方式不能采用静态重定位
工作集窗口为n,t时刻工作集只与前n个页面有关
程序
-
链接
-
运行时动态链接
在程序需要执行该模块时,才对它进行链接
-
装入时动态链接
在装入内存时,采用边装入边链接的链接方式
-
静态链接
在程序运行之前链接
-
-
装入
-
绝对装入
- 编译时直接使用物理地址,只适用于单道程序环境
-
静态重定位
- 地址空间连续,逻辑地址 + 起始地址
- 地址变换通常在装入时一次完成
- 作业进入内存就要一次分配它的全部空间,空间不足就不进入
- 一旦进入内存,就不能在内存中移动,也不能再申请空间
-
动态重定位
- 逻辑地址 + 重定位寄存器
- 程序可在内存中移动
- 进入内存后,只有访问指令和数据时才进行地址转换
-
-
内存保护
-
界限寄存器
-
上、下界寄存器
- 上界存结束地址,下界存开始地址
- 保护性中断
-
基址和限长寄存器
- 基址寄存器 - 重定位寄存器
- 限长寄存器 - 界地址寄存器
- 基址存开始地址,限长存程序长度
- 越界中断
-
-
存储保护键
- 存储块上锁,每个作业分配一个钥匙,保护性中断
-
覆盖与交换
-
覆盖
- 早期操作系统,对用户不透明,模块共享内存
-
交换
-
需备份存储,通常交换一整块磁盘,空间紧张时才启动,负荷减轻后暂停
- 挂起进程即是被交换出内存的进程
-
管理方式
-
碎片
-
内部碎片
- 已经分配给作业但不能被利用的空间
-
外部碎片
- 系统未分配给作业但不能被利用的空间
-
-
连续分配
-
单一连续分配(内部碎片)
- 单用户,单任务操作系统
- 将内存分为两个连续区域,一块用户,一块系统
- 静态分配,可用覆盖,不支持虚拟存储,不能实现共享主存
-
固定分区分配(内部碎片)
-
应用多道程序
-
事先划定分区,运行时不可改变
- 分区大小相等
- 分区大小不等
-
静态重定位,不能实现共享主存
-
-
动态分区分配(外部碎片)
-
数据结构
- 空闲分区表
- 空闲分区链
-
分配算法
-
首次适应 FF
- 无内部碎片
-
最佳适应 BF
-
最多外部碎片
-
容量大小递增排列
- 给最小
-
-
最坏适应 WF
-
容量大小递减排列
- 给最大
-
-
邻近适应 NF
- 循环队列
-
-
分区重定位技术
- 拼接
- 动态重定位分区分配
-
主存利用不充分,存在外部碎片,不能实现共享主存,无法实现主存扩充
-
-
-
非连续分配
-
基本分页(内部碎片)
-
页号 | 页内偏移量
-
页表项 = 页号 + 块号
- 页表放在内存中
-
快表命中访存一次,不命中访存两次
-
多级页表:访存次数多
-
一维:只需要地址,页号系统取模自动算出
-
满足系统的需要
-
-
基本分段(外部碎片)
- 段号 | 段内偏移量
- 段表项 = 段号 + 段长 + 起始地址
- 二维:需段号和段内偏移量
- 满足用户的需要
-
段页式(内部碎片)
- 段号 | 段内页号 | 页内偏移量
- 每个进程一段表,每一分段一页表
- 平均一段就有半页碎片,总碎片比基本分页管理多
- 需多访存一次
-
虚拟内存
-
部分装入,请求调入,置换
-
技术支持
- 段/页表机制
- 中断机构
- 地址变换机构
- 内存和外存
-
-
实现方式
-
请求分页存储管理
- 页号|块号|状态位|访问字段|修改位|外存地址
-
请求分段存储管理
- 段号|段长|内存始址|访问字段|修改位|状态位|外存地址
-
请求段页式存储管理
-
-
置换算法
-
最佳置换(OPT)
- 无法实现
-
先进先出(FIFO)
-
Belady异常:缺页次数随分配物理块增加而增加
- LRU,OPT,堆栈算法不会出现
-
-
最近最少使用(LRU)
-
时钟置换(CLOCK)/最近未使用(NRU)
- 循环链表循环找0,访问位为0淘汰
-
改进型时钟置换
- 增加修改位,优先淘汰访问0修改0,其次访问0修改1
-
最不常用置换(LFU)
- 访问计数器,缺页淘汰计数器值小的页面并清零
-
页面缓冲(PBA)
- FIFO的发展,增加缓冲队列,换出页面先放入队列中方便取回
-
-
页面分配策略
-
固定分配
-
局部置换
- 进程分配物理块数目确定,运行期间不改变
-
-
可变分配
-
全局置换
- 系统维护空闲物理块队列,动态分配
-
局部置换
- 进程分配一定量物理块,频繁缺页则增加,缺页率低则减少
-
-
工作集
-
目的:解决抖动现象,基于局部性原理
-
最近n次内存访问的页面集合,工作集窗口:n
- n太大:进程不易缺页,存储器不被充分利用
- n太小:进程频繁缺页,降低系统吞吐率
-
-
-
页面调入策略
-
请求调页
-
需要使用时调入内存,缺页中断多,时间开销大,易抖动
-
外存
-
存放文件的文件区
- 离散分配
-
存放对换页面的对换区
- 连续分配,I/O速度快
-
-
-
预调页
- 提前将可能使用页面调入内存,通常用于程序首次调用
-
4. 文件管理
从文件管理的角度,文件由文件控制块FCB和文件体组成
文件存储空间的分配通常以块或簇为单位
目录使用前必须先打开
close()操作删除内存中的文件目录项
文件名及属性可以集中在目录中查询
打开文件:系统调用open将文件的信息目录放到打开文件表中;把文件的控制信息从辅存读到主存
对文件访问通常使用用户访问权限和文件属性共同限制
采用备份方法保护文件,采用存取控制矩阵用于存取权限保护
索引表每个记录索引项只有一个
磁盘分区不能改善磁盘设备I/O性能
逻辑记录是对文件进行存取操作的基本单位,数据项是最小单位
文件系统功能包括文件名到物理地址的转换
低级格式化:分区,确定扇区数据结构(校验码等;逻辑格式化:初始文件系统数据结构存储在磁盘上
文件访问只需路径名即可
文件系统基础
文件的逻辑结构是从用户观点所看到的文件组织形式,是用户可以直接处理的数据及其结构(文件组织)
从计算机的角度出发,文件在外存中的存放组织形式称为文件的物理结构
逻辑结构和存储设备的特性无关
物理结构和存储设备的特性相关
文件链接计数表明指向该文件的指针数
访问计数表明正在访问该文件的进程数
-
用户的输入输出以文件为基本单位
-
组成
-
数据项
-
最低级的数据组织方式
- 原子数据项
- 组合数据项
-
-
记录
- 一组相关数据项的集合,描述对象某一方面的属性
-
文件
-
最大的数据单位,一组相关信息的集合
- 有的操作系统中设备也被看作特殊的文件
-
-
-
属性
- 名称/标识符/文件类型/文件位置/大小/建立时间/用户标识符…
-
分类
-
按用途
- 系统文件
- 库文件
- 用户文件
-
按保护级别
-
只读
- 授权用户可读,不可写
-
读写
- 授权用户可读可写
-
执行
- 授权用户可调用,不允许读写
-
不保护
- 没有任何限制
-
-
按信息流向
-
输入文件
- 只可读,读卡机等
-
输出文件
- 只写可,打印机等
-
输入/输出文件
- 可读可写,磁盘磁带等
-
-
-
操作
-
基本操作
- 创建/删除/读/写/截断/设置读写位置
-
打开文件
- 系统将文件属性从外存复制到内存,并返回给用户一个索引
- 文件指针/文件打开计数/文件磁盘位置/访问权限
-
关闭文件
- 删除索引,销毁FCB,若修改则写回外存
-
-
组织
-
文件存储设备
- 划分成大小相等的物理块,与设备有关
- 一个物理块可存放若干逻辑记录
- 一个逻辑记录也可以存放在若干物理块中
- 为了有效利用外存和方便管理,一般将文件信息划分成与物理块相等的逻辑块
-
有结构文件(记录式文件)
-
等长
-
变长
-
逻辑结构
-
顺序
-
串
- 顺序与关键字无关
-
顺序
- 按关键字排序
-
存取速度快,定长可随机访问
-
需要连续空间,产生碎片,不利于动态扩充
-
-
索引
- 索引表定长,逻辑块变长
- 索引表和逻辑文件构成索引文件
- 可以随机访问,易于增删
- 增加了空间开销,查找策略对系统效率影响大
-
索引顺序
- 以上两种形式的结合
- 将顺序文件分成若干组记录在索引表中
- 关键字顺序排列,大大提高了顺序存取速度
-
直接文件/Hash
- 速度快,但会产生冲突
-
-
-
无结构文件(流式文件)
- 在UNIX中所有文件都被视为流式文件
-
物理结构
- 连续分配
- 链接分配
- 索引分配
-
-
目录结构
-
功能
- 按名存取/提高检索速度/允许文件同名/共享
-
目录文件
- 就是文件目录,存放在外存中
-
文件控制块 FCB
- 文件名/结构/物理位置/存取控制信息/管理信息
-
索引结点
-
i结点,文件目录中的目录项由文件名和 i 结点指针构成
- 降低查找时启动磁盘次数,节省系统开销
-
磁盘索引结点
- 存放在磁盘中,每个文件唯一
- 文件主标识符/类型/存取权限/物理地址/长度/链接计数/存取时间
-
内存索引结点
- 文件被打开时磁盘索引结点复制到内存中
- 增加索引结点编号/状态/访问计数/逻辑设备号/链接指针
-
-
单级目录结构
- 一张目录表,不允许重名,查找速度慢
-
二级目录结构
-
主文件目录(MFD)
- 记录各个UFD的用户名及相关存储位置等
-
用户文件目录(UFD)
- 记录用户建立的文件及相关信息
-
可重名,查找速度较快,缺乏灵活性
-
-
多级目录/树形目录结构
-
根目录
-
目录文件
- 非叶子结点
-
文件
- 每个文件分配对用户透明的内部标识符
-
便于分类,逐级访问,查找慢,不便文件共享
-
-
无环图目录结构
- 实现文件共享,管理复杂
- 共享计数器
-
-
文件共享
-
基于索引结点—硬链接
- 一个共享文件只有一个索引结点
- 文件被多用户共享时,拥有者不能删除文件
-
基于符号链—软链接
-
文件拥有者拥有索引结点指针,被共享者只有路径名
-
被共享者目录项添加链接(路径名),系统通过链接再搜索目录
- 遍历目录树时忽视链接
-
需要逐层查找,开销较大
-
-
-
文件保护
-
限制访问类型
- 读写增删等
-
访问控制
-
访问控制矩阵/访问控制表/用户权限表
- 记录操作权限,访问时检查
-
口令保护
- 建立文件时附在FCB中,开销较小
- 口令直接存储在系统内部,不够安全
-
密码保护
- 对文件加密,访问需要密钥,编码解码需要花费时间
-
-
文件系统实现
-
层次结构
- 用户接口/文件目录系统/存取控制验证/逻辑文件系统与文件信息缓冲区/物理文件系统
-
目录实现
-
线性列表
- 顺序查找,较费时
-
哈希表
- 冲突:不同名文件散列值相同
-
-
文件实现
-
外存分配
-
连续分配
- 磁盘空间连续,文件分配在相邻物理块
- 顺序文件,查找速度快,容易产生碎片,需定期紧凑
-
链接分配
-
隐式链接
- 每一个物理块存储下一个物理块的地址指针
-
显式链接
- 指针显式存放在文件分配表FAT中,一个磁盘一张,不能随机访问
-
简单,不能随机访问,指针占用存储空间,存在可靠性问题
-
-
索引分配
-
每个文件分配一个索引块,索引块存放索引表,表中每个表项对应物理块
-
支持直接访问,不会产生外部碎片,文件长度不受限制
-
访存需两次(找索引块,找物理块),索引块增加系统开销
-
分配方式
-
单级索引
-
多级索引
- 索引块项存储下一级索引块指针
-
混合索引
- 文件小于一定大小,直接地址
- 文件较大,单级索引
- 文件很大,多级索引
-
-
-
-
文件空闲空间管理
-
空闲表法
- 类似动态分区分配,适用少量空闲文件
-
空闲链表法
-
位示图法
- 位示图大小由物理块总数确定,可保存在主存中
-
成组链接法
- UNIX适用,100个空闲块一组
- 空闲块/超级块,超级块在下,存放主存中
-
-
磁盘组织与管理
-
直接存取设备
- 柱面号/磁头号/扇区号
-
磁盘的管理
-
磁盘初始化
- 第一步:分区,低级格式化
- 第二步:逻辑格式化,创建文件系统
-
引导控制块
- BIOS,存放在ROM中,无操作系统则为空
-
分区控制块
- 分区详细信息,空闲块个数,指针等
-
目录结构
- 目录文件
-
文件控制块
- 文件信息
-
坏块
-
硬件故障
- 简单磁盘手工处理,FAT表标识损坏
- 复杂磁盘维护坏块链表,不断更新 | 扇区备用
-
-
-
访问时间
-
寻道时间
-
旋转延迟时间
- 磁头转半圈的时间,1/(2r)
-
传输时间
- b/(rN),N为一个磁道上的字节数
-
-
调度算法
-
先来先服务 FCFS
- 不产生磁臂黏着
-
最短寻找时间优先 SSTF
- 可能饥饿,不保证寻道时间最短
-
扫描算法 SCAN
- 电梯调度,对两端请求不公平,不导致饥饿
-
循环扫描 C-SCAN
- 单向移动,边缘返回,不导致饥饿
-
5. I/O管理
设备独立性,指应用程序独立于物理设备,使用逻辑设备名
每个DMA控制对应一台设备与内存传递数据
一个通道可以控制多台设备与内存的数据交换
SPOOLing必须使用独占设备
单任务操作系统也适合忙等I/O
SPOOLing代替独占设备的是共享设备
CPU启动通道不管是否成功,通道都要回答CPU
与设备相关的中断处理过程是由设备驱动程序完成的
SPOOLing需要外存和多道程序设计技术的支持
管道是固定大小的缓冲区,对于两端的进程视为共享文件,只存在内存中,半双工通信,通常大小一页
设备分类
-
传输速率
- 低速|中速|高速
-
使用特性
- 存储|人机交互|网络通信
-
信息交换单位
-
块设备
- 磁盘
-
字符设备
- 键盘,显示器,打印机
-
-
共享属性
- 独占|共享|虚拟
设备控制器
- 设备的电子部分,可编址
- 接收来自CPU的命令控制I/O设备工作
- 内有数据寄存器和控制/状态寄存器
控制方式
-
程序直接控制
- 轮询/忙等
-
中断驱动
- 输入完成,设备控制器向CPU发出中断信号
- 每个数据传送完成时中断CPU,数据传送由CPU处理
-
DMA
-
I/O设备与主存直接进行数据交换,传输时单向
-
基本传输单位为块,开始和结束受CPU干预
-
输入完成,DMA控制器向CPU发出中断信号
-
一批数据传送完成时中断CPU,数据传送由DMA控制器处理
-
组成
-
命令/状态寄存器 CR
- 接收CPU控制信息和设备状态
-
内存地址寄存器 MAR
- 下一次操作地址
-
数据寄存器 DR
- 暂存数据
-
数据计数器 DC
- 需要传送的字数
-
-
-
通道控制
-
一个通道可以控制多个设备,本质上是处理I/O的CPU
-
指令类型单一,与CPU共享内存
-
信息交换方式分类
-
字节多路通道
- 连接多个慢速和中速设备
-
数据选择通道
- 连接高速设备,单设备执行
-
数据多路通道
- 各设备分时并行,传送单位为一组数据块
-
-
由CPU启动,指明通道执行操作和使用的I/O设备
-
实现CPU和通道,通道与通道,各通道外设之间的并行
-
I/O子系统层次
-
用户层I/O软件
- SPOOLing技术|I/O系统调用
-
设备独立性软件
- 逻辑设备
- 物理设备
-
设备驱动程序
- 每一类设备配置一个设备驱动程序
- 唯一知道设备控制器构成细节的程序
-
中断处理程序
-
硬件
- 机械部件(设备本身)
- 电子部件(设备控制器)
I/O核心子系统
-
I/O调度
- 调整I/O请求顺序,减少I/O完成所需的平均等待时间
-
缓冲
-
硬件缓冲器
- 成本高,只用于关键部位
-
缓冲区
-
单缓冲
- 设备与处理器串行操作缓冲区
-
双缓冲
- 适用设备I/O速度和CPU处理数据速度基本匹配
-
循环缓冲
- 分割多个大小相等的缓冲区,配置指针in和out
- 适用特定的I/O进程和计算进程,开销大
-
缓冲池
-
3个队列
- 空缓冲队列|输入队列|输出队列
-
4种缓冲区
- 收容输入|提取输入|收容输出|提取输出
-
-
-
-
高速缓存
- 低速设备的数据备份
- 高速设备使用高速缓存,不直接访问低速设备
-
设备的分配与回收
-
主要数据结构
-
系统设备表 SDT
- 一个系统一张,记录所有设备情况
-
设备控制表 DCT
- 每一个设备配备一张,记录控制器连接等信息
-
设备控制器控制表 COCT
- 每一个控制器配备一张,反应通道连接等信息
-
通道控制表 CHCT
- 每个通道配备一张,反应通道状态等
-
包含关系
- SDT>DCT>COCT>CHCT
-
-
分配策略
-
分配方式
-
独占分配
- 对独占设备,适用大多数低速设备,I/O设备不能充分利用
-
同时分配
- 对共享设备,同时分配给多个进程使用,分时共享
-
虚拟分配
- 针对虚拟共享设备,物理独占,逻辑共享
-
-
分配算法
- FCFS | 优先级
-
分配的安全性|死锁
-
静态分配
- 一次性分配
-
动态分配
-
安全分配方式
- 每当发出I/O请求后便进入阻塞态,直到其I/O操作完成时才被唤醒
- 缺点:CPU和I/O设备是串行工作的
-
不安全分配方式
- 一个进程可以操作多个设备,需安全性检测
-
-
-
-
设备独立性
-
设置一张逻辑设备表LUT映射物理设备和逻辑设备关系
-
实现方式
- 设备独立性软件|配置LUT|实现映射
-
-
SPOOLing技术
-
组成
-
输入井|输出井
- 磁盘中,模拟脱机输入输出
-
输入缓冲区
- 暂存输入设备传递数据,再传送到输入井
-
输出缓冲区
- 暂存输出井传递数据,再传送到输出设备
-
输入进程
- 将数据从输入井读入内存
-
输出进程
- 将数据从内存送到输出井
-
-
流程
- 输入设备|输入缓冲区|输入井—输出井|输出缓冲区|输出设备
-
特点
-
提高了I/O速度
-
设备并没有分配给任何进程,在输入/输出井
中分配给进程的是一个存储区和一张I/O请求表 -
虚拟设备技术,不直接使用物理设备
- 将独占式设备改为虚拟共享设备
-
-
-
XMind: ZEN - Trial Version