第六章 输入输出系统(三)——设备驱动程序+与设备无关的I/O软件

设备驱动程序是I/O系统的高层与设备控制器之间的通信程序,其主要任务:
1.接收上层软件发来的抽象I/O要求,如read、write等命令;
2.再把它转化为具体要求,发送给设备控制器,启动设备去执行。
3.反方向,它也将由设备控制器发来的信号,传送给上层软件。

I/O控制方式:
程序I/O方式
中断驱动I/O方式
直接存储器访问方式【DMA】
I/O通道控制方式
宗旨:减少主机对I/O控制的干预,将CPU从繁杂的I/O控制事物中解脱出来。

直接存储器访问方式【DMA】
特点:
1.数据传输的基本单位是数据块;
2.所传送的数据是从设备直接送入内存的,或者直接从内存进设备;不需要CPU操作。
3.CPU干预进一步减少:仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。可见DMA方式又是成百倍的减少了CPU对I/O的干预,进一步提高了CPU与I/O设备的并行操作程度。

DMA控制器由三部分组成:
1.主机与DMA控制器的接口;
2.DMA控制器与块设备的接口;
3.I/O控制逻辑。

DMA的工作过程:【附图】
1.CPU先向磁盘控制器发送一条读命令。
2.该命令被送到命令寄存器CR中。
3.同时发送数据读入到内存的起始地址,该地址被送入MAR中;
4.要读数据的字数则送入数据计数器DC中;
5.将磁盘中的数据原地址直接送入DMA控制器的I/O控制逻辑上,按设备状态启动磁头到相应位置。
6.启动DMA控制器控制逻辑开始进行数据传送,DMA控制器读入一个数据到数据寄存器DR中,然后传到内存MAR地址中;接着MAR+1,DC-1,判断DC是否为0,如否,继续,反之控制器发中断请求,传送完毕。
在这里插入图片描述
I/O通道的控制方式:
DMA适用于读一个连续的数据块;
如一次读多个数据块到内存不同区域,须由CPU分别发送多条I/O指令、进行多次DMA中断处理。
再进一步减少CPU的干预(减少中断), 引入通道。
实现对一组数据块的读(写)及有关的控制和管理为单位的干预。
此时,CPU只需发一条I/O指令,给出通道程序的首地址及要访问设备即可。

  • CPU、通道和I/O设备三者的并行操作,提高整系统资源利用率。

与设备无关的I/O软件

好处:设备分配时的灵活性;易于实现I/O重定向

多道环境下,系统中设备是所有进程共享的。要防止无序竞争,提高外设资源的利用率。需由OS进行统一、合理的设备分配。
1)数据结构
记录相应设备或控制器的状态,及对设备或控制器进行控制所需的信息。所需数据结构:
设备控制表
在这里插入图片描述
控制器控制表
通道控制表
系统设备(总)表
在这里插入图片描述
IO请求中的
设备名——> SDT——> DCT——>COCT——>CHCT

2)设备分配需考虑的因素
设备固有属性:独占、共享、独占但可虚拟。根据属性采取互斥、次序调度、虚拟等不同分配策略。
设备分配算法(对不同进程的设备请求序列,如何进行选择),常采用两种:
• FCFS
• 优先级高者优先
设备分配的安全性:进程开始I/O后就阻塞直到I/O完成。不“请求和保持”(安全的);允许连续I/O请求,是不安全的,此类分配方式需进行安全性检查。
设备独立性:用户IO请求中使用逻辑名申请某类设备,实际物理名称是系统根据设备类型分析分配后才确定的。

3)设备的分配过程

猜你喜欢

转载自blog.csdn.net/weixin_42361042/article/details/84475567