Hi~朋友,关注置顶防止错过消息
摘要
设备控制器
为什么需要设备控制器?
电脑可以外接很多设备,如键盘、鼠标、硬盘、显示器、网卡等,每个设备的用法和功能不同,操作系统为了对这些输入输出设备进行统一管理,必须要屏蔽设备之间的差异,因此需要设备控制器。
设备控制器的特点?
设备控制器中寄存器的作用?
设备控制器中寄存器的种类有哪些?
输入输出设备大体分为哪几类?
设备控制器中数据缓冲区的作用?
块设备传输的数据量往往比较大,为了减少对设备的频繁操作,需要借助数据缓冲区:
CPU和设备控制器的通信方式有哪几种?
IO控制方式
设备控制器读取完数据后,如何通知CPU?
CPU自己轮询的缺点?
CPU需要一直查询控制器中寄存器的状态,直到寄存器的状态变为已完成,这种方式会占用大量的CPU时间
中断的缺点?
中断虽然能解决轮询的缺点,但对于频繁读写磁盘并不友好,因为这样CPU会经常性被打断,占用了大量的CPU时间。
什么是DMA?
DMA可以使得设备在CPU不参与的情况下,能够自行将IO数据放入内存,实现DMA必须要有DMA控制器硬件的支持。
DMA控制器的工作方式?
设备驱动程序
为什么需要设备驱动程序?
设备控制器虽然屏蔽了设备的细节,但每种设备控制器的寄存器、缓冲区等的使用模式不同,因此引入了设备驱动程序屏蔽设备控制器的差异。
设备控制器属于硬件范畴,但设备驱动程序属于操作系统的一部分。操作系统的内核代码可以像本地调用一样使用驱动程序的接口。
驱动程序处理中断
设备控制器在完成任务以后,会发出中断信号,此时CPU收到中断指令以后,往往会对中断进行响应,而响应的处理函数往往在驱动程序中,因此驱动程序初始化的时候,要先注册一个该设备的中断处理函数。
中断处理流程
存储系统IO分层
Linux的存储系统的IO由上到下可以分为三个层次,分别是: