王道408---OS---输入输出管理

发布时间 2023-09-11 17:51:03作者: TLSN

一、I/O接口与I/O端口

I/O接口(设备控制器)位于CPU与设备之间,它既要与CPU通信,又要与设备通信,还要具有按CPU发来的命令去控制设备工作的功能

img

1、设备控制器与CPU的接口

该接口有三类信号线:数据线、地址线和控制线。数据线通常与两类寄存器相连:数据寄存器(存放从设备送来的输入数据或从CPU送来的输出数据)和控制/状态寄存器(存放从CPU送来的控制信息或设备的状态信息)。
CPU通过控制线发出命令,通过地址线指明要操作的设备

2、设备控制器与设备的接口

一个设备控制器可以连接一个或多个设备,因此控制器中有一个或多个设备接口。每个接口中都存在数据、控制和状态三种类型的信号。

3、I/O逻辑
I/O逻辑⽤于负责接收和识别CPU的各种命名(如地址译码)
根据CPU的命令对相应的设备发送命令
⽤于实现设备控制功能

I/O端口是指设备控制器中可被CPU直接访问的寄存器

img

二、I/O控制方式---DMA

所传送的数据,是从设备直接送入内存的,或者相反

这里不是像其他I/O一样,先放入数据寄存器中,再放入内存

DMA的基本单位是数据块

三、I/O控制方式---通道

实现复杂,需要专⻔的硬件⽀持

⼀个通道可以控制多台设备与内存的数据交换

通道程序存放在内存中,通道程序由通道执行

CPU、通道、I/O设备可并⾏⼯作,资源利⽤率很⾼

所传送的数据,是从设备直接送入内存的,或者相反

进一步减少了对CPU的干预

通道运行方式

设置通道后,CPU只需向通道发送⼀条I/O指令,通道在收到该指令后,便从内存中取出本次要执⾏的通道程序,然后执⾏该通道程序
仅当通道完成规定的I/O任务后,才向CPU发出中断信号

传送单位---一组块

四、四种I/O方式比较

img

五、I/O软件层次结构

用户层 I/O软件

实现与用户交互的接口
⽤户通过统⼀的接⼝发送命令
如发送read命令

设备独立性软件

用于实现用户程序与设备驱动器的统一接口、设备命令、设备的保护及设备的分配与释放
对⽤户的命令进⾏解析
如解析read命令

设备驱动程序

负责执⾏OS发出的I/O命令,针对不同的硬件将命令解析为指令
若更换物理设备,只需要修改设备驱动程序,不需要修改应⽤程序
如将解析好的read命令转换为指令
如计算磁盘的柱⾯号,磁头号,扇区号

中断处理程序

中断正在运⾏的进程,转⽽执⾏⽤户命令
如中断当前进程,执⾏相关指令

六、错题6.1

块设备可寻址,字符设备不可寻址(T1)

共享设备是指一段时间内允许多个进程同时访问的设备(T1)

在设备控制器中用于实现设备控制功能的是I/O逻辑

字节多路通道常⽤于连接⼤量的低速或中速I/O设备,通道就是字节多路通道(T12)

T12

T13

设备的固有属性决定了设备的使用方式:设备独立性可以提高设备分配的灵活性和设备的利用率:设备安全性可以保证分配设备时不会导致永久阻塞。设备分配时一般不需要考虑及时性。

计算机系统为每台设备确定一个编号以便区分和识别设备,这个确定的编号称为设备的绝对号(T14)

七、磁盘高速缓存与缓冲区

磁盘高速缓存

磁盘高速缓存技术不同于通常意义下的介于CPU与内存之间的小容量高速存储器,而是指利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。因此,磁盘高速缓存逻辑上属于磁盘,物理上则是驻留在内存中的盘块。

单缓冲

在主存中设置一个缓冲区。当设备和处理机交换数据时,先将数据写入缓冲区,然后需要数
据的设备或处理机从缓冲区取走数据,在缓冲区写入或取出的过程中,另一方需等待。

双缓冲

I/O设备输入数据时先装填到缓冲区1,在缓冲区1填满后才开始装填缓冲区2,与此同时处理机可以从缓冲区1中取出数据送入用户进程,当缓冲区1中的数据处理完后,若缓冲区2已填满,则处理机又从缓冲区2中取出数据送入用户进程,而I/O设备又可以装填缓冲区1。注意,必须等缓冲区2充满才能让处理机从缓冲区2取出数据。
双缓冲机制提高了处理机和输入设备的并行程度。

循环缓冲

包含多个大小相等的缓冲区,每个缓冲区中有一个链接指针指向下一个缓冲区,最后一个缓冲区指针指向第一个缓冲区,多个缓冲区构成一个环形。
img

缓冲池

img

img
由多个系统公用的缓冲区组成,缓冲区按其使用状况可以形成三个队列:空缓冲队列、装满输入数据的缓冲队列(输入队列)和装满输出数据的缓冲队列(输出队列)。
还应具有4种缓冲区:用于收容输入数据的工作缓冲区、用于提取输入数据的工作缓冲区、用于收容输出数据的工作缓冲区及用于提取输出数据的工作缓冲区

高速缓存和缓冲区的区别

这俩就是完全不同的概念
img

八、设备分配

设备分配指根据⽤户的I/O请求分配所需的设备
设备分为独占设备、共享设备(磁盘)和虚拟设备(SPOOLing)

设备分配的数据结构以及专有名词

img

DCT 设备控制表
img

COCT 控制器控制表
img

CHCT 通道控制表(Channel control table)
img

SDT 系统设备表
img

设备分配流程

img

对于独占式设备,一般采用静态分配方式(由系统一次性分配该作业所要求的全部设备、控制器)

对于共享设备,一般采用动态分配方式,但在每个I/O传输的单位时间内只被一个进程所占有,通常采用先请求先分配和优先级高者优先的分配算法。

设备分配的安全性

img

逻辑设备名到物理设备名的映射

设备独立性是指应用程序独立于具体使用的物理设备
为了实现设备的无关性,当应用程序请求使用I/O设备时,应当用逻辑设备名。
但系统只识别物理设备名,所以应在系统中需要配置一张逻辑设备表,用于将逻辑设备名映射到物理设备名
LUT->SDT->DCT->COCT->CHCT
img

九、SPOOLing假脱机技术

不需要外围机,是⼀项将独占设备改造成共享设备的软件技术

脱机技术

img
脱机处理时,外部设备上的数据需要一个相当长的等待时间后才被进行处理。当外部设备上有数据输入时,主机并不予处理,只是将外部设备的数据存放到缓冲区中。一旦缓冲区满了,或是等待的时间到了,主机才进行加工处理。

对输出的操作也是这样,一旦计算机要把处理结果输出,它只是把输出结果送入缓冲区中,然后向外部设备慢慢地进行输出,而主机又去进行其它的加工处理,当缓冲区中的数据全部输出完毕,主机再把下一批的数据存入缓冲区中。

SPOOLing系统对脱机技术的模拟

img
输入进程模拟脱机输入时的外围机
输入井模拟脱机输入时的磁带,用于收容I/O设备输入的数据,输出进模拟脱机输出时的磁带,用于收容用户进程输出的数据

用户要求的数据从输入设备经过输入缓冲区送到输入井,当CPU需要输入设备时,直接从输入井读入内存。。
用户要求输出的数据先从内存送入输出井,待输出设备空闲,再将输入进中的数据经过缓冲区送到输出设备

SPOOLing系统的优特点

1、加快了作业执⾏的速度,提⾼了IO速度,将对低速IO设备执⾏的IO操作演变为对磁盘缓冲区中数据的存取
2、使独占设备变为共享设备,且没有为任何进程分配设备
3、提⾼了独占设备的利⽤率,缓和了CPU和低速IO设备之间的速度不匹配的⽭盾
4、实现了虚拟设备功能,对每个进程⽽⾔,都认为⾃⼰独占了⼀个设备
5、以空间换时间,需要磁盘空间(输⼊输出井)和内存空间(输⼊输出缓冲区)

共享打印机的实现就是SPOOLing技术

实现过程

img

十、设备驱动程序接口

img

十一、错题6.2

缓冲区管理着重要考虑的问题是实现进程访问缓冲区的同步(T8)

T9

提高单机资源利用率的关健技术是多道程序设计

SPOOLing技术不是由某用户作业控制的,而是由系统控制的

T32

十二、磁盘

磁盘结构

img
img

一个扇区称为一个盘块
所有磁头与磁盘中心距离相同且一起移动
磁盘的表⾯是由⼀些磁性物质组成,可以⽤这些磁性物理记录⼆进制数据
磁盘表⾯被划分⻓的⼀个个磁道
⼀个磁道⼜被划分为⼀个个扇区,每个扇区就是⼀个“磁盘块”
每个扇区的数据量相同(如1KB)
簇:⼀组扇区的意思
柱面:所有盘⾯中的相对位置相同的磁道组成了柱⾯。例如上图中所有盘⾯的最外侧磁道可以组成⼀个柱⾯。

磁盘地址 = 柱面号·盘面号·扇区号

读取某一磁盘块流程

① 根据柱⾯号移动磁臂,让磁头指向指定柱⾯。
② 激活指定盘⾯对应的磁头。
③ 磁盘旋转的过程,指定的扇区会从磁头下⾯划过。这样就完成了对指定扇区的读写

磁盘的管理

1、磁盘初始化(物理初始化)
划分扇区以便磁盘控制器能够进⾏读写操作,为每个扇区使用特殊的数据结构,填充磁盘
扇区一般由头部、数据区域(一般是512B)和尾部组成。头部尾部会包含一些磁盘控制器的使用信息
一般磁盘在工厂时就会完成低级初始化
2、分区
将磁盘分为由一个或多个柱面组成的分区(如C区,D区)
每个分区的起始扇区和大小都记在磁盘主引导记录的分区表中
然后进行逻辑格式化(创建文件系统),创建文件系统的根目录,对保存空闲磁盘块信息的数据结构进行初始化
3、引导块
(具有操作系统的磁盘)
4、坏块
DOS系统下会在FAT表上标明
低级格式化的时候会将一些块作为备用块

十三、磁盘调度算法

磁盘调度算法的⽬的:为了提⾼磁盘的访问性能,⼀般是通过优化磁盘的访问请求顺序来做到的
寻道的时间是磁盘访问最耗时的部分,如果请求顺序优化的得当,可以节省⼀些不必要的寻道时间,从⽽提⾼磁盘的访问性能
绝⼤数OS为改善磁盘访问时间,以簇(⼀组块)为单位进⾏空间划分

一次磁盘读写时间 = 寻道时间、旋转延迟时间和传输时间决定的

1、寻道时间,活动头磁盘在读写信息前,将磁头移动到指定磁道所需要的时间。
img
2、旋转延迟时间T,磁头定位到某一磁道的扇区所需要的时间
img

注意这里,很容易这样想: 计算到达每个扇区的时间再乘以速度: (1+2+...100)/100 * v
这样做是不对的,已经栽过跟头了

3、传输时间,从磁盘读出或向磁盘写入数据所经历的时间
img
这里读取速度是与转速有关的!

寻道调度算法

img
img

LOOK与C-LOOK是对SCAN、C-SCAN算法的改进,即磁头移动只需要到达最远端的一个请求即可返回,不需要到达磁盘端点。
img

img

需要注意,图中的描绘,SCAN算法与C-SCAN算法每次都需要走到底,而C-SCAN算法回来时也是回到磁盘的开始地方
而王道书P308上写了: 注意!若无特别说明,也可默认SCAN算法和C-SCAN算法为LOOK和CLOOL调度

减少寻道时间的算法

对盘面扇区交替编号,对磁盘片组的不同盘面错位命名
img

磁盘是连续自转设备,磁头读/写一个物理块后,需要经过短暂的处理时间才能开始读/写下一块。假设逻辑记录数据连续存放在磁盘空间中,若在盘面上按扇区交替编号连续存放,则连续读/写多条记录时能减少磁头的延迟时间;同柱面不同盘面的扇区若能错位编号,连续读/写相邻两个盘面的逻辑记录时也能减少磁头延迟时间。

十四、固态硬盘SSD

img
1、半导体存储器,与U盘一样,基于闪存技术,电可擦形ROM,EEPROM
2、由一个或多个闪存芯片和闪存翻译层组成
闪存翻译层实现了地址变化: 逻辑地址=>物理地址
3、SSD随机读写性能明显高于磁盘,优势主要体现在随机存取上
4、如上图,一个闪存由B块组成,每块由P页组成。通常,页的大小是512B4KB,每块由32128页组成,块的大小为16KB~512KB。
数据是以页为单位读写的。只有在一页所属的块整个被擦除后,才能写这一页。不过,一旦擦除一块,块中的每页就都可以直接再写一次。某块进行若干次重复写后,就会磨损坏,不能再使用。
SSD的页相当于磁盘的扇区,块相当于磁盘的磁道
5、随机写很慢,写操作试图修改包含已有数据的页P,那么这个块中所有含有用数据的页都必须被复制到一个新(擦除过的)块中,然后才能进行对页P的写操作。

十五、错题6.3

顺序访问按从前到后的顺序对数据进行读写操作,如磁带。随机访问,即直接访问,可以按任意的次序对数据进行读写操作,如光盘、磁盘、U盘等。(T2)

硬盘的操作系统引导扇区产生在对硬盘进行高级格式化时

T20

p313-T6

在计算磁盘读写时好多细节都没注意到!

十六、其他一些琐碎的知识点

一般来说,I/O设备是共享设备

因扇区的单位太小,为了提高效率,操作系统将多个相邻的扇区组合在一起,形成一簇(在Liux中称为块)。为了更高效地管理磁盘,一簇只能存放一个文件的内容,文件所占用的空间只能是簇的整数倍:如果文件大小小于一簇(甚至是0字节)。也要占用一簇的空间。

提高磁盘I/O速度的方法

1)提前读。在读磁盘当前块时,把下一磁盘块也读入内存缓冲区。
2)延迟写。仅在缓冲区首部设置延迟写标志,然后释放此缓冲区并将其链入空闲缓冲区链表的尾部,当其他进程申请到此缓冲区时,才真正把缓冲区信息写入磁盘块。
3)虚拟盘。是指用内存空间去仿真磁盘,又叫RAM盘。虚拟盘是一种易失性存储器。虚拟盘常用于存放临时文件。