Các giải pháp đúng được đưa ra bởi @FullDecent trong các ý kiến để câu trả lời khác (ông xứng đáng tiền thưởng của bạn). Để xây dựng:
Giả sử rằng các ổ đĩa trong câu hỏi là trong những cũ, loại thông thường, với một bề mặt lưu trữ quay và đọc/ghi đầu rằng chất di chuyển xuyên tâm trên bề mặt ...
Nói chung nó là tốt cho các tập tin được lưu trữ như liên tục trên đĩa càng tốt, do đó nhiều khối có thể được đọc tuần tự.Nếu một tập tin là "phân mảnh" (khối của nó nằm rải rác ở những nơi khác nhau trên đĩa), đầu ổ đĩa sẽ cần phải được định vị lại nhiều lần để đọc toàn bộ tập tin. Tái định vị đầu là một trong những hoạt động tốn nhiều thời gian nhất liên quan đến việc đọc đĩa (chỉ đứng thứ hai sau khi bắt đầu quay đĩa sau khi nó bị dừng). Do đó các thủ tục được gọi là "chống phân mảnh" hoặc "chống phân mảnh", mà sắp xếp lại các khối được sử dụng trên một đĩa để làm cho tất cả các tập tin tiếp giáp.
Với danh sách liên kết các khối miễn phí, phân bổ liên quan đến việc lấy các khối từ phía trước danh sách và deallocation liên quan đến việc thêm các khối được giải phóng vào trước danh sách. Do đó danh sách có thể lộn xộn, với các khối không liền kề trên đĩa thường xuyên nằm trong danh sách. Để tìm một khối liền kề các khối miễn phí đủ lớn cho một tệp lớn, có thể cần phải quét một phần đáng kể trong danh sách.
Với bitmap, bạn vẫn cần phải quét phần khối miễn phí liền kề lớn, nhưng điều này dễ hơn vì 8, 16, 32 hoặc 64 bit (tùy thuộc vào kích thước từ của phần cứng) có thể được kiểm tra trong hoạt động đơn lẻ.
Và ** vấn đề ban đầu ** trong trường hợp nào của bạn là danh sách được liên kết hoặc bản đồ bit nên giải quyết? Bạn đề cập đến "khối đĩa miễn phí" nhưng những gì về họ? Phân bổ? Tần số phân bổ khối đĩa đồng nhất để giảm thiểu ổ SSD hoặc bộ nhớ flash bị hao mòn? Nếu không tập trung nhiều hơn vào vấn đề thì không có ưu điểm/nhược điểm nào khác thì danh sách liên kết đơn giản để thực hiện, được dạy rất sớm và mọi lập trình viên có thể sử dụng chúng – xmojmr
@xmojmr Nó chỉ là một câu hỏi mẫu. Đây là tất cả những gì đã được đưa ra. –
Trong trường hợp đó hãy cố gắng tự mình tìm ra (cố gắng sử dụng nó bằng mã đơn giản (giấy?) Lập mô hình trình quản lý đĩa) sự khác biệt khi nói đến tốc độ truy cập cấu trúc dữ liệu (đọc/ghi) và khôi phục lỗi là gì. Khả năng suy nghĩ của bạn về nó là một trong những điều quan trọng mà kỳ thi phải được xác minh. Truy vấn của Google 'bitmap' phân bổ hệ thống tệp cho nhiều bài viết hữu ích như [Wikipedia: bitmap không gian miễn phí] (http://en.wikipedia.org/wiki/Free_space_bitmap) hoặc [IJEAT: Phân bổ khối đĩa miễn phí trong UNIX bằng cách sử dụng bitmap] (http://www.ijeat.org/attachments/File/v3i1/F2120082613.pdf) – xmojmr