Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
氷泠
CSBookNotes
提交
318ce669
C
CSBookNotes
项目概览
氷泠
/
CSBookNotes
上一次同步 1 年多
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
CSBookNotes
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
318ce669
编写于
12月 08, 2020
作者:
2
2293736867
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Chapter6
上级
1b0681b0
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
352 addition
and
0 deletion
+352
-0
OperatingSystem/Chapter6/README.md
OperatingSystem/Chapter6/README.md
+145
-0
OperatingSystem/Chapter6/answer.md
OperatingSystem/Chapter6/answer.md
+113
-0
OperatingSystem/Chapter6/exercise.md
OperatingSystem/Chapter6/exercise.md
+94
-0
未找到文件。
OperatingSystem/Chapter6/README.md
0 → 100644
浏览文件 @
318ce669
# 1
`I/O`
系统基本功能
`I/O`
基本功能如下:
-
隐藏物理设备的细节
-
实现与设备无关
-
提高处理机与
`I/O`
设备利用率
-
对
`I/O`
设备进行控制
-
确保对设备的正确共享
-
错误处理
# 2 `I/O`层次结构
通常把
`I/O`
软件组织分为四个层次:
-
用户层
`I/O`
软件:实现与用户交互的接口,用户可直接调用该层提供的库函数
-
设备独立性软件:用于实现用户程序与设备驱动器的统一接口
-
设备驱动程序:与硬件直接相关,用于具体实现系统对设备发出的操作指令,驱动
`I/O`
设备工作的驱动程序
-
中断处理程序:用于保存被中断进程的
`CPU`
环境,转入相应的中断处理程序进行处理
-
硬件:具体执行
`I/O`
操作的硬件
# 3 `I/O`系统接口
`I/O`
接口可以分为:
-
块设备接口:是块设备管理程序与高层之间的接口,用于控制该类设备的输入和输出
-
流设备接口:是流设备管理程序与高层之间的接口,又称为字符设备接口
-
网络通信接口:网卡等
# 4 `I/O`设备与控制器的接口
通常设备并不是直接与
`CPU`
通信,需要通过一个中介,这个中介就是设备与控制器之间的接口,通常该种接口需要包含三种类型的信号线:
-
数据信号线:用于在设备与设备控制器之间传送数据信号
-
控制信号线:作为设备控制器向
`I/O`
设备发送控制信号时的桐庐
-
状态信号线:用于传送指示设备当前状态的信号
# 5 设备控制器
## 5.1 基本功能
-
接收和识别命令
-
数据交换
-
标识和报告设备状态
-
地址识别
-
数据缓冲区
-
差错控制
## 5.2 组成部分
设备控制器由以下三部分组成:
-
设备控制器与处理机的接口:用于实现
`CPU`
与设备控制器之间的通信,共有三类线,数据线与地址线与控制线
-
设备控制器与设备的接口:每个设备一个接口,每个接口存在数据、控制和状态三种类型的信号
-
`I/O`
逻辑:实现对设备的控制
# 6 `I/O`通道
## 6.1 概念
`I/O`
通道是一种特殊的处理机,具有执行
`I/O`
指令的能力,可以通过通道程序控制
`I/O`
操作,但是与一般的处理机不同的是:
-
指令类型单一:主要局限与
`I/O`
有关的指令
-
无内存:通道没有自己的内存,与
`CPU`
共享内存
引入通道的目的是为了建立独立的
`I/O`
操作,减少
`I/O`
设备与
`CPU`
的交互。
## 6.2 通道类型
### 6.2.1 字节多路通道类型
按字节交叉方式工作的通道,采用多路分时复用,也就是你时间片轮转方式共享主通道。工作原理就是通过交叉字节进行工作,一个通道包含多个子通道,发送数据时按顺序合并各个子通道的数据。
### 6.2.2 数组选择通道
字节多路通道不适用连接告诉设备,推动了数组选择通道的出现,但是其中只包含一个分配型子通道,在一段时间内只能执行一道通道程序,控制一台设备进行数据传送,而且只能由一台设备独占,通道利用率低。
### 6.2.3 数组多路通道
结合了前两种通道的有点,包含多个非分配型子通道,既具有很高的数据传输速率,又能获得令人满意的通道通道利用率。
# 7 中断
## 7.1 概念
-
中断:指
`CPU`
对
`I/O`
设备发来的中断信号的一种响应,
`CPU`
暂停正在执行的程序,保留
`CPU`
环境后,自动转去执行该
`I/O`
设备的中断处理程序。由于中断由外部引起,又叫外中断
-
陷入:
`CPU`
内部所引起的中断,与中断的主要区别是中断来自
`CPU`
外部,陷入来自
`CPU`
内部
## 7.2 中断向量表
为了处理方便,通常将每种设备配以相应的中断处理程序,并把该应用程序的入口地址放在中断向量表的一个表项中,并为每个设备的中断请求规定一个中断号,
`当1I/O`
设备发来请求中断信号,根据中断号查找中断向量表,从中取得中断设备处理程序的入口。
## 7.3 多中断处理方案
-
屏蔽/禁止中断:处理一个中断的时候屏蔽所有中断,让它们等待,完成本次中断后再次检查是否有中断发生
-
嵌套中断:根据优先级顺序确定最高优先的中断请求,而且高优先级的中断请求可以抢占正在运行的低优先级中断的处理机
## 7.4 处理过程
中断的处理步骤如下:
-
测试是否有未响应的中断信号
-
保护被中断进程的
`CPU`
环境
-
转入相应的设备处理程序
-
中断处理
-
恢复
`CPU`
的现场并退出中断
# 8 设备驱动程序
## 8.1 概述
设备处理程序通常又叫设备驱动程序,是
`I/O`
系统高层与设备控制器之间的通信程序,主要任务是接收上层软件发来的抽象
`I/O`
要求,再转换为具体要求发送给设备控制器,同时也负责将信号传送给上层软件。
功能包括:
-
接收与设备无关软件发来的命令和参数
-
检查用户
`I/O`
请求的合法性
-
发出
`I/O`
命令
-
及时响应设备控制器发来的中断请求
## 8.2 处理过程
-
将抽象要求转换为具体要求:将一些抽象的命令转换为对设备的具体命令等
-
对服务请求进行校验:检查请求的合理性,根据情况决定是否拒绝执行
-
检查设备状态:检查设备是否处于就绪状态
-
传送必要参数:传送数据以及相关参数
-
启动
`I/O`
设备:驱动程序向控制器中的命令寄存器传送相应的控制命令
## 8.3 对`I/O`设备的控制方式
-
使用轮询的可编程
`I/O`
方式
-
使用中断的可编程
`I/O`
方式
-
直接存储器访问方式
-
`I/O`
通道控制方式
# 9 系统调用
应用程序可以通过系统调用间接引用
`I/O`
过程,对
`I/O`
设备进行操作,调用过程如下:
-
用户程序执行系统调用命令
-
操作系统捕获到系统调用
-
`CPU`
从用户态转换核心态
-
进行对应
`I/O`
操作
-
`CPU`
从核心态转换为用户态
-
返回到应用程序继续执行
# 10 设备无关性
设备无关性/设备独立性的基本含义是应用程序中所用的设备,不局限于使用某个具体的物理设备。
# 11 假脱机系统
## 11.1 概念
联机情况下实现的同时外围操作的技术称为
`SPOOLing`
技术,也叫假脱机技术,可将一台物理
`I/O`
设备虚拟为多台逻辑
`I/O`
设备,这样就可以允许多个用户共享一条物理
`I/O`
设备。
## 11.2 组成
由以下四部分组成:
-
输入井+输出井:磁盘上开辟的两个区域,输入井模拟脱机输入时的磁盘,用于收容
`I/O`
设备输入的数据,输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据
-
输入缓冲区+输出缓冲区:内存中开辟的两个缓冲区,输入缓冲区用于暂存输入设备传送的数据,输出缓冲区用于暂存从输出井传送的数据
-
输入进程+输出进程:输入进程也叫预输入进程,用于模拟脱机输入时外围控制机,将用户要求的数据从输入设备传送到输入缓冲区,再存放到输入井,输出进程也叫缓输出进程,用于模拟脱机输出时的外围控制机,把用户要求输入的数据从内存传送并存放到输出井
-
井管理程序:控制作业与磁盘井之间的信息交换
## 11.3 特点
-
提高了
`I/O`
的速度
-
将独占设备改造成共享设备
-
实现了虚拟设备功能
# 12 引入缓冲区的原因
-
缓和
`CPU`
和
`I/O`
设备间速度不匹配之间的矛盾
-
减少对
`CPU`
的中断频率,放宽对
`CPU`
中断响应时间的限制
-
解决数据粒度不匹配的问题
-
提高
`CPU`
与
`I/O`
设备之间的并行性
OperatingSystem/Chapter6/answer.md
0 → 100644
浏览文件 @
318ce669
# 选择题
1、B
2、C
3、C
4、C
5、A
6、B
7、B
8、C
9、B
# 填空题
# 1
中断驱动方式
`DMA`
控制方式
# 2
`CPU`
`I/O`
设备
内存地址
数据缓冲
# 3
`CPU`
`I/O`
设备
`CPU`
`I/O`
设备
# 4
缓冲首部
缓冲体
# 5
用户层软件
设备独立性软件
设备驱动程序
`I/O`
中断处理程序
# 6
设备控制表
系统设备表
控制器控制表
通道控制表
# 7
设备固有属性
设备分配算法
设备分配中的安全性
# 8
逻辑设备表
逻辑设备名
物理设备名
设备驱动程序的入口地址
# 9
输入井
输出井
输入缓冲区
输出缓冲区
输入进程
输出进程
# 10
寻道时间
旋转延迟时间
数据传输时间
寻道时间
使平均寻道时间最短
# 11
`SSTF`
饥饿
`SCAN`
OperatingSystem/Chapter6/exercise.md
0 → 100644
浏览文件 @
318ce669
# 选择题
# 1、正确的是()
A、控制器可以控制通道,设备在通道控制下工作
B、通道控制控制器,设备在控制器控制下工作
C、通道和控制器分别控制设备
D、控制器控制通道和设备的工作
# 2、通道是一种特殊的()
A、
`I/O`
设备
B、设备控制器
C、处理机
D、
`I/O`
控制器
# 3、`I/O`控制方式发展过程中,最主要的推动因素是()
A、提高资源利用率
B、提高系统吞吐量
C、减少主机对
`I/O`
控制的干预
D、提高
`CPU`
与
`I/O`
的并行操作程度
# 4、磁盘`I/O`控制主要采用()方式
A、程序
`I/O`
方式
B、程序中断
C、
`DMA`
D、
`SPOOLing`
# 5、程序`I/O`方式中,对于输出设备,准备就绪是指()
A、输出缓冲区已空
B、输出缓冲区已有数据
C、输出设备已开始工作
D、输出设备已收到
`I/O`
指令
# 6、关于设备独立性的描述中,正确的是()
A、设备独立性是指
`I/O`
设备具有独立执行
`I/O`
功能的一种特性
B、设备独立性是指用户程序独立于具体使用的物理设备的一种特性
C、设备独立性是指独立实现设备共享的一种特性
D、设备独立性是指设备驱动程序独立于具体使用的物理设备的一种特性
# 7、`SPOOLing`中输入井是对脱机输入中的()进行模拟
A、内存输入缓冲区
B、磁盘
C、外围控制机
D、输入设备
# 8、`SPOOLing`中输出进程是对脱机输出中的()进行模拟
A、内存输入缓冲区
B、磁盘
C、外围控制机
D、输入设备
# 9、能避免磁臂粘着现象的算法是()
A、
`SSTF`
B、
`FSCAN`
C、
`SCAN`
D、
`CSCAN`
# 填空题
# 1、对打印机`I/O`控制方式常采用(),对磁盘`I/O`控制方式常采用()
# 2、`DMA`是指允许()和()之间直接交换数据的设备,在`DMA`中必须设备地址寄存器,用于存放(),还必须设置()寄存器用来暂存交换的数据
# 3、设备控制器是()和()之间的接口,接收来自()的`I/O`命令,并用于控制()的工作
# 4、缓冲池中的每个缓冲区由()和()两部分组成
# 5、`I/O`软件通常被组织成()、()、()和()四个层次
# 6、为了实现设备分配,系统中应配置()和()数据结构,为实现控制器和通道的分配,系统中还应配置()和()的数据结构
# 7、除了设备的独立性外,在设备分配时还要考虑()、()和()三个要素
# 8、为实现设备独立性,在系统中必须设置()表,通常包括()、()和()三项
# 9、`SPOOLing`系统是由磁盘中的()和(),内存中的()和(),()和()以及井管理程序构成的
# 10、磁盘访问时间由()、()和()三部分组成,其中占比重较大的是(),故磁盘调度的目标为()
# 11、磁盘调度中,选择优先为离当前磁头最近的磁道上的请求服务算法为(),这种算法的缺点是会产生()现象,选择优先为当前磁头移动方向上、离当前磁头最近的磁道上的请求服务算法为()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录