现代操作系统读书笔记--第五章 输入/输出

5.1 I/O硬件原理
只注意I/O硬件提供给软件的接口,而不是其内部原理
5.1.1 I/O设备
I/O设备大致可分为两类:块设备和字符设备
块设备把信息存储在固定大小的块中,每个块有自己的地址。,每个块都独立于其他块读写。块可寻址设备与其他设备之间并没有严格的界限。
字符设备以字符为单位发送或接受一个字符流,而不考虑任何块结构,是不可寻址的,也没有任何寻道操作。
这里写图片描述
5.1.2 设备控制器
I/O设备一般由机械部件和电子部件两部分组成,电子部件称为设备控制器或适配器,机械部分则是设备本身。
实际从驱动器出来的是一个串行的比特流:前导符+扇区位+错误校正码
控制器将串行的位流转换为字节块,然后校验后存入内存
5.1.3 内存映射I/O
每个控制器有几个寄存器用来与CPU进行通信,许多设备还有一个操作系统可以读写的数据缓冲区。
问题:CPU如何与设备的控制寄存器和数据缓冲区进行通信?
答:
方法一“每个控制寄存器被分配一个I/O端口号,形成I/O端口空间,只有操作系统可以访问。
方法二:将所有的寄存器映射到内存空间(内存映射I/O)
方法三:混合实现
这里写图片描述
工作原理:CPU将需要的地址放到总线地址线-》在总线的一条控制线上设置一个read信号-》第二条信号线表明是IO空间还是内存空间,如果只是内存空间,看该地址落在的地址范围确定是IO还是内存模块。
优缺点:
内存映射:
优点
1.避免了汇编的使用
2.不需要特殊的保护机制
3.对内存适用的指令也适用于控制寄存器
缺点:
1.高速缓存灾难
2.总线地址读取问题
这里写图片描述
5.1.4 直接存储器存取
CPU需要寻址设备和IO交换数据,常用DMA方案
这里写图片描述
DMA有简单的(一路传送)有复杂的(多路传送)
DMA的两种工作模式:每次一字(周期窃取)和块模式(突发模式)
大多数DMA控制器使用物理内存地址进行传送。
Q:为什么磁盘首先要把数据读入其内部的缓冲区?
A:(1)校验和 (2)总线忙问题
不是所有的计算机都使用DMA,因为CPU很快而DMA很慢。

5.1.5 重温中断
这里写图片描述
地址线上的数字被用作指向一个称为中断向量的表格的索引,以便读取一个新的程序计数器
在开始服务程序之前,硬件要保存一定信息(程序计数器等),保存在堆栈或寄存器内
精确中断和不精确中断
将机器留在一个明确状态的中断称为精确中断
这里写图片描述
5.2 I/O软件原理
5.2.1 I/O软件的目标
设备独立性:应该能够编写出这样的程序,它可以访问任意IO设备而无需事先制定设备。
统一命名:一个文件或一个设备的名字应该是一个简单的字符串或一个整数,它不应该依赖于设备,用这种方法,所有文件和设备都采用相同的方式–路径名进行寻址
错误处理:一般来说,错误应该尽可能地在接近硬件地层面得到处理,如果处理不了,才用软件处理。
同步(阻塞)和异步(中断驱动)传输
缓冲问题,共享设备和独占设备(会产生死锁)问题
5.2.2 程序控制IO
定义:让CPU做全部工作
这里写图片描述
这里写图片描述
查询(忙等待):CPU不断查询设备以了解它是否就绪
程序控制IO的缺点:直到完成全部IO完成之前都要占用CPU的全部时间

5.2.3 中断驱动IO
定义:允许CPU在等待就绪的 同时做其他事情
这里写图片描述
缺点:中断本身也会浪费时间
5.2.4 使用DMA的IO
本质上,DMA是程序控制IO,将中断的次数从每个字符一次减少到每个缓冲区一次,但是DMA速度比CPU慢得多,如果CPU没有其他事情要做,或许前面的方法更好。
这里写图片描述

5.3 IO软件层次
IO软件通常组织成四个层次,每一层具有一个要执行的定义明确的功能和一个定义明确的与邻近层次的接口。
5.3.1 中断处理程序
应当将中断隐藏在操作系统内部:将启动一个IO操作的驱动程序阻塞起来,直到IO操作完成并产生一个中断。
当中断发生时,中断程序将做它必须要做的全部工作以便对中断进行处理,然后,他可以启动中断的驱动程序以解除阻塞。中断的最终结果是使先前被阻塞的程序能够继续运行。
5.3.2 设备驱动程序
每个连接到计算机上的IO设备都需要某些设备特定的代码来对其进行控制,即设备驱动程序。
每个设备驱动程序通常处理一种类型的设备,不过在有时候,极其不同的设备却基于相同的底层技术,如USB。
为了访问设备的硬件,设备驱动程序通常必须是操作系统内核的一部分
这里写图片描述
操作系统通常将驱动程序分类:块设备(磁盘)和字符设备(键盘)
大多数os定义了标准接口(块设备或字符设备)
在某些系统中,操作系统是一个二进制程序,包含需要编译到其内部的所有驱动程序。而之后的系统,驱动程序在执行期间被动态装载到系统。
驱动程序的功能:(1)接受上方与设备无关的读写请求,并且目睹执行 (2) 启动时检查参数 (3)检查设备是否在被使用
控制设备意味着向设备发出一系列命令,根据设备必须要做的工作,由驱动程序处确定命令序列。
命令发出后,会牵扯到两种情况:阻塞(可以被中断唤醒)和不阻塞
驱动程序必须是重入的,即一个正在运行的驱动程序必须预料到在第一次调用完成之前第二次被调用
驱动程序不允许进行系统调用,但是它们经常需要与内核的其余部分进行交互。

5.3.3 与设备无关的IO软件
设备驱动程序和与设备无关的软件之间的确切界限依赖于具体系统
与设备无关的软件的基本功能是执行对所有设备公共的IO功能,并且向用户软件一个统一的接口
这里写图片描述
1.设备驱动程序的统一接口
这里写图片描述
所有设备都有主设备号(定位驱动程序)、次设备号(作为参数传递给驱动程序,确定要读写的具体单元)
设备保护:设备是作为命名对象出现在文件系统中的,这意味着针对文件的常规保护规则也适用于IO设备
2.缓冲
这里写图片描述
方案一的问题:用户进程运行多次效率较低。
方案二问题:分页问题
方案三问题:调页面时新字符的到来问题,使用双缓冲(方案四)解决。
缓冲的另一种形式:循环缓冲区
缓冲对于输出也十分重要
这里写图片描述
3.错误报告
一类IO错误是编程错误:返回给调用者一个错误代码
另一类错误是典型的IO错误:
4.分配与释放专用设备
5.与设备无关的块大小
不同的磁盘可能具有不同的扇区大小,应该由与设备无关的软件来隐藏这一事实并向高层提供一个统一的块大小

5.3.4 用户空间的IO软件
大部分IO软件都在操作系统内部,但是仍有一小部分在用户空间,包括与用户进程连接在一起的库,甚至完全运行于内核之外的程序。
并非所有的用户层IO软件都是由库过程组成的,另一个重要类别是假脱机系统,是多道程序设计系统中处理独占IO设备的一种方法。另一种方法是创建一个特殊进程,称为守护进程,以及一个特殊目录,称为假脱机目录
这里写图片描述
5.4 盘
5.4.1 盘硬件
磁盘具有读写速度同样快的特点,这使得它们适合作为辅助存储器。这些盘的阵列有时用来提供高可靠性的存储器。
1.磁盘
扇区-》磁道(与垂直堆叠的磁头个数相同)-》柱面-》磁盘
老式的磁盘只有少量的电子设备,它们只是传送简单的串行位流,在这些磁盘上,控制器做了大部分的工作。
重叠寻道:控制器同时控制多个驱动器进行寻道。
硬盘可以可以在多个驱动器上同时读写,软盘不能
这里写图片描述
现代磁盘被划分为环带,外层的环带比内层的环带拥有更多的扇区
为了隐藏每个磁道有多少扇区,大多数现代磁盘都有一个虚拟几何规格呈现给操作系统
通过逻辑快寻址来扩大磁盘容量
这里写图片描述
2.RAID
由于CPU和磁盘性能差距越来越大,找寻特殊磁盘组织来改进磁盘性能。并行IO操作来提高CPU性能。
RAID:将一个装满了磁盘(SCSI)的盒子安装到计算机,用RAID控制器替换磁盘控制器卡,而软件看起来就是一个磁盘。,将所有数据分布在全部驱动器上,这样就可以并行操作。
RAID的七种标准配置(0级到6级)
这里写图片描述
5.4.2 磁盘格式化
在磁盘能够使用之前,每个盘片必须经受由软件完成的低级格式化。
扇区:前导码+数据+ECC(恢复读错误)
柱面斜进:第0扇区位置与前一个磁道存在偏移,便于读取多个磁道的数据。
这里写图片描述
磁头斜进
低级格式化的结果是磁盘容量减少,所以一般买的磁盘容量不等于可用的磁盘容量。
格式化还对性能产生影响
交错方式编号扇区:单交错双交错 解决连续读,缓冲不够大的问题。
这里写图片描述
低级格式化完成之后,要对磁盘分区,逻辑上每个分区是一个独立的磁盘
0扇区包含主引导记录(MBR):包含某些引导代码以及处在扇区末尾的分区表(CDEF)
新系统支持GPT(因为磁盘容量在变大)
准备一块磁盘可用的最后一步是 高级格式化
打开电源-》bios读入主引导记录并跳转到主引导记录-》这一引导程序进行检查了解哪个分区是活动的-》引导扇区中的引导程序搜索文件系统以找到操作系统内核-》该程序被装入内存并执行

5.4.3 磁盘臂调度算法
读写磁盘块需要的时间:寻道时间(主导地位)+旋转延迟+实际数据传输时间
先来先服务(FCFS):每个磁盘驱动程序都维护一张表,每一个柱面未完成的请求组成一个链表,链表头存放在相应表目中。
最短寻道优先(SSF):下一次总是处理与磁头距离最近的请求以使寻道时间最小化
这里写图片描述
缺点:远离中部区域的请求得到的服务很差,有失公平。
电梯算法
这里写图片描述
某些磁盘控制器提供了一种方法供软件检查磁头下方的当前扇区号。由此有多种优化。
许多磁盘控制器总是读出多个扇区并对其进行高速缓存。完全独立于操作系统的高速缓存

5.4.4 错误处理
坏扇区处理办法:在控制器中对它们进行处理或者在操作系统中
控制器中处理坏块的办法:
这里写图片描述
操作系统处理坏块
备份问题:坏扇区要隐藏、寻道错误问题
recalibrate与中断问题
AV盘(音视盘)驱动器永远不会重新校准,因为他要求位流匀速到达

5.4.5 稳定存储器
稳定存储器:要么正确写,要么什么也不做,保证数据绝对正确
可能发生的错误:ECC正确概率低、扇区可能自发变坏、CPU可能出故障
稳定存储器使用一对完全相同的磁盘,无差错时,两者完全相同。
稳定写、稳定读、崩溃恢复
稳定写期间CPU崩溃的五种可能性:
这里写图片描述
优化和改进:在稳定写期间跟踪(非易失性RAM)被写的是哪个块,这样在恢复的时候必须被检验的块只有一个
每天都要扫描两个磁盘,防止两者同时变坏。
5.5 时钟
时钟又称为定时器,负责维护时间,防止一个进程垄断CPU
5.5.1 时钟硬件
有两种类型:比较简单的、可编程时钟
这里写图片描述
可编程时钟的几种操作模式: 一次完成模式、方波模式(产生时钟滴答)
优点:中断频率可以由软件控制
为了防止计算机的电源被切断时丢失时间,有备份时钟或者开机网络同步。

5.5.2 时钟软件
除了中断由时间硬件完成,其他功能实现都由时钟软件实现
(1)维护日时间
这里写图片描述
(2)防止进程超时运行
(3)对CPU的使用情况记账
(4)处理用户进程提出的alarm系统调用
这里写图片描述
(5)为系统本身的各个部分提供监视定时器
(6)完成概要剖析、监视和统计信息收集
5.5.3 软定时器
管理IO的两种方法:中断和查询
软定时器避免了中断,该定时器是主系统定时器以外的。
软定时器随着其他原因进入内核的频率而脉动

5.6 用户界面:键盘、鼠标和监视器
5.6.1 输入软件
1. 键盘软件
IO端口中的每个数字是键的编号,称为编号码,一共128个键,所以只需7个位
原始模式(面向字符) 加工模式(面向行)
回显(刚刚键入的字符出现在屏幕上)
回车:回到第一列 换行:到下一行 Enter键是回车换行
这里写图片描述
2. 鼠标软件
鼠标步:计算机有反应的最小移动距离,大约是0.1mm
发到计算机的三个项目:Δx、Δy、按钮
5.6.2 输出软件
1.文本窗口
移动光标的方法:1.转义序列 2. termcap
标准化转义序列:ANSI标准
这里写图片描述
2.X窗口系统
X服务器(在本机内部):采集输入并输出在屏幕上的软件,与X客户(可能在远方服务器上)进行通信
这里写图片描述
从程序到工作站的命令不面向连接,当需要来自工作站的信息时,是面向连接的
X是高度事件驱动的
X中一个关键概念是资源
这里写图片描述
3.图形用户界面(GUI)
输入使用键盘鼠标,输出使用图形适配器,包含有视频RAM
屏幕上的基本项目:窗口
这里写图片描述
Windows是面向消息的,而linux是面向事件的
这里写图片描述
GDI:屏幕的实际绘图,绘制之前,要先获取一个设备上下文。
这里写图片描述
4. 位图
复制图的方法:windows元文件、位图(每一个网格方块的平均红、绿、蓝取值被采样并且保存为一个像素的值)
这里写图片描述
DIB:便于在不同设备之间移动位图
5.字体
TrueType字体:不是位图而是轮廓,通过围绕其周界的一系列点来定义
首先缩放然后栅栏化。
6.触摸屏
电阻屏(不支持多点触控)、电容屏

5.7 瘦客户机
主流计算范式一直在中心化计算和分散化计算之间震荡。
大部分用户想要高性能的交互式计算,但是实在不想管理一台计算机,于是分时系统使用的瘦客户机出现了(Chromebook)

5.8 电源管理
减少能量消耗的一般方法:1.某些部件(IO)不用时操作系统关闭他们 2.应用程序使用较少的能量

5.8.1 硬件问题
电池:1.一次性 2.可再充电的
耗能:工作>睡眠>休眠>关机
这里写图片描述

5.8.2 操作系统问题
找到算法和启发式方法,让操作系统对关于关闭什么设备以及何时关闭做出良好的决策。
1.显示器
定期关闭屏幕
这里写图片描述
2.硬盘
一个停止的磁盘是休眠而不是睡眠,重启会消耗相当多的时间与能量,设定一个特征时间来决定是否停转。
或者在RAM中拥有一个大容量磁盘高速缓存。
或者操作系统通过发送信息或信号保持磁盘的状态通知给正在运行的程序。
3.CPU
CPU电压、时钟周期、电能损耗之间存在关系
这里写图片描述
慢速运行比快速运行具有更高的能量效率
放慢CPU核不总是意味着性能的下降

4.内存
节能方法:1.刷新然后关闭高速缓存(睡眠状态) 2.将主存的内容写到磁盘上,然后关闭主存本身(休眠)

5.无线通信
由用户或者周期性关闭无线电设备

6.热量管理
风扇问题、周期性接入点问题、

7.电池管理
智能电池

8.驱动程序接口
ACPI(高级配置与电源接口):操作系统让设备报告当前状态、命令驱动程序削减能耗或正常运转

5.8.3 应用程序问题
指示程序使用较少的能量

5.9 有关输入/输出的研究
磁盘性能、网络、电能损耗、传感网络、时钟、中断延迟、设备驱动、瘦客户机

5.10 小结

猜你喜欢

转载自blog.csdn.net/qq_28897525/article/details/80592735