【408考研笔记】操作系统完整知识点
完整知识点回顾,建议以思维导图形式进行回忆问答
一、概述
操作系统的概念
- 管理计算机软件和硬件资源
- 最基本的系统软件
特征
- 并发
- 区分并发(同一时间间隔)、并行(同时)
- 共享
- 互斥共享方式(临界资源)
- 同时访问方式
- 虚拟
- 逻辑上变多变大。如:虚拟处理器的分时;空分复用的虚拟存储器
- 采用多道程序设计
- 逻辑上变多变大。如:虚拟处理器的分时;空分复用的虚拟存储器
- 异步
- 由于资源有限,进程走走停停
- 可能会导致进程产生与时间有关的错误。访问顺序
- 由于资源有限,进程走走停停
目的和功能
1.管理计算机资源
- 功能
- 处理机管理、存储器管理、文件管理、设备管理
- 目标:安全、有效
- 功能
2.作为用户与计算机硬件系统之家的接口
命令接口
用户操作作业执行
- 联机命令接口
- 用于分时或实时系统
- 脱机命令接口
- 用于批处理系统
- 联机命令接口
程序接口(系统调用)间接使用
- 由系统调用组成,提供给用户(包括程序员)的接口
- 用户可以使用系统调用请求操作系统服务
- 例如GUI
3.用作扩充机器(虚拟机)
操作系统的分类和发展
- 1.手工操作阶段
- 2.批处理阶段
- 单道批处理系统
- 多道批处理系统(操作系统开始出现)
- 宏观上并行,微观上串行(多道程序同时装入内存,交替执行)
- 无人机交互,无需人工干预
- 多道批处理又分为抢占和非抢占,注意计算题中的计算,通过画图即可做出
- 宏观上并行,微观上串行(多道程序同时装入内存,交替执行)
- 批处理系统的缺点是 缺乏交互性
- 3.分时操作系统
- 时间片轮转的方式(多个用户通过终端共享一台主机)
- 支持多道程序设计,(解决了人机交互),但不能在极短时间内作出处理
- 4.实时操作系统
- 分类
- 硬实时系统
- 必须在某规定时间内执行
- 飞机飞行系统
- 必须在某规定时间内执行
- 软实时系统
- 偶尔违反
- 订票,银行管理
- 偶尔违反
- 硬实时系统
- 可以优先反应一些紧急的任务
- 及时性,可靠性
- 抢占式优先级调度
- 分类
- 5.网络操纵系统
- 6、分布式操作系统(peer同等地位、资源共享、协同工作)
- 7、嵌入式操作系统
- 6、分布式操作系统(peer同等地位、资源共享、协同工作)
运行机制
两种程序
- 内核程序(时钟、中断、原语、系统数据结构)
- 用户程序
两种命令
- 特权命令
- 不允许用户直接使用的指令
- 非特权命令
- 访管指令
- 特权命令
两种处理器状态
- 核心态(管态,内核态)
- 用户态(目态)
中断
- 内中断(异常/陷入/例外)
- CPU执行指令内部时发生错误比如非法操作,地址越界,算术溢出,缺页等等,一旦出现不能屏蔽,应该立即处理
- 外中断(中断)
- 又叫强迫中断,比如IO外设请求,或者人的干预,这一类通常是与当前运行的程序无关的事件
- 内中断(异常/陷入/例外)
处理中断
- 程序计数器PC保存断点
- PC寻址,进入中断服务程序
- 保存现场(指程序状态字寄存器PSWR和某些通用寄存器)
- 执行中断服务程序
- 恢复现场、返回断点处继续执行
系统调用(广义指令)
- 是操作系统为应用程序使用内核功能所提供的接口,只能通过用户程序间接使用
- 用户在程序中调用操作系统提供的子功能
- 设备文件的管理
- 进程的控制与通信
- 内存管理
体系结构
- 大内核(功能都整体运行在和心态)
- 微内核(只保留基本功能在内核,其余在用户态,分离了用户与服务,但频繁切换性能消耗大)
总结
- 用户态核心态首先区分题目问的是执行还是调用
二、进程管理
进程
资源分配的基本单位
- 组成(进程实体)
- 程序段
- 数据段
- PCB(进程存在的唯一标志)
- 包括标识符、状态信息、资源清单
- 链接方式(PCB链接成队列)、索引方式(索引表项指向相应PCB)
- 状态及转换
- 运行态,就绪态(等待被调度),阻塞态(等外设),创建态,结束态,主要掌握前三个相互转换的条件
- 就绪队列最多有 n-1个进程,阻塞队列最多有n个进程(死锁)
- 进程控制
- 进程创建
- 用户登录
- 作业调度
- 提供服务
- 应用请求
- 进程终止
- 正常结束
- 异常结束:越界错误,非法指令,等待超时等等
- 外界干预
- 阻塞及唤醒
- 请求共享资源失败
- 等待操作完成:比如IO操作
- 等待新任务到达
- 新数据未到达
- 进程切换
- 掌握转换的原语
- 进程创建
- 通信
- 共享存储
- 消息传递
- 管道通信
- 固定大小的缓冲区,对管道两端进程而言就是一个文件
- 半双工信道,同一时刻只能一个方向传输
- 满时写被阻塞,空时读被阻塞(互斥访问)
线程
- 线程是最基本的调度单位,但是最基本拥有资源的基本单位还是进程
- 处理机的管理是对进程的管理
- 进程可以创建多个进程,线程可以创建多个线程(线程之间共享父进程的资源)
- 分类
- 用户级线程
- 内核级线程
- 多线程模型
- 多对一(用户空间进行线程管理,高效; 内核一阻塞用户线程都阻塞)
- 一对一(并发能力强,开销也大)
- 多对多(并发和开销的折中)
处理机调度
不能进行进程调度和切换的时机:
- 处理中断时
- 进程处于临界区
- 完全屏蔽中断的原子操作过程中(加锁解锁)
三种调度
- 作业调度(适用于多道批处理系统)
- 内存调度(暂时不运行的进程调至外存)
- 进程调度
调度相关概念
- CPU利用率
- 周转时间(从提交到完成所经历时间)
- 等待时间(处于就绪队列中的等待总时间)
- 响应时间(提交请求到首次响应)
- 平均周转时间
- n个作业的周转时间相加最后除以n
- 带权周转时间 (作业周转时间 / 运行时间)
调度算法
- 先来先服务 FCFS
- 效率不高,对长作业更有利,不利于IO繁忙型
- 短作业优先 SJF
- 平均等待时间、平均周转时间最少
- 优先级调度(适合实时OS)
- 可分抢占式/非抢占
- 一般优先级顺序:系统》用户,IO型》计算型
- 高响应比优先 (等待时间+服务时间 / 服务时间 )
- 同等待时间,短作业优先,SJF
- 同服务时间,等待时间更长先被调度,FCFS
- 克服了饥饿状态
- 时间片轮转(适合分时)
- 大小选择要恰当,很长就退化成FCFS
- 多级反馈队列
- 多个就绪队列,每个队列不同优先级,不同时间片大小
- 第一个队列没运行完,降级进下面队列
- 先执行完第一个队列再是第二个队列
- 先来先服务 FCFS
进程同步
临界资源:注意可重用的程序代码属于临界资源
- 进入区(检查能否进入,并设置标志)
- 临界区
- 可重入代码:不能修改的代码,因此可以共享
- 退出区(清除标志)
- 代码剩余部分
同步(先后次序)与互斥
- 有限等待 只等待有限时间
- 让权等待——进不去临界区立即释放处理器,不忙等不空转
实现临界区互斥的基本方法
- 软件实现
- 单标志法(turn 0变1; 缺点: 必须交替执行)
- 双标志先检查法 (i,j 改变 True False; 缺点:可能同时进临界区)
- 双标志后检查法 (先改变TF再检查循环;缺点:可能都空转进不去)
- 皮特森算法(有i,j有turn;能同步不会饥饿)
- 硬件实现
- 开关中断
- 原子硬件指令(利用共享布尔变量lock,初始为False进入时被设为True)
- TestAndSet指令
- Swap指令
- 软件实现
信号量机制
- wait(S) signal(S) 即 P V操作
- 整形信号量: value++ –
- 记录型信号量: 信号量S有value和等待队列 L
- 执行P操作后,value < 0时,进程挂起,该进程进阻塞队列;
- 下次V操作,Value++,若value仍 <= 0 , 把阻塞队列第一个等待进程唤醒
- 实现同步
- S初始为0,进程1 x——V操作,进程2 P操作——y;则语句x必在语句y前
- 实现互斥
- S初始1; P(S)——临界区——V(S)
- 实现前驱关系
- 设置多个S初始为0,先的进程尾巴V(S), 后的进程头部P(S)
- wait(S) signal(S) 即 P V操作
管程
代表共享资源的数据结构,及对其操作的一组函数
- 操作封装成函数,无需程序员自己实现互斥
- 条件变量 (信号量有值,condition没有值,仅实现排队等待)
- 每次只允许一个进程进入管程
- 管程的 wait() \ signal() 同样会进行阻塞、插入队列的操作
- 操作封装成函数,无需程序员自己实现互斥
经典同步问题
- 生产者消费者——橘子苹果盘问题(注意连续执行关系)
- mutex互斥夹紧
- 用什么P一下
- 提供什么V一下
- 读者写者
- 计数信号量count,用mutex保证互斥更新
- ‘读优先’ 的
- ‘写优先’ 的(增加一对P(w) ,V(w) )
- 哲学家进餐问题
- semphore chopstick[5] = {1,1,1,1,1}
- 防止死锁的限制:
- 5只筷子,最多允许4个人同时进餐
- 仅当两边筷子都空闲时才抓起筷子(给两个连续的P用mutex夹紧)
- 吸烟者问题
- finish互斥进行抽烟动作; offer1 offer2 offer3代表三种组合
- 生产者消费者——橘子苹果盘问题(注意连续执行关系)
死锁
- 产生的必要条件(同时满足四个)
- 互斥 + 非抢占 + 请求并保持(有资源又请求资源) + 循环等待(A持有的被B申请)
- 不死锁最少设备数:
- n1-1 + n2-1 +……+ 1
- 处理策略
- 死锁预防
- 破坏4个必要条件其中之一(一次申请所有资源/按编号顺序申请资源)
- 银行家算法(死锁避免)
- 安全状态(不安全状态可能死锁)
- 银行家算法
- 已知条件: MAX矩阵、Allocation矩阵
- 求Need矩阵
- 比较request[i] <= Need[i]
- 比较request[i] <= Available[i]
- 试探性分配,更新 Allocation、Need矩阵,Available向量
- 安全性算法,安全才正式分配,否则打回请求
- 已知条件: MAX矩阵、Allocation矩阵
- 安全性算法
- 工作向量Work,初始Work = Available
- 依次从Need矩阵找<=Work的行Pi
- Pi加入安全序列,释放其资源,Work += Allocation[i](注意是加Allocate[i], 不要加need!)
- 直至所有进程进入安全序列,否则是不安全状态
- 工作向量Work,初始Work = Available
- 死锁检测及解除
- 资源分配图
- 简化边(资源能满足结点P1的请求,则消去结点P1的请求边分配边)
- 死锁定理(S为死锁 等价于 S的资源分配图不可完全简化)
- 死锁解除
- 抢占资源、撤销进程、回退进程
- 资源分配图
- 死锁预防
三、内存管理
逻辑地址空间分为很多页,物理地址空间分为块(页框)
程序执行
- 编译
- 链接(逻辑地址形成阶段,目标模块和库函数连一起形成完整装入模块)
- 程序的指令里使用的是逻辑地址,而最后被装入到物理地址,需要转换
- 也分三个时机:装入前、装入时、运行时
- 装入(把程序放入内存)
- 绝对装入 (编译时就把指令中地址改为绝对地址,只适用于单道程序)
- 可重定位装入 (装入时进行地址转换,对指令和数据中的地址进行修改)
- 又叫静态重定位,一旦装入必须分配其所需全部内存空间
- 动态重定位
- 不是装入时立即转换,而是推迟到程序要开始执行时
- 需要一个重定位寄存器(存起始位置)
- 内存保护(一对寄存器)
- 逻辑地址 < 界地址寄存器, +重定位寄存器 映射成物理地址
内存早期扩充技术
- 覆盖
- 交换:对交换的管理以提高换入换出速度为目标
内存连续分配
用户进程在内存中都是连续存放的
- 单一连续(单任务)
- 固定分区分配(提前固定大小分区,有内部碎片)
- 动态分区分配(换入换出,无内部碎片,产生外部小碎片)
- 可通过‘紧凑’整理外部碎片
- 动态分区分配策略
- 首次适应(按地址递增第一个能满足) 性能最好
- 最佳适应/最坏适应(分别找最小能满足/最大能满足)
非连续分配
进程的空间可分散分布在内存不同区域,需要额外索引
分页/分段 根据分区大小是否固定:
分页存储管理
以页/块为单位申请空间,不会产生外部碎片,有很小内部碎片
区分页表大小,页表项大小,页号和页框号(块号)
地址变换流程
有个页表寄存器,存放(页表始地址,页表长度)
逻辑地址:页号|页内偏移
段表项:<页号,块号>
- 由逻辑地址、页面大小得 页号(P=A/L) 页内偏移(W=A%L)
- 比较页号和页表长度(有无越界,产生中断)
- 对应页表项地址 = 页号P*页表项长度 + 页表始地址
- 该页表项内容即为物理块号b
- 物理地址 E = 块号b*页面大小L + 页内偏移W
多级页表?
- 隐藏条件:顶级页表最多只能有一个页面 !
- 目的:建立索引,不浪费主存空间去存储所有页表项
- 地址格式: <一级页号,二级页号,页偏移>
- (需要多次访存)
快表(TLB)?
- 无快表,需要两次访存,一次读页表一次取指令
- 给出页号,在快表中查找,找到则只需一次访存取指令
- 未找到,就去主存中页表,并将该页表项存入快表
分段存储
按照用户进程中的自然段划分空间,不会产生内部碎片
段内连续 段间不连续,每段长度不一定相同
逻辑地址:段号|段偏移 (必须都由用户显示提供,二维)
段表项: <段号,段长度,本段起始地址>
地址变换
段表寄存器,存放段表始地址,段表长度
- 逻辑地址得段号、段偏移(比较段表长,有无越界)
- 对应段表项地址 = 段号*段表项长度 + 段表始地址
- 该段表项前几位是段长,比较 段内偏移 < 段长
- 物理地址 E = 本段起始地址 + 段内偏移
段页式存储管理
进程地址空间先分为段,再分为逻辑页(内存分为若干对应块)
- 一个段表,每段一个页表
- 逻辑地址: 段号|页号|页内偏移
- 段表项<段号,页表长度,页表始址> 页表项<页号,内存块号>
- 地址变换:
- 段号以及段表寄存器找到段号对应的页表的起始地址,
- 再根据地址位中的页号*页表长度加上始址得到页表项对应的地址,
- 根据页表项,找到对应的物理块号
- 得到物理地址 E = 块号+页内偏移 (三次访问内存)
虚拟内存
通过使用外存上的空间进行换入换出来虚拟地扩大内存空间
- 特点
- 多次:进程无需一次性装入内存,而是分多次部分调入
- 对换:无需运行时一直在内存中,允许换进和换出
- 虚拟性:用户看到的容量远大于实际内存容量
- 实现
- 请求分页
- 缺页中断:要访问的页面不在内存中时,将缺页进程阻塞
- 把所缺页调入内存
- 内存有空闲块,分配一个块给该页,修改相应页表项
- 内存无空闲块,淘汰某页(被修改过的页要写回外存)
- 页表项: <页号,块号,状态位,访问位,修改位,外存地址>
- 地址变换:
- 找到了要访问的页,则修改其访问位、修改位
- 状态位表示是否在内存中
- 缺页中断:要访问的页面不在内存中时,将缺页进程阻塞
- 请求分段
- 请求段页式
- 请求分页
页面置换算法
选择该从内存中调出哪一页(初始化后前几次都是缺页的)
- 最佳置换算法 OPT
- 调换出之后最长时间内不再被访问的页面
- 先进先出置换算法 FIFO
- 换出最早进入内存的页面
- 会出现BELADY异常(分配的物理块数增大,页故障数反而也增大)
- 最近最久未使用 LRU算法
- 换出最近最长时间内未访问过的页面
- (需要寄存器和栈的硬件支持)
- 时钟Clock算法(最近未用算法)
- 简单CLOCK
- 每帧有一个 使用位,被装入或被访问时都置为1
- 循环扫描
- 遇到使用位为0的,则替换
- 使用位为1的,则此次把它置成0
- 改进的CLOCK
- 增加 修改位
- 首先换出 未被访问的页面,再选择 未被修改的页面
- 优点:替换时首选没有变化的页
- 简单CLOCK
页面分配策略
- 固定分配局部置换(提前为进程分配固定数目的物理块,换出只能用本进程物理块
- 可变分配全局置换(维持一个空闲物理块队列,换页时从该队列分配物理块
- 可变分配局部置换(用本进程物理块换出,但队列会调控不同进程物理块数目
- 调页时机:
- 预调页、请求调页(运行时调入)
- 从何处:
- 外存中有 文件区、对换区(更快,放的是被换出的页面)
工作集
驻留集:给一个进程分配的物理页框的集合
工作集就是在某段时间间隔(窗口:最近K次)内进程访问过的页面集合
为防止抖动,分配的驻留集要大于工作集大小
抖动
又叫颠簸,指一个进程频繁地换入换出,调换的时间大于执行的时间
四、文件管理
逻辑:盘块/ “簇” 物理:磁盘扇区
逻辑结构
文件内部的逻辑结构,是由用户看到的用户定义的
无结构文件(流式文件)
源程序文件、目标代码文件通常是无结构文件,以字节为单位
有结构文件(记录式文件)
顺序文件
- 文件中的记录顺序排列
索引文件
区分索引文件(逻辑结构)与索引分配(存储结构)
- 索引文件:用户建立索引,方便检索记录, <关键字-》记录的逻辑地址>
- 索引分配: 操作系统建立索引表,映射: <逻辑块号-》物理块号>
索引顺序文件
- 顺序文件分为若干组,先通过索引找到其所在组,在组内顺序查找
目录结构
多个文件在逻辑上是如何组织的
文件控制块FCB
存放文件描述信息,如文件名、物理位置、文件大小、权限等
索引节点inode
文件描述信息单独形成 索引结点inode,每个文件都有一个索引结点
包括文件标识符、类型、权限,以及物理地址项(直接或间接)
文件被打开后,索引结点会被加载到内存中
目录的两种方式:
- 方式一:一个FCB就是一个文件目录项
- 方式二(索引结点):目录项仅由 <文件名,i结点指针> 组成。
目录的几种结构
- 单级:整个文件系统只有一张目录表,不允许重名
- 二级:分为主目录和用户目录两级
- 多级(树形)目录:用路径名标识文件,/作为分隔符(但级数越多磁盘访问次数多)
- 无环图目录结构:树形基础上增加了指向同一结点(共享节点)的边,
- 实现文件共享(多个进程共享同一文件,系统中只需一个副本)
- 硬链接:多个指针指向同一个 i 结点,只要还有一个指针指向该i结点,它就不能被删除,只是用户删除自己的一个目录项
- 软链接(符号链接):把到达共享文件的路径记录为一个文件保存在用户的目录下,只有文件拥有者才有指向索引节点的指针
- 硬链接:多个指针指向同一个 i 结点,只要还有一个指针指向该i结点,它就不能被删除,只是用户删除自己的一个目录项
- 实现文件共享(多个进程共享同一文件,系统中只需一个副本)
目录实现: 线性表/哈希表
目录查询要不断io,因此把当前使用的文件目录复制到内存
文件分配
文件分配即文件物理结构(存储结构),注意与内部逻辑结构区分
连续分配
要求每个文件在磁盘上占有一组连续的块
- 支持顺序访问和随机访问
- 只适用于长度固定的文件
链接分配
文件即对应磁盘块链表,访问磁盘n次
隐式链接分配:
- 目录指向首块,每个盘块都有指针指向下一磁盘块
显式链接分配:
- 整个系统使用一张文件分配表FAT,FAT表在内存中
- FAT表项:<盘块号,下一盘块号> -1代表文件结尾,-2为空闲盘块
只能顺序访问,不支持随机访问,易扩展
索引分配
每个文件有一个索引块,存着索引表,表项为 <第i条,指向文件第i盘块的指针>
- 支持随机访问和顺序访问,但索引表增加了存储开销
- 一个索引块通常大小为一个磁盘块(通常先读入内存以减少一次IO)
- 混合索引
- 既采用直接地址,又采用单级索引、多级索引
- 若m级索引,访问磁盘m+1次
- 若修改记录,则需要‘写回’磁盘,还需多一次访问磁盘
存储空间管理
实质:对空闲块的组织、分配、回收
空闲表法(为所有空闲盘块建立一张表,连续分配)
空闲链表法(把所有空闲盘块/盘区用指针连接为一张链表)
位示图
- 用二进制的一位 表示一个盘块的使用,‘1’已占用,‘0’空闲
- 注意转换行号列号(区分从‘0’还是**‘1’编号**) i=(b-1)/n +1 ; j = (b-1) mod n +1
成组链表法(空闲扇区之间用链表,扇区内部建空闲表)
磁盘调度算法
磁道(同心圆)、扇区(即盘块,弧形块),各扇区数据量相同
- 先来先服务
- 最短寻找时间优先
- 优先服务最近的请求,会产生“饥饿”
- 扫描SCAN算法
- 指定方向上最近的,一个方向一直到头才变更方向
- LOOK调度:到达最远端的请求即可返回,不必到头
- 循环扫描C—SCAN
- 只有一个方向提供服务,回时方向快速移动不服务
- 默认SCAN都为LOOK调度
时间计算
Ts + Tr + Tt (注意时间单位min、s、ms)
- 寻道时间 Ts = 跨磁道数n*常数 + 启动磁臂时间
- 旋转延迟时间:(找到数据所在扇区)
- Tr = 1/2r (r为磁盘旋转速度)
- 传输时间: Tt = 字节数b / rN (N为一个磁道上字节数)
磁盘管理
磁盘初始化:
- 低级格式化(物理分区)
- 逻辑格式化(创建文件系统)
引导块(开机过程)
- 通电,读入位于ROM内的BIOS程序
- 硬件自检
- 执行引导块上的boot引导程序,找到磁盘上的操作系统,把它装入内存
- 开始运行操作系统
坏块:
处理就是标明记录坏块,让系统不去使用;
坏块是硬件故障,无法被OS修复
五、I/O管理
I/O设备
1外设、2存储设备(磁盘磁带)、3网络通信设备(网络接口)
分类:
- 块设备(所有存储的设备,因为存储信息都以数据块为单位)
- 字符设备(用于数据输入输出的设备,基本传输单位是字符)
I/O控制器
就是I/O设备的电子部件,用来控制设备
组成:
与CPU的接口、与设备的接口、自身I/O逻辑
功能与需要部件:
- 接收识别CPU命令: 控制寄存器(存命令和参数)
- 向CPU报告设备状态: 状态寄存器
- 数据交换: 数据寄存器
- 地址识别: 给上述寄存器编址,通过CPU送来的地址来识别控制哪个寄存器
- 内存映像I/O:寄存器地址与内存统一编址
- 寄存器独立编址:寄存器使用独立地址
IO控制方式
控制设备和内存或cpu之间的数据传送
程序直接控制(关键:‘’轮询“)
- CPU发出命令后读取I/O模块的状态,一直没准备好就会一直轮询检查
- 数据传送单位: 每次读写一个字
- 数据流向: 内存——CPU——I/O设备
- 缺点: CPU和I/O串行工作,CPU长期忙等待,利用率极低
中断驱动方式
CPU与IO控制器可并行,数据传送单位依旧是一个字,
- CPU发出读写命令后,就把等待I/O的进程阻塞,切换到别的进程
- 当I/O完成时控制器会向CPU发中断信号
- 在每个指令周期末尾检查中断,有则开始处理中断
- CPU保存当前进程运行环境信息,转去执行中断服务程序,从IO控制器读写
- CPU恢复等待I/O进程的运行环境,继续执行
DMA(直接存储器存取)方式
- 数据的传送单位是”块“
- 仅在传送数据块开始和结束时,才需要CPU,
- 数据流向是内存——IO设备
- DMA控制器
- DMA也是以字为单位读入读出的,读完一块或连续的多块后,才给CPU发送中断信号
- 有命令、地址、数据寄存器,来实现设备到主机的直接数据交换
- 缺点:读多块必须要求连续的多块,离散会多次呼叫CPU
通道控制方式
- ”通道“是一种硬件,人称小CPU
- CPU给通道发指令和通道程序在内存的位置,就做其他事
- ‘通道’执行该通道程序(一堆事情),执行完后给CPU发中断
层次结构
中间三层叫”I/O核心子系统“
- 用户层软件(库函数)
- 设备独立性软件(不涉及硬件,对各种设备的公共管理工作)
- 向用户层提供统一接口(如read/write系统调用)
- 执行对设备的共有操作如分配回收、设备保护、逻辑物理设备名映射
- 设备驱动程序(涉及硬件细节的所有操作,驱动IO设备工作)
- 中断处理程序
- 设备准备好,设备完成了I/O 都会发中断
- 硬件(有机械部件、电子部件)
设备的分配回收
安全性
- 安全分配方式(分配I/O设备后就把进程阻塞)
- 不安全分配(分配IO后进程继续执行)
分配方式
静态分配(运行前分配全部资源)、动态分配(运行过程中动态申请资源)
数据结构:
- 设备控制表DCT
- 控制器控制表COCT
- 通道控制表CHCT(以上三个代表三种资源,都有等待队列)
- 系统设备表SDT(整个系统所有设备情况)
”一个通道控制多个控制器,一个控制器控制多个设备“(树形关系)
逻辑、物理设备名映射:
- 一张逻辑设备表 LUT,表项 <逻辑地址,物理地址,驱动程序入口>
- 进程第一次用逻辑设备名请求分配设备时,在LUT中新增一个表项
- 之后再利用逻辑设备名请求I/O操作时,直接查找LUT表
缓冲区管理
目的:CPU很快,把数据放到内存缓冲区里,就可以去做别的事
I/O设备慢,自己从缓冲区慢慢取数据就行,不用打扰CPU
特点:
只有空了才能输入数据,只有满了才能输出数据
缓冲区管理策略:
- 单缓冲(1个缓冲区)
- 两个相互通信的机器用单缓冲区,只能半双工(同一时刻单向)
- 双缓冲(2个缓冲区)
- 两个机器双缓冲,可以全双工
- 循环缓冲(多个大小相等缓冲区连接为一个队列,in指向第一个空的,out指向第一个满的缓冲区)
- 缓冲池
- 有三个队列(空的、输入队列、输出队列)
- 有四种缓冲区(收容/提走输入和输出)
重点:
每处理一块数据需要花费多长时间?
各部件传输需花费时间: 设备—T—缓冲区—M—工作区—C—处理
单缓冲区 MAX(T,C) + M
- 初始状态工作区满,缓冲区空
双缓冲区 MAX( T, C+M)
- 初始状态,工作区满,两个缓冲区一满一空
记忆: MAX (设备进,CPU处理) + 内存传 括号单缓冲区包一个双包两个
注意读一个和读多个不一样,要加剩余处理时间 ,区分来算!
假脱机SPOOLing
可以把一台物理设备虚拟为多台逻辑设备,
把独占式设备改造为共享设备
- 脱机技术:使用”外围控制机“,脱离主机控制来进行输入和输出
- 组成:
- 输入井、输出井(磁盘上的存储区域)
- 输入输出缓冲区
- 输入输出进程
- 应用:共享打印机
- 每个进程提出请求后,都为其在磁盘的输出井分配一个存储区(逻辑上独占)
- 每个进程的打印信息表放入任务队列,依次输出
PS:点击右上角关注看更多408初试复试知识点
【408考研笔记】操作系统完整知识点相关推荐
- 【王道考研】操作系统 笔记 第一章
特此鸣谢王道考研 本文参考王道考研的相关课程 若有侵权请联系,立删 其余笔记链接: [王道考研]操作系统笔记 第一章_才疏学浅743的博客-CSDN博客 [王道考研]操作系统 笔记 第二章上 进程调度 ...
- 【王道考研】操作系统 笔记 第二章上 进程调度
本文内容,1.进程和线程 2.进程调度 特此鸣谢王道考研 本文参考王道考研的相关课程 若有侵权请联系,立删 其余笔记链接: [王道考研]操作系统笔记 第一章_才疏学浅743的博客-CSDN博客 [王道 ...
- (王道408考研操作系统)第五章输入/输出(I/O)管理-第一节5:假脱机(SPOOLing)技术
文章目录 一:脱机技术 二:假脱机技术(SPOOLing技术) (1)输入井和输出井 (2)输入缓冲区和输出缓冲区 (3)输入进程和输出进程 三:SPOOLing技术实例--共享打印机 一:脱机技术 ...
- (王道408考研操作系统)第四章文件管理-第一节7:文件共享
文章目录 一:基于索引结点的共享方式(硬链接) (1)介绍 (2)Linux演示 二:基于符号链的共享方式(软链接) (1)介绍 (2)Linux演示 所谓文件共享就是指 使多个用户(进程)共享同一个 ...
- (王道408考研操作系统)第三章内存管理-第二节3:页面置换算法2
上接: (王道408考研操作系统)第三章内存管理-第二节2:页面置换算法1 文章目录 一:时钟置换算法(CLOCK) (1)简单时钟置换算法 (2)改进型时钟置换算法 二:页面置换算法总结 一:时钟置 ...
- (王道408考研操作系统)第三章内存管理-第二节1:虚拟内存管理基本概念
文章目录 一:传统存储管理方式的弊端 二:局部性原理与高速缓冲技术Cache (1)Cache基本原理 (2)局部性原理 三:虚拟内存的定义和特征 (1)定义 (2)特征 四:虚拟内存实现 内存管理需 ...
- (王道408考研操作系统)第二章进程管理-第三节10:经典同步问题之哲学家进餐问题
本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 (王道408 ...
- (王道408考研操作系统)第二章进程管理-第三节8:经典同步问题之吸烟者问题
本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 文章目录 一 ...
- (王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题
注意:生产者与消费者问题Linux系统编程专栏有案例讲解 Linux系统编程39:多线程之基于阻塞队列生产者与消费者模型 Linux系统编程40:多线程之基于环形队列的生产者与消费者模型 本文接:(王 ...
- 计算机408知识点大全,2022计算机408考研知识点:输入输出系统
2022计算机408考研知识点:输入输出系统 如果你准备考计算机专业研究生,小编敬佩你的勇气,作为专业难度很高的计算机专业来说,一定要全力备考.本文新东方在线计算机考研小编整理分享"2022 ...
最新文章
- 《研发企业管理——思想、方法、流程和工具》——1.11 论成本
- 使用 acme.sh 获取网站证书并配置https访问
- bzoj 1827: [Usaco2010 Mar]gather 奶牛大集会【树形dp】
- 链表是否带环、环入口、环长度、链表相交问题分析与总结
- Mysql事务处理问题
- LwIP 之六 详解动态内存管理 内存池(memp.c/h)
- CGRectInset CGRectoffset UIEdgeInsetsInsetRect 这三个函数的使用情况
- 【LCT】网络(luogu 2173/ZJOI2011)
- docker访问宿主机mysql_docker容器内访问宿主机127.0.0.1服务
- ajax传回的数据做表格,Datatables ajax返回的数据顺序与表格中的数据顺序不一致...
- 【java学习之路】数据库连接JDBC
- 力扣-455 分发饼干
- WLAN配置实例(二)——三层组网隧道转发
- linux挂载windows上的共享文件夹
- 41. 后台模块开发(6)
- sql 日期函数往前推当前时间指定天数
- QQ音乐、网易云音乐、虾米音乐们的音乐社区暗战
- 面试题:为什么说 Mybatis 是半自动ORM 映射工具?它与全自动的区别在哪里?
- 题目 2322: 大鱼吃小鱼
- LaTex如何自动生成参考文献