个人用书:操作系统教程 第五版 费翔林
学习视频: 王道计算机考研 操作系统.
I/O代表输入输出。
I/O设备就是可以将数据输入到计算机,或者接收数据的外部设备。(鼠标,键盘,显示器,u盘)
UNIX系统把外部设备抽象为文件,用户可以使用与文件操作相同的方式操作外部设备。eg:显示器read 键盘write
CPU无法直接控制机械部件,因此需要一个 电子部件 作为中介。这个电子部件就是 i/o控制器 又叫 设备控制器。
i/o控制器的功能:
几个细节:
内存映像:控制器中的寄存器与内存地址统一编址
寄存器独立编址:控制器中的寄存器单独编址。这个时候需要专门的指令实现对控制器的操作,需要指明寄存器编址和设备的编号。
注意以下:
###程序直接控制方式
Key word:轮询
流程:
CPU干预的频率:很频繁,从I/O开始到完成CPU要一直轮询检查
数据传输每次一个字
数据流向:
读:I/O设备——CPU——内存
写:内存——CPU——I/O设备
优点:实现简单
缺点:只能CPU和io设备只能串行工作
相比于 程序直接控制方式 ,增加了中断机制。在CPU发出命令后,让I/O进程阻塞,等到I/O完成后控制器发出中断信号,CPU开始I/O进程的运行。
CPU干预:低了很多,在开始和完成后介入
数据流向:
读:I/O设备——CPU——内存
写:内存——CPU——I/O设备
优点:CPU和I/O可以并行操作,CPU利用率提升
缺点:数据传输必须经过CPU,频繁的中断处理会消耗较多的CPU时间
与中断驱动相比有以下改进:
DMA控制器:由 主机控制器接口,I/O逻辑,块设备-控制器接口。
CPU干预:很少
数据传送单位:块
数据流向:
读:I/O设备——内存
写:内存——I/O设备
优点:CPU介入频率进一步降低,数据以块为单位
缺点:CPU每发出一条指令,只能读取一个或多个连续块
通道:一种硬件,弱鸡版的CPU。通道可以识别一系列通道指令。
与CPU相比,通道执行的指令单一,通道放在主机内存中,与CPU共享内存。
流程:
CPU干预频率:很低
数据传送单位:块
数据流向:
读:I/O设备——内存
写:内存——I/O设备
优点:CPU,通道,I/O设备并行
缺点:实现复杂,需要专门的通道硬件支持
越上的层次越接近用户,某层会利用其下层提供的服务,实现某些功能屏蔽细节。
实现了与用户交互的接口,用户可以直接使用该层提供的,与i/o操作相关的库函数对设备进行操作
用户层软件将用户请求翻译成格式化的I/O请求,并通过系统调用请求OS服务
设备独立性软件:又称设备无关性软件。
主要实现的功能:
主要负责对硬件设备的具体控制,将上层发出的一系列命令转换成特定设备的一系列操作。
当I/O任务完成时,I/O控制器会发出一个中断信号,系统根据中断信号类型找到相应的中断处理程序并执。
设备独立性软件+设备驱动程序+中断处理程序
属于OS的内核部分,称为I/O核心子系统。需要提供的功能:
以上都有讲过
脱机技术:脱离主机的控制进行的I/O操作
引入了脱机技术后,缓解了CPU与慢速I/O设备的速度矛盾。即使CPU忙碌,也可以将数据输入到磁带。
假脱机技术,也称SPOOLing技术,用软件的方式模拟脱机技术。
输入缓冲区 和 输出缓冲区 是在内存中的缓冲区。
当多个用户提出输出打印的要求,系统会答应请求,但是不是真的分配打印机。脱机管理程序会做两件事:
虽然只有一个打印机,但是每个进程提出请求,系统都会分配存储器,使每个进程都觉得自己使用了打印机。