一、IO控制方式
1、可编程IO(轮询/查询):由CPU代表进程给设备IO模块发送IO命令,进程进入忙等待,直到操作完成才继续执行。
2、中断驱动IO,减少了设备驱动程序不断询问控制器状态寄存器的开销,当IO操作结束后,有设备控制器主动通知设备驱动程序。
3、DMA,direct memory access
二、轮询的流程
1、应用进程上CPU,并通过CPU向设备驱动程序发送IO命令,如读或写
2、设备驱动程序读取设备控制器的状态寄存器
3、设备控制器上的状态寄存器显示设备没有问题可进行该操作后,设备驱动程序通过设备控制器上的控制寄存器进行相应的控制命令,就是进程的IO命令对应的控制命令
4、在设备控制器调用控制命令的过程中,设备驱动程序会进入忙等待,不断查询设备控制器的状态,直到状态为完成了相关操作
5、当设备驱动程序查询到完成的状态后,将包含结果的数据寄存器中的数据通过设备驱动传递至进程。
三、中断驱动的流程
1、应用进程上CPU并向设备驱动发送IO控制命令
2、设备驱动检查设备控制器的状态寄存器
3、状态允许的条件下设备驱动向设备控制器的控制寄存器执行控制命令
4、设备驱动向控制寄存器发送了命令后,将该命令的状态存放在设备状态表中,此时,CPU可以去做别的事情,而不是忙等待
5、设备完成控制命令以后,状态寄存器会给CPU发送中断,
6、CPU接受中断以后通过中断处理程序将控制命令的结果提交给设备处理程序
7、设备处理程序从设备状态表中查询到这是哪个请求的结果
8、将数据提交给应用进程,该进程继续执行
四、设备IO部件的演化
一、IO软件以分层思想设计
1、把IO软件组织成多个层次
2、每一层都执行操作系统需要的功能的一个相关子集,依赖于下层的更加原始的功能以屏蔽下层的细节,同时向上层提供服务。
3、较低层考虑硬件的特性,并向高层软件提供接口
4、较高层不依赖于硬件,并向用户提供一个友好清晰,简单,功能强大的接口
二、IO的软件层次
三、设备独立性(设备无关性)
1、用户编写的程序可以访问任意IO设备,无需事先指定设备
2、用户角度讲,用户在编写程序时,使用逻辑设备名,并有系统实现从逻辑设备到物理设备的转换,并实施IO操作
3、系统角度将,设计并实现IO软件时,除了直接与设备打交道的底层软件,其他部分的软件不依赖于硬件。
一、缓冲技术
1、缓冲技术是操作系统中最早引入的技术,用于解决CPU和IO设备之间速度的不匹配问题,也可以用在任何数据到达和离去二者动作速度不匹配的地方。
2、缓冲技术提高了CPU和IO设备间的并行性,缓冲区并非是提高了慢速的一方或减缓了高速的一方,而是减少了IO设备对CPU的中断请求次数,放款了CPU对中断响应时间的要求。
3、缓冲区分两类:
3.1、硬缓冲:由硬件寄存器实现,如设备中设置的缓冲区。
3.2、软缓冲:在内存中开辟一个空间,用作缓冲区。
4、缓冲区的管理
4.1、单缓冲:一个缓冲区
4.2、双缓冲:两个缓冲区轮换
4.3、缓冲池(多缓冲或循环缓冲):统一管理多个缓冲区,采用有界缓冲区的生产者/消费者模型对缓冲池中的缓冲区进行循环使用