USB存储驱动程序如何在Linux中工作?

头:

我正在尝试从总体上概述USB存储驱动程序在Linux中的工作方式。我正在寻找简单的文章,甚至是描述其工作原理的图片/流程图。

基本上,我希望这些问题得到解答:

将设备插入计算机时,会发生什么?是否有守护程序启动该事件,或者该事件在某处触发了中断?在将控制权移交给USB存储驱动程序之前,核心USB驱动程序是否读取了有关设备的信息?如何确定设备的类型?设备如何安装,以及如何与计算机的文件系统通信?复制文件时,内核中的数据流是什么样的?

我希望这个问题不要太含糊-我试过Google都没有用,所以我想知道是否有人知道任何可以解释这一点的文章或图表,或者他们是否可以自己付出过多的努力来解释它。谢谢。

peterh-恢复莫妮卡:

不,这是一个很好的问题。

在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Linux系统中插入USB鼠标时自动插入驱动程序?

Linux内核中的USB鼠标使用哪些驱动程序?

如何在Linux UVC驱动程序中启用UVC_QUIRK_FIX_BANDWIDTH怪癖?

如何在Linux设备驱动程序中设置errno?

如何实现鼠标驱动程序Linux USB鼠标驱动程序?

如何在Linux驱动程序模块中暂停100毫秒以上?

如何在Spark中设置驱动程序的python版本?

如何在硒中设置firefoxdriver的驱动程序路径

如何在QAF框架中查找驱动程序实例

如何在PC驱动程序的练习中更改工作区?

linux驱动程序更新如何工作?

如何在Ubuntu 10.04中使用Ubuntu 12.04为无线USB适配器安装其驱动程序?

Linux中如何安装外围硬件的驱动程序?

JDBC驱动程序实现如何工作?

USB驱动程序在Windows 8中停止工作

如何在Lubuntu中安装Intel驱动程序

Linux驱动程序如何工作?在哪里可以找到它们?(特别是NIC驱动程序)

如何在Windows 8.1中阻止某些驱动程序

Linux上USB3外部存储的连接问题(UAS驱动程序问题)

Razer USB耳机Linux驱动程序

如何在离线安装中安装AMD驱动程序

如何在使用中更改驱动程序Linux

我如何使USB 3.0驱动程序正常工作或检查它是否已经正常工作

如何在FreeBSD中编译驱动程序

如何在Linux内核的暂存树中编译所有驱动程序?

本机驱动程序如何工作?

如何在Rust中称呼“ ioctl”?并连接Linux“ tun”驱动程序

如何在 Cassandra c# 驱动程序中存储分页状态?

如何在 Linux 驱动程序中列出 MMC 分区?