Lý do nào để có tùy chọn sử dụng sức mạnh 1000 thay vì 1024 trong df?


7

Tôi tò mò về df -Hdf -hsau đó man dfnói với tôi:

   -h, --human-readable
          print sizes in human readable format (e.g., 1K 234M 2G)

   -H, --si
          likewise, but use powers of 1000 not 1024

Vì vậy, lý do đằng sau việc sử dụng quyền hạn của 1000 là gì?

Có thể một câu hỏi phụ (hoặc thậm chí liên quan):

root@host:~# df
Filesystem     1K-blocks      Used Available Use% Mounted on

Kkhối 1024 hay 1000?

Câu trả lời:


9

Tôi suy đoán rằng điều này là do các nhà sản xuất lưu trữ sử dụng tiền tố thập phân SI gần như phổ biến.

Hơn nữa trong trang web (giả sử GNU df):

   SIZE  is  an  integer and optional unit (example: 10M is 10*1024*1024).
   Units are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ...  (pow‐
   ers of 1000).

Vậy 1K là 1024.

Trong một công cụ GNU khác, cuộc thảo luận về lỗidd này cung cấp một số thông tin chi tiết:

Tôi nhớ lại việc xem xét điều này khi tôi thêm loại chẩn đoán này vào GNU dd vào năm 2004 và đi với các chữ viết tắt của 1000 vì các thiết bị lưu trữ thứ cấp thường được đo theo cách đó. Vì lý do này, tôi hy vọng nhiều người dùng sẽ thích quyền hạn 1000 ở đây. Điều này đặc biệt đúng với tốc độ chuyển nhượng: rất hiếm khi thấy "GiB / s" trong văn xuôi thế giới thực.

Cam kết đã thêm tính năng này dfvào năm 1997 chỉ nói lên điều gì chứ không phải tại sao.


wow bạn đá! Bạn thậm chí đã tìm thấy các cam kết. Cho tôi hỏi làm thế nào? Cảm ơn: D
CppLearner

4
Cách thông thường để xác định một cam kết gây ra một cái gì đó là chia đôi . Tôi bắt đầu từ năm 1997, đến năm 2005, rồi đến 2001, rồi 1999, rồi 1998, v.v.
muru

4

Nếu bạn quay trở lại 15-20 năm, toán học sức mạnh 2 là hợp lý, vì nó phù hợp với các khối lưu trữ như được đề cập trong các câu trả lời khác. Sau đó, chúng tôi gặp phải yếu tố quán tính trong đó 'chúng tôi luôn làm theo cách đó'. Và sự khác biệt nhỏ giữa ^ 2 và ^ 10 không bao giờ được thêm vào nhiều. Các nhà cung cấp phần mềm đã sử dụng ^ 2 để thuận tiện (và quán tính), các nhà sản xuất ổ đĩa đã sử dụng ^ 10 vì nó tạo ra số lượng lớn hơn trên hộp.

Khi các ổ đĩa đạt tới công suất hàng trăm gigabyte và sau đó là nhiều terabyte, sự khác biệt trở nên khá đáng kể và do đó đáng chú ý đối với người tiêu dùng trung bình. Chênh lệch 30 + Gb không thể được bỏ qua dưới dạng "phí hệ điều hành". Một vài dòng mã trong lập trình đã loại bỏ rất nhiều cuộc gọi đến bàn hỗ trợ. Có, df không được sử dụng bởi người dùng Mac trung bình hàng ngày nhưng nó (hoặc chức năng / thư viện / cơ sở mã) sẽ được sử dụng bởi chương trình UI cấp cao hơn.


Một câu trả lời tuyệt vời khác. cảm ơn đã giải thích
CppLearner

3

Nếu một phương tiện lưu trữ cụ thể sử dụng các đơn vị phân bổ, ví dụ 1024 byte, việc biết rằng một tệp mất 260K trên đĩa sẽ có nghĩa là nó đã lấy 260 đơn vị lưu trữ. Nếu thay vào đó, không gian được báo cáo là 260 nghìn, thì không rõ điều đó có nghĩa là 253 đơn vị lưu trữ (259.072, làm tròn lên 260) hay 254 đơn vị lưu trữ (260.096 byte). Việc tránh sự mơ hồ như vậy là một lập luận tốt ủng hộ việc sử dụng sức mạnh của hai đơn vị.

Tuy nhiên, do các nhà sản xuất ổ cứng bắt đầu sử dụng tiền tố thập phân thay vì tiền tố nhị phân và do kích thước của các đơn vị lưu trữ riêng lẻ là một phần không đáng kể trong dung lượng của ổ đĩa, tiền tố nhị phân không còn có lợi thế như trước đây.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.