我正在尝试从总体上概述USB存储驱动程序在Linux中的工作方式。我正在寻找简单的文章,甚至是描述其工作原理的图片/流程图。
基本上,我希望这些问题得到解答:
将设备插入计算机时,会发生什么?是否有守护程序启动该事件,或者该事件在某处触发了中断?在将控制权移交给USB存储驱动程序之前,核心USB驱动程序是否读取了有关设备的信息?如何确定设备的类型?设备如何安装,以及如何与计算机的文件系统通信?复制文件时,内核中的数据流是什么样的?
我希望这个问题不要太含糊-我试过Google都没有用,所以我想知道是否有人知道任何可以解释这一点的文章或图表,或者他们是否可以自己付出过多的努力来解释它。谢谢。
不,这是一个很好的问题。
在Linux中使用块设备层进行块写入。文件系统正在使用此块开发层。
如果该层要写出一些内容,请告诉USB主设备的驱动程序。该驱动程序正在与主板的USB控制器芯片通信。
该芯片非常简单:usb实际上是一个串行端口,具有许多扩展,主要针对自动配置和电源管理。但基本上,您可以写出字节,然后读入字节。
你的问题:
将设备插入计算机时,会发生什么?是否有守护程序启动该事件,或者该事件在某处触发了中断?
设备(USB从设备)说主设备(在主板上):“我在这里”。USB控制器芯片获取该消息,并通过中断将其告知内核(通常)。内核将重新初始化并重新扫描USB总线,并说出udev:“这是USB树1.3.5上的一个新的1234:5678 USB设备”
“它如何决定它是哪种类型的设备?”
USB设备具有供应商和型号ID,可以询问。Google的“ usb ID”。
“设备是如何安装的,是什么允许它与计算机的文件系统通信?”
内核仅加载驱动程序,并说出udev(位于用户空间中):“这里是22:16设备上的新块设备”。由此,udev尝试使用某个用户空间守护程序来挂载它,它已经与发行版有关。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句