(Một chút muộn để trả lời ...)
Làm thế nào một tập tin có thể có kích thước bằng 0 phức tạp hơn một chút so với các câu trả lời ở trên. Câu hỏi được gắn thẻ Win7, nhưng nhìn vào các hệ thống tệp "đơn giản" khác như FAT hoặc NTFS , có thể hữu ích vì các khái niệm tương tự nhau.
Đĩa không "biết" tập tin là gì và thư mục là gì; đó là tất cả dữ liệu trong các khối nhỏ. HĐH phân biệt giữa ý nghĩa của các khối dữ liệu. Một số đầu tiên đặc biệt, nhưng các khối còn lại chứa thông tin về dữ liệu (ví dụ: tên tệp, độ dài tệp, khối dữ liệu đầu tiên giữ dữ liệu) hoặc chính dữ liệu.
Thư mục là một "tệp" đặc biệt có "dữ liệu" mà HĐH hiểu là khối thông tin chứa thông tin về tệp chứ không phải nội dung của tệp. Một tương tự tốt là một thư viện vật lý và danh mục thẻ. Hãy nghĩ về các khối thông tin là danh mục thẻ và các kệ như các khối dữ liệu (danh mục thẻ cũng nằm trên một cấu trúc giống như kệ).
Khi bạn "tạo" một tệp (nói bằng touch
lệnh UNIX ), trước tiên HĐH sẽ tạo một mục trong một khối thông tin (thư mục), với thông tin sau:
- Tên = My_File.txt
- Độ dài = 0
- Khối dữ liệu bắt đầu = Không áp dụng
- Thông tin bổ sung (chủ sở hữu, quyền, ngày tạo / cập nhật / sửa đổi), v.v.
Chỉ khi có một số dữ liệu để "ghi" thì nó mới cố gắng tìm một khối dữ liệu trống để lưu trữ dữ liệu. Nhưng các khối dữ liệu có kích thước cố định (giả sử là 32K) để đĩa có thể đến và hệ điều hành để đọc. Nếu bạn chỉ viết "Xin chào", hầu hết các khối là "trống" (thực tế có thể không phải là số không, nhưng rác từ những gì đã có trước đó), do đó, bảng cũng cập nhật kích thước theo chiều dài (giả sử 5 ký tự + Kết thúc Tập tin) để bạn không nhận được những thứ xấu.
Khi bạn cập nhật "tệp" thành kích thước khối> chiều dài, HĐH sẽ ghi dữ liệu vào khối mới và cập nhật khối dữ liệu để nói rằng tệp tiếp tục vào khối tiếp theo SAU lần đầu tiên (v.v.) và độ dài được cập nhật chiều dài mới (chi tiết khác nhau).
Những gì bạn kết thúc là một tập hợp các khối dữ liệu thông tin (thư mục hoặc danh sách) với thông tin về chuỗi khối dữ liệu (nội dung tệp).
Về mặt logic, điều này cũng giải thích tại sao một tệp di chuyển trên cùng một hệ thống tệp đang nhấp nháy nhanh trong khi một bản sao mất nhiều thời gian. HĐH chỉ phải chỉnh sửa 2 khối thư mục để xóa mục nhập khỏi một thư mục (khối dữ liệu thông tin) và thêm vào một thư mục khác. Xóa một tệp: chỉ cần xóa mục trong khối thư mục, giải phóng các khối dữ liệu tệp sẽ được phân bổ lại.
ps: Chỉ vì danh mục thẻ có mục cho một cuốn sách không có nghĩa là nó ở trên kệ (có thể đã được kiểm tra hoặc bị mất); kích thước tệp 0.
pps: Một cuốn sách bị thất lạc trong thư viện ngụ ý thư viện tìm kiếm, hoặc trong thuật ngữ máy tính: chkdsk hoặc đĩa sửa chữa!
Một sự hiểu biết lớn hơn có thể được lượm lặt bằng cách đọc về các nút UNIX hoặc đánh giá cao cách các hệ thống kiểm soát phiên bản (ClearCase, TFS, Git, v.v.) quản lý không chỉ các tệp và thư mục, mà cả các phiên bản của tệp và thậm chí các phiên bản của thư mục. Trong hầu hết các trường hợp, mọi thứ được lưu trữ trong cơ sở dữ liệu và được trình bày cho người dùng để xuất hiện dưới dạng tệp và cấu trúc thư mục cổ điển!