一切的定义

一切的定义

例如,如果我使用命令 dd 清除 SD 卡的内容if=/dev/0 of=/dev/sdX,我猜这会完全擦除(设置为零)卡上的每个内容?分区、文件系统、数据等

现在我不明白的是,当我之后再次将此设备插入计算机(Linux 或 Windows)时,我能够再次写入它。如果所有内容都被擦除,操作系统如何知道这是什么类型的设备?

闪存有不同类型,我猜它们需要特定的驱动程序来根据类型写入它们,那么操作系统如何知道什么类型?

难道闪存中有一小部分没有被覆盖,其中包含解释它是什么类型的存储器的数据?

答案1

您的 SD 卡不仅仅是被动存储器,如 DVD(或 CD 或软盘)。 SD 卡包含一个控制器:

[ [ flash memory] <=> [ controller] ] <=> [ your computer]

有不同类型的闪存,我猜它们需要特定的驱动程序......

SD 卡内的控制器处理细节。这使得开发闪存具有不同细节的新卡成为可能,并且旧计算机/设备可以使用它们而无需任何修改。

也许最重要的是,这使得制造商更容易销售使用新技术的卡:-)。

写入全零/dev/sdX不会导致控制器自我破坏。就像将全零写入更传统的硬盘驱动器不会破坏硬盘驱动器内部的控制器一样。

答案2

对此有两个答案。

一切的定义

正如您所猜测的,并非所有内容都被删除。它就像一块干擦板:你可以把它擦干净,但板仍然存在。它仍然知道如何成为一块干擦板。该设备有一组固定的元数据,它将不会让你擦除。该数据可以读取,但不会与其他数据一起出现。例如,当您插入 USB 设备时,操作系统将查询各种信息:序列号、制造商编号、设备类型(键盘、指向、大容量存储、网络、集线器等)。一旦操作系统有了这个,它就可以加载特定的驱动程序,然后开始读取/写入存储的内容。

还可能有一个嵌入式 CPU(控制器)运行的程序。你没有办法看到这个,也绝对无法抹去它。

是否有许多不同的设备

设备类型的数量有限。 USB 定义了几种基本类型(HID:指针、键盘;大容量存储、网络、音频、视频……)。如果 USB 设备经过认证,则它必须使用这些预定义类型之一,因此将兼容(未认证的设备不能保证兼容,并且可能需要专有驱动程序)。

相关内容