持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情
作者:大三的土狗
专栏:计算机操作系统
前言
操作系统 (英语:Operating System,缩写:OS) 是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。
I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分。 在POSIX兼容的系统上,例如Linux系统 ,I/O操作可以有多种方式,比如DIO(Direct I/O),AIO(Asynchronous I/O,异步I/O),Memory-Mapped I/O(内存映射I/O)等,不同的I/O方式有不同的实现方式和性能,在不同的应用中可以按情况选择不同的I/O方式。
I/O系统
I/O系统管理的对象是I/O设备和相应的设备控制器。
概念I/O系统,英文全称为“Input output system”,中文全称为“输入输出系统”,由输入输出控制系统和外围设备两部分组成,是计算机系统的重要组成部分。在计算机系统中,通常把处理器和主存储器之外的部分称为输入输出系统。
I/O系统的基本功能
- 隐藏物理设备的细节
- 与设备的无关性
- 提高处理机和I/O设备的利用率
- 对I/O设备进行控制
- 确保对设备的正确共享
- 错误处理
I/O软件的层次结构
- 用户层I/O软件
- 设备独立性软件
- 设备驱动程序(厂家开发)
- 中断处理程序
- 硬件
I/O系统的分层
- 中断处理程序
- 设备驱动程序
- 设备独立性软件
I/O系统接口
-
块设备接口
-
指以数据块为单位来组织和传送数据信息的设备
-
典型的块设备是磁盘、光盘
-
块设备的基本特征
- ①传输速率较高,通常每秒钟为几兆位;
- ②它是可寻址的,即可随机地读/写任意一块;
- ③磁盘设备的I/O采用DMA方式。
-
-
流设备接口
-
又称字符设备指以单个字符为单位来传送数据信息的设备
-
这类设备一般用于数据的输入和输出,有交互式终端、打印机
-
字符设备的基本特征
- ①传输速率较低;
- ②不可寻址,即不能指定输入时的源地址或输出时的目标地址;
- ③字符设备的I/O常采用中断驱动方式。
-
-
网络通信接口
- 提供网络接入功能,使计算机能通过网络与其他计算机进行通信或上网浏览。
I/O设备和设备控制器
分类
-
使用特性分
- 存储设备
- I/O设备
-
传输速率分
-
低速设备(几字节——几百字节)
- 典型的设备有键盘、鼠标、语音的输入
-
中速设备(数千——数万字节)
- 典型的设备有行式打印机、激光打印机
-
高速设备(数十万——千兆字节)
- 典型的设备有磁带机、磁盘机、光盘机
-
设备并不是直接与CPU进行通信,而是与设备控制器通信。在设备与设备控制器之间应该有一个接口。
-
数据信号:控制器 ← 设备 ← 控制器
- 传送数据信号,输入、输出bit
-
控制信号: 控制器 → 设备
- 执行读、写操作的信号
-
状态信号:设备当前使用状态
设备控制器
-
主要功能:控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换
-
基本功能
-
接收和识别命令
- 控制寄存器、命令译码器
-
数据交换
- 实现CPU与控制器,控制器与设备间的数据交换
-
标识和报告设备的状态
-
地址识别
- 配置地址译码器,识别不同的设备
-
数据缓冲区
-
差错控制
-
-
设备控制器的组成
-
设备控制器与处理机(CPU)的接口
- 实现CPU与设备控制器之间的通信
-
设备控制器与设备的接口
- 控制器可连接多个设备
-
I/O逻辑
- 实现对设备的控制
- CPU利用该逻辑向控制器发送I/O命令
- 命令、地址译码
-
内存映像I/O
- 驱动程序将抽象I/O命令转换出的一系列具体的命令,参数等数据装入设备控制器的相应寄存器,由控制器来执行这些命令,具体实施对I/O设备的操作
I/O通道
-
目的:建立独立的I/O操作(组织, 管理和结束),使由CPU处理的I/O工作转由通道完成(解放CPU,实现并行)
-
什么是I/O通道?
- 是一种特殊的处理机,具有通过执行通道程序完成I/O操作的指令
- 特点:指令单一(局限于与I/O操作相关的指令),与CPU共享内存
-
基本过程:
- CPU向通道发出I/O指令->通道接收指令->从内存取出通道程序处理I/O->向CPU发出中断
-
通道类型
-
字节多路通道
- 低中速连接子通道时间片轮转方式共享主通道
- 字节多路通道不适于连接高速设备,这推动了按数组方式进行数据传送的数组选择通道的形成。
-
数组选择通道
- 这种通道可以连接多台高速设备,但只含有一个分配型子通道,在一段时间内只能执行一道通道程序, 控制一台设备进行数据传送, 直至该设备传送完毕释放该通道。这种通道的利用率很低。
-
数组多路通道
- 含有多个非分配型子通道,前两种通道的组合,通道利用率较好
-
-
瓶颈问题
- 原因;通道不足
- 解决办法:增加设备到主机间的通路,而不增加通道(结果类似RS触发器)
中断机构和中断处理程序
中断
-
分类
-
中断(外部触发)
- 对外部I/O设备发出的中断信号的响应
-
陷入(内部原因:除0)
- 由CPU内部事件引起的中断
-
-
中断向量表(类比51单片机)
- 中断程序的入口地址表
-
中断优先级
- 对紧急程度不同的中断处理方式
-
对多中断源的处理方式
- 屏蔽中断
- 嵌套中断
中断处理程序
- 测定是否有未响应的中断信号
- 保护被中断进程的CPU环境
- 转入相应的设备处理程序
- 中断处理
- 恢复CPU 的现场并退出中断
设备驱动程序
是I/O进程与设备控制器之间的通信程序,又由于它常以进程的形式存在,故以后就简称为设备驱动进程
主要任务
是接受来自它上一层的与设备无关软件的抽象请求,并执行这个请求。
功能
-
- 接收由I/O进程发来的命令和参数, 并将命令中的抽象要求转换为具体要求。例如,将磁盘块号转换为磁盘的盘面、 磁道号及扇区号。
-
- 检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式。
-
- 发出I/O命令,如果设备空闲,便立即启动I/O设备去完成指定的I/O操作;如果设备处于忙碌状态,则将请求者的请求块挂在设备队列上等待。
-
- 及时响应由控制器或通道发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理。
-
- 对于设置有通道的计算机系统,驱动程序还应能够根据用户的I/O请求,自动地构成通道程序。
设备驱动程序的处理过程
- 将用户和上层软件对设备控制的抽象要求转换成对设备的具体要求,如对抽象要求的盘块号转换为磁盘的盘面、磁道及扇区。
- 检查I/O请求的合理性。
- 读出和检查设备的状态,确保设备处于就绪态。
- 传送必要的参数,如传送的字节数,数据在主存的首址等。
- 工作方式的设置。
- 启动I/O设备,并检查启动是否成功,如成功则将控制返回给I/O控制系统,在I/O设备忙于传送数据时,该用户进程把自己阻塞,直至中断到来才将它唤醒,而CPU可干别的事。
对I/O设备的控制方式
-
I/O控制的宗旨
- 减少CPU对I/O控制的干预
- 充分利用CPU完成数据处理工作
-
I/O 控制方式
- 轮询的可编程I/O方式
- 中断驱动I/O方式
- DMA控制方式
- I/O通道控制方式
DMA控制器组成
- 主机与DMA控制器的接口
- DMA控制器与块设备的接口
- I/O控制逻辑
与设备无关的I/O软件
基本概念
-
含义: 应用程序独立于具体使用的物理设备。
-
驱动程序是一个与硬件(或设备)紧密相关的软件。为实现设备独立性,须在驱动程序上设置一层软件,称为设备独立性软件。
-
设备独立性(Device Independence)的优点
- 以物理设备名使用设备
- 引入了逻辑设备名
- 逻辑设备名称到物理设备名称的转换(易于实现I/O重定向)
与设备无关的软件
- 设备驱动程序的统一接口
- 缓存管理
- 差错控制
- 对独立设备的分配与回收
- 独立于设备的逻辑数据块
设备分配中的数据结构
- 设备控制表DCT
- 控制器控制表COCT
- 通道控制表CHCT
- 显然,在有通道的系统中,一个进程只有获得了通道,控制器和所需设备三者之后,才具备了进行I/O操作的物理条件
- 系统设备表SDT
- 逻辑设备表LUT
- 分配的流程,从资源多的到资源紧张的:LUT->SDT->DCT->COCT->CHCT
- 在申请设备的过程中,根据用户请求的I/O设备的逻辑名,查找逻辑设备和物理设备的映射表;以物理设备为索引,查找SDT,找到该设备所连接的DCT;继续查找与该设备连接的COCT和CHCT,就找到了一条通路。
用户层的I/O软件
系统调用与库函数
- OS向用户提供的所有功能,用户进程都必须通过系统调用来获取
- 在C语言以及UNIX系统中,系统调用(如read)与各系统调用所使用的库函数(如read)之间几乎是一一对应的。而微软的叫Win32API
缓冲区管理
缓冲的引入
- 缓和CPU与I/O设备间速度不匹配的矛盾
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
- 提高CPU和I/O设备之间的并行性
- 解决数据粒度不匹配的问题
单缓冲区
- 即在CPU计算的时候,将数据数据输入到缓冲区(大小取决与T和C的大小)
双缓冲区
- 即允许CPU连续工作(T不断)
环形缓冲区
-
组成
- 多个缓冲区
- 多个指针
-
使用
- Getbuf过程
- Releasebuf过程
-
同步问题
缓冲池
-
组成
-
空白缓冲队列(emq)
- 由空缓冲区链接而成F(emq),L(emq)分别指向该队列首尾缓冲区
-
输入队列(inq)
- 由装满输入数据的缓冲区链接而成F(inq),L(inq)分别指向该队列首尾缓冲区
-
输出队列(outq)
- 由装满输出数据的缓冲区链接而成F(outq), L(outq)分别指向该队列首尾缓冲
-
-
Getbuf和Putbuf过程
- 收容:缓冲池接收外界数据
- 提取:外界从缓冲池获得数据
-
缓冲区工作方式(从缓冲区的角度来看)
- 收容输入
- 提取输入
- 收容输出
- 提取输出
磁盘存储器的性能和调度
数据的组织和格式
磁盘的类型
- 固定头磁盘(贵)
- 移动头磁盘
磁盘访问的时间(关键)
- 寻道时间Ts=m*n+s
- 旋转延迟时间Tr
- 传输时间Tt=b/rN
- 总时间Ta=Ts+1/2r+b/rN
磁盘的调度算法
-
先来先服务(FCFS)
- 优点:公平,简单
- 缺点:可能导致某些进程的请求长期得不到满足
-
最短寻道时间优先(SSTF)
- 说明:要求访问的磁道和当前磁头所在的磁道距离最近,以使每次的寻道时间最短
-
扫描算法(SCAN)
- 扫描算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁道当前的移动方向
- 联想电梯的运行
- 可防止低优先级进程出现“饥饿”的现象
-
循环扫描算法(CSCAN)
- 算法规定磁头单向移动,例如,只是自里向外移动,当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问磁道,亦即将最小磁道号紧接着最大磁道号构成循环,进行循环扫描
-
NStepScan算法
- N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次这些子队列。
-
FSCAN算法
- 是Nstepscan算法的简化,将磁盘请求队列分成两个子队列
总结
以上就是计算机操作系统输入输出系统的全部内容,希望可以帮到学习计算机操作系统的同学,不过本教程仅仅是对知识框架的梳理,想要具体学习还需参考书籍视频等等。