Tôi đã đọc một cái gì đó tương tự như ngày hôm qua về OSX và nó đang nén hệ thống tập tin - Về cơ bản câu trả lời xoay quanh những gì bạn muốn nén - trong ví dụ này, anh ấy đang nói về dữ liệu "FAT"; cấu trúc tệp, thuộc tính, siêu dữ liệu, vv khi được lưu trữ cùng nhau có thể được nén để tiết kiệm dung lượng và được đọc vào cpu nhanh hơn là tìm kiếm đầu trên khắp mọi nơi để tìm dữ liệu cho mỗi tệp ...
Nhưng nén không chỉ là tiết kiệm dung lượng đĩa. Đây cũng là một ví dụ kinh điển về chu kỳ giao dịch CPU để giảm độ trễ và băng thông I / O. Trong vài thập kỷ qua, hiệu suất CPU đã trở nên tốt hơn (và tài nguyên điện toán dồi dào hơn về điều đó sau này) với tốc độ nhanh hơn nhiều so với hiệu suất đĩa đã tăng lên. Thời gian tìm kiếm đĩa cứng hiện đại và độ trễ quay vẫn được đo bằng mili giây. Trong một mili giây, CPU 2 GHz trải qua hai triệu chu kỳ. Và sau đó, tất nhiên, vẫn còn thời gian chuyển dữ liệu thực tế để xem xét.
Cấp, một số mức bộ nhớ đệm trên toàn hệ điều hành và phần cứng hoạt động mạnh mẽ để che giấu những sự chậm trễ này. Nhưng những bit đó phải ra khỏi đĩa vào một lúc nào đó để lấp đầy những bộ đệm đó. Nén có nghĩa là ít bit hơn phải được chuyển. Do tình trạng tài nguyên CPU gần như hài hước trên máy Mac đa lõi hiện đại trong sử dụng bình thường, tổng thời gian cần thiết để chuyển tải trọng nén từ đĩa và sử dụng CPU để giải nén nội dung của nó vào bộ nhớ thường sẽ ít hơn nhiều so với thời gian cần phải chuyển dữ liệu ở dạng không nén.
Điều đó giải thích các lợi ích hiệu suất tiềm năng của việc truyền ít dữ liệu hơn, nhưng việc sử dụng các thuộc tính mở rộng để lưu trữ nội dung tệp thực sự có thể làm mọi thứ nhanh hơn. Tất cả phải làm với địa phương dữ liệu.
Nếu có một thứ làm chậm đĩa cứng hơn là truyền một lượng lớn dữ liệu, thì nó sẽ di chuyển đầu của nó từ một phần của đĩa sang một phần khác. Mỗi lần di chuyển có nghĩa là thời gian để đầu bắt đầu di chuyển, sau đó dừng lại, sau đó đảm bảo rằng nó được đặt đúng vị trí trên vị trí mong muốn, sau đó đợi đĩa quay để đặt các bit mong muốn bên dưới nó. Đây đều là những bộ phận thực tế, vật lý, chuyển động, và thật đáng kinh ngạc khi họ thực hiện điệu nhảy của mình nhanh chóng và hiệu quả như họ, nhưng vật lý có giới hạn của nó. Những chuyển động này là những kẻ giết hiệu suất thực sự để lưu trữ quay như đĩa cứng.
Định dạng âm lượng HFS + lưu trữ tất cả thông tin của nó về các tệp siêu dữ liệu của siêu dữ liệu ở hai vị trí chính trên đĩa: Tệp Danh mục, lưu trữ ngày, quyền, quyền sở hữu và một loạt các thứ khác và Tệp thuộc tính, lưu trữ "các nhánh . "
Các thuộc tính mở rộng trong HFS + được triển khai như các nhánh được đặt tên trong Tệp thuộc tính. Nhưng không giống như các nhánh tài nguyên, có thể rất lớn (tối đa kích thước tệp tối đa được hệ thống tệp hỗ trợ), các thuộc tính mở rộng trong HFS + được lưu trữ "nội tuyến" trong Tệp thuộc tính. Trong thực tế, điều này có nghĩa là giới hạn khoảng 128 byte cho mỗi thuộc tính. Nhưng điều đó cũng có nghĩa là đầu đĩa không cần phải đi đến một phần khác của đĩa để lấy dữ liệu thực tế.
Như bạn có thể tưởng tượng, các khối đĩa tạo nên các tệp Danh mục và Thuộc tính thường được truy cập, và do đó nhiều khả năng hơn là nằm trong bộ đệm ở đâu đó. Tất cả những âm mưu này để làm cho việc lưu trữ hoàn toàn một tệp, bao gồm cả siêu dữ liệu của nó trong dữ liệu của nó, trong Danh mục cấu trúc cây B và các tệp Thuộc tính giành được hiệu suất tổng thể. Ngay cả một tải trọng tám byte có độ bóng đến 25 byte cũng không phải là vấn đề đáng lo ngại, miễn là nó vẫn nhỏ hơn kích thước khối phân bổ để lưu trữ dữ liệu thông thường và miễn là tất cả phù hợp với nút cây B trong Tệp thuộc tính Hệ điều hành phải đọc toàn bộ bằng mọi cách.
Có những đóng góp đáng kể khác cho dấu chân đĩa giảm của Snow Leopard (ví dụ: loại bỏ các bản địa hóa không cần thiết và các tệp "designable.nib") nhưng cho đến nay, nén HFS + là điều thú vị nhất về mặt kỹ thuật.