Operating system (9) I/O system management

1. External devices are divided into storage devices and I/O devices. Device management usually uses a variety of techniques such as I/O interrupts, buffer management, channels, and device driver scheduling. The operating system defines all devices as files, unifies them under the file system, and assigns file attributes. The operation of the device is similar to the operation of the file. Therefore, the device management functions are:

Device interrupt handling, buffer management, device allocation and de-allocation, device driver scheduling, virtual devices and their implementation.

2. I/O devices and their interface lines, control components, channels and management software are usually called I/O systems, and the information transfer between the computer's main memory and the device medium is called I/O operations.

The so-called block is an area composed of continuous information on the storage medium, and the block device exchanges one or more block information with the main memory each time.

There are great differences in the physical characteristics of different devices, which are mainly reflected in: the data transmission rate is particularly large, the data representation and transmission units are different, and the nature of errors, error reporting methods and countermeasures are different.

3. I/O control mode: The difference lies in the way and degree of parallel work between the CPU and the device.

1) Polling method:

Use the query command to test the busy-idle status bits of the device controller to determine whether main memory and the device can exchange data.

The polling method uses 3 instructions:

Query command: Query whether the device is ready.

Read and write commands: When the device is ready, perform data exchange.

Transfer instruction: When the device is not ready, execute the transfer instruction and turn to the inquiry instruction to continue the inquiry.

2) Interrupt method:

It is required that there is an interrupt request line between the CPU, the device controller and the device, and the status register of the device controller has a corresponding interrupt enable bit.

3) DMA (Direct Memory Access) method:

There is a data path between the main memory and the device, and the data is transferred in blocks without CPU intervention, and the actual data transfer operation is directly completed by DMA. In order to implement a direct memory access operation, some logic components are required:

-----Main memory address register: Store the address of the data to be exchanged in the main memory. Before the DMA transfer, the program sends the first address; during the DMA transfer process, the content of the address register is incremented by 1 each time the data is exchanged.

-----Word counter: record the total number of words of transmitted data, and add 1 every time a word is transmitted.

-----Data buffer register or data buffer: temporarily store the data transmitted each time.

----- Device address register: The address that stores I/O information, such as the cylinder number, track number, and block number of the disk.

-----中断机制和逻辑控制:用于向CPU提出I/O中断请求,及保存CPU发来的I/O命令,管理DMA的传送过程。

4)通道方式:

通道又称I/O处理器,能完成主存储器和设备之间的信息传送,与CPU并行地执行操作。一个CPU可以连接若干通道,一个通道可以连接若干控制器,一个控制器可以连接若干台设备。CPU通过执行I/O指令对通道实施控制,通道通过执行通道命令对控制器实施控制,控制器发出动作序列对设备实施控制,设备执行相应的I/O操作。

4、设备控制器:

是CPU和设备之间的接口。是可编址设备,当它连接多台设备时,应具有多个设备地址。组成部分有:

控制寄存器及译码器,数据缓冲寄存器,状态寄存器,地址译码器,用于对设备操作进行控制的I/O逻辑。

设备控制器的主要功能:

1)接收和识别CPU或通道所发来的命令,如磁盘控制器能接收读、写、查找等各种命令。

2)实现数据交换,包括设备和控制器之间的数据传输,且通过数据总线或通道,控制器和主存储器之间传输数据。

3)发现和记录设备及自身的状态信息,供CPU处理使用。

4)设备地址识别。

5、I/O软件设计目标是高效率和通用性。需考虑因素有:设备无关性。出错处理。同步/异步传输。缓冲技术。

操作系统把I/O软件分为4个层次:

1)I/O中断处理程序:当进程请求I/O操作时,通常将被挂起,直到数据传输结束并产生I/O中断时,操作系统接管CPU后转向中断处理程序执行。

2)I/O设备驱动程序:功能是从独立于设备的软件中接收并执行I/O请求。一般包括三部分:设备初始化;执行设备驱动例程;执行中断处理例程。

3)独立于设备的I/O软件:设备被看成文件,与磁盘文件一样,通过路径名来寻址,每个设备具有文件名、inode、文件所有者、权限位等属性。用户进程对I/O设备的直接访问是绝对禁止的,I/O指令定义为特权指令,通过系统调用的方式间接地供用户使用。设备文件依赖于inode来实现。

4)用户空间的I/O软件:有一部分是与应用程序链接在一起的库函数。I/O数据的格式处理常常由库函数实现,如printf。

6、总结:I/O软件的层次及其主要功能:

用户进程:I/O系统调用;I/O格式化;SPOOLing。

独立于设备的软件:命名;保护;阻塞;缓冲;分配;跟踪。

设备驱动程序:设备寄存器置初值;启动I/O操作;检查状态。

中断处理程序:处理I/O中断;报告错误;唤醒驱动程序。

硬件:执行I/O操作。

7、通道命令和通道程序:

通道命令字为双字长,组成有命令码、数据主存地址、标识码、传送字节个数。

通道方式执行I/O操作时,要使用主存储器的两个固定存储单元:通道地址字CAW和通道状态字CSW、编写好的通道程序存放在主存储器中。

8、缓冲技术:

缓冲用于平滑两种不同速度的硬部件或设备之间的信息传输,在主存储器中开辟一个存储区,称为缓冲区,专门用于临时存放I/O操作的数据。方式有:单缓冲;双缓冲;多缓冲。

缓冲区自动管理系统:

从主存中分配一块区域,组成循环缓冲区,缓冲区的大小等于物理记录的大小,用途分为输入缓冲区、处理缓冲区和输出缓冲区。

为了减少访问磁盘的次数,避免数据项的重复产生,内核建立一个数据缓冲区高速缓存,专门用于保存最近使用过的磁盘数据块。每个缓冲区链表都有一个缓冲控制块,包含如下信息:

逻辑设备号,盘块号,高速缓存虚拟地址,数据所属文件的文件描述符,数据在文件内的位移,缓冲区链接指针,空闲表缓冲区指针,活动计数(有多少读写操作在访问此块),状态字等。

9、驱动调度:

按最佳次序执行要求访问的诸多请求。能减少为若干I/O请求服务所需消耗的总时间,从而提高系统效率。

I/O请求需要3个参数:柱面号,磁道号和物理块号。移动臂调度算法有:

1)先来先服务算法。2)电梯调度算法。3)最短查找时间优先算法。4)扫描算法。5)分布扫描算法。6)循环扫描算法。

独立磁盘冗余阵列RAID:通过在不同的磁盘上维护冗余数据来增加容错性;通过把数据分布到多个磁盘,采用并行存取以加快数据传输速率来获得高性能。

提高磁盘I/O速度的方法:提前读;延迟写;虚拟盘。

10、设备分配:

逻辑设备名是用户命名(号)的,是可更改的,物理设备(号)是系统设定的,不可更改。逻辑设备与物理设备之间的转换通常由系统命令或语言来实现。

从物理特性看,分为独占型设备、共享设备和虚拟设备,相应的技术分配为静态分配、动态分配和虚拟分配。

系统建立设备分配数据结构:设备类表和设备表。每类设备都有各自的设备表,用来登记这类设备中的每一台物理设备,所包含的内容有:物理设备名(号)、逻辑设备名(号)、占用设备的进程号、已分配/未分配、好/坏标志等。

11、预输入:操作系统将一批作业从输入设备上预先输入至磁盘的输入缓冲区中暂存。

缓输出:作业执行过程中不必直接启动输出设备,只要将作业的输出数据暂时保存到磁盘的输出缓冲区,当作业执行完毕后,由操作系统组织信息成批输出。

12、I/O系统在用户态I/O库函数和物理I/O硬件之间存在多层系统组件,包括文件系统驱动程序、高速缓存管理器、过滤器启动程序、低层网络和网络驱动程序。

有4种主要的数据结构代表I/O请求:

1)文件对象:提供基于主存储器的共享物理资源的表示。当调用者打开文件或设备时,I/O管理器将为文件对象返回句柄,调用者使用文件句柄对文件进行操作。文件对象由包含访问控制表(ACL)的安全描述符保护。当使用共享资源时,线程必须保证它对共享文件、文件目录或设备访问的同步。

2)驱动程序对象和设备对象:当线程为文件对象打开句柄时,I/O管理器必须根据文件对象的名称来决定调用哪个或哪些驱动程序来处理请求。驱动程序对象代表系统中一个独立的驱动程序,设备对象在系统中代表物理的、逻辑的或虚拟的设备并描述其特征。

3)I/O请求包IRP:用来存储处理I/O请求所需信息的数据结构,由两部分组成:固定部分(标题)和一个或多个堆栈单元。

13、驱动程序的分类:

1)核心模式驱动程序:包括文件系统驱动程序,即插即用管理驱动程序,电源管理驱动程序,图形驱动程序,总线驱动程序,功能驱动程序,过滤操作驱动程序。

2)用户模式驱动程序:包括虚拟设备驱动程序和Win32打印驱动程序。

3)硬件支持驱动程序:类驱动程序,端口驱动程序,小端口驱动程序。

注意:驱动程序包括一组处理I/O请求的不同阶段的例程,主要有初始化例程、功能例程、启动I/O例程、中断服务例程、延迟过程调用例程、完成例程、取消例程、卸载例程、系统关闭通知例程和错误记录例程。

14、多处理器的I/O同步问题:

驱动程序必须同步执行对全局驱动程序数据的访问。因为驱动程序的执行可被高优先级的线程抢先,或时间片到时而被中断,或被其他中断而中断。可以通过“自旋锁”来防止其他CPU对共享数据结构的访问。

15、I/O类型和处理:

1)同步/异步I/O。2)快速I/O。映射文件I/O和文件高速缓存。4)“分散/集中”I/O。

Windows对核心态设备驱动程序的I/O请求的处理步骤:

1)I/O库函数经过语言的运行时库转换成对子系统DLL的调用。

2)子系统DLL调用I/O系统服务。

3)I/O系统服务调用对象管理程序,检查给定的文件名,再搜索名空间,把控制权转交给I/O管理器寻找文件对象。

4)驱动程序询问安全子系统,确定线程的存取权限。如果不允许,就出错返回;否则,由对象管理器把所允许的存取权限和返回的文件句柄连在一起,返回用户态线程,之后线程用文件句柄对文件实施操作。

5)I/O管理器以IRP的形式将I/O请求传送给设备驱动程序,驱动程序启动I/O操作。

6)设备完成指定的操作,请求I/O中断,设备驱动程序的中断服务例程服务于中断。

7)I/O管理器调用I/O完成例程,将完成状态返回给调用线程。

16、设备和CPU之间的数据传输控制方式主要有4种:程序轮询方式,中断控制方式,DMA方式,通道方式。DMA方式要求CPU执行设备驱动程序来启动设备,并做好传输数据的相关准备工作。通道方式则完全是一个相对独立的I/O控制系统,当CPU发出I/O启动命令后,它便接收控制权,完成全部的I/O操作。


Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325529007&siteId=291194637