不同之处在于一次读取/写入的数据量。
程序很少使用真正的常量流——它们通常分块读取和写入数据:从输入读取 1 kB,将 1 kB 写入输出,从输入读取 1 kB,写入...所以dd的bs=(块大小)参数告诉它一次读取多少数据。要求操作系统从磁盘读取一个 2 MB 的片段通常比读取 16 个 128 kB 的片段更有效。(部分是因为操作系统需要做的工作更少。)另一方面,如果您尝试使用,那么它会尝试将 16 GB 大小的块读入 RAM,然后立即将其写出;您可能会耗尽 RAM。bs=16G
它还取决于存储介质。磁盘不是流,也不是字节寻址,无论是磁性的还是基于闪存的——它们只允许读取块大小的块(块大小取决于硬件;许多磁盘将其设为 512 字节或 4 kB)。如果操作系统尝试读取 100 个字节,磁盘无论如何都必须读取整个块,然后丢弃数据。(写入时更糟:不确定使用磁盘,但至少使用闪存,如果写入 100 字节,磁盘必须读取整个块,在内存中更新它,然后写入。)所以使用的块大小很dd重要这里也是 - 如果使用的块大小会快得多dd是磁盘块大小的精确倍数。(假设分区对齐没有任何问题,那就是。)
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |