Phần mềm đóng gói tập tin là gì được thực hiện bởi một hệ điều hành?


3

Tôi đang đọc một cuốn sách về Hệ điều hành và tôi bối rối trong một phần về Cấu trúc tệp nội bộ . Trích dẫn từ cuốn sách:

Các hệ thống đĩa thường có kích thước khối được xác định rõ được xác định bởi kích thước của một khu vực. Tất cả các I / O đĩa được thực hiện theo đơn vị của một khối (bản ghi vật lý) và tất cả các khối có cùng kích thước. Không chắc là kích thước bản ghi vật lý sẽ khớp chính xác với độ dài của bản ghi logic mong muốn. Hồ sơ logic thậm chí có thể khác nhau về chiều dài.

Đóng gói một số bản ghi logic vào các khối vật lý là một giải pháp phổ biến cho vấn đề này. Ví dụ, hệ điều hành UNIX định nghĩa tất cả các tệp chỉ là các luồng byte. Mỗi byte được định địa chỉ riêng bởi phần bù của nó từ đầu (hoặc cuối) của tệp. Trong trường hợp này, kích thước bản ghi logic là 1 byte. Hệ thống tập tin sẽ tự động đóng gói và giải nén byte vào các khối đĩa vật lý, có thể là 512 byte cho mỗi khối.

Có nghĩa là gì khi đóng gói một số bản ghi logic vào các khối vật lý ở đây?


về cơ bản, bắt đầu từ bên trái (hoặc bên phải) của khối, bắt đầu sắp xếp dữ liệu một cách hợp lý và một khi bạn hết dữ liệu, hãy điền vào bên phải bằng null hoặc bất cứ điều gì.
Frank Thomas

Câu trả lời:


3

Nó thực sự rất đơn giản, nhưng rất khó để giải thích. Tôi nghĩ rằng chúng ta chỉ cần diễn giải những gì tác giả đã nói.

Đĩa yêu cầu bạn nói chuyện với nó trong các khối . Giả sử kích thước khối là 512 Byte:

Nếu bạn muốn ghi 400 Byte vào đĩa, bạn phải thêm 112 Byte khác để tạo ra 512 Byte. 112 Byte bổ sung cũng có thể là số không, nhưng chúng phải ở đó.

Khi bạn muốn đọc 400 Byte từ đĩa, ổ cứng sẽ cung cấp cho bạn 512 Byte và công việc của bạn là tách dữ liệu thực tế khỏi 112 byte đệm.

Đây là những gì chúng ta gọi là Đóng góiGiải nén . Bạn có thể trở nên phức tạp hơn ví dụ trên, nhưng đó là nguyên tắc.


Ngẫu nhiên, IO dựa trên khối có ở khắp mọi nơi. CPU hiện đại có thể yêu cầu dữ liệu 32 bit, ngay cả khi bạn chỉ cần gửi giá trị 8 bit. Bên trong, các ổ cứng SSD triển khai một lớp logic khối khác trong suốt đối với các trang được gọi là PC / OS . Như thể điều đó là không đủ, các hệ thống tệp hiện đại cũng có logic khối riêng của chúng (ví dụ: mặc định NTFS là 4096 Byte). Trong tất cả các trường hợp, dữ liệu đang được đóng gói và giải nén để tạo các khối cần thiết hoặc trích xuất dữ liệu có ý nghĩa từ các khối đó.
misha256

Vậy nếu tôi có một ổ cứng có kích thước khối là 512 byte nhưng tôi định dạng nó bằng hệ thống NTFS thì sao? Vậy thì ngay cả khi tôi lưu dữ liệu 2 byte, tôi sẽ cần gửi đúng 4096 byte chứ không phải 512?
Koray Tugay

1
@KorayTugay Không có vấn đề. Ví dụ 2 byte của bạn hoạt động như thế này: 2 byte sẽ được đóng gói thành 4096 byte theo NTFS. Sau đó, 4096 Byte sẽ được tách ra và gửi vào đĩa dưới dạng tám khối liên tiếp 512 Byte.
misha256

1

Có nghĩa là gì khi đóng gói một số bản ghi logic vào các khối vật lý có ý nghĩa ở đây?

Trước tiên, bạn phải hiểu "bản ghi logic" là gì.
Nó có thể là chiều dài thay đổi, chẳng hạn như văn bản trong câu.
Trong số đó có thể là chiều dài cố định, chẳng hạn như cấu trúc dữ liệu.

Việc đóng gói xác định cách tổ chức dữ liệu dưới dạng các bản ghi logic này vào các thùng chứa "vật lý", tức là các khối đĩa.
Đối với các bản ghi bao gồm văn bản, các truy cập đọc và ghi thường là tuần tự (tức là bạn bắt đầu từ đầu và làm việc theo cách của bạn đến "kết thúc"). Vì vậy, những hồ sơ này sẽ được đóng gói mà không liên quan đến ranh giới khối.
Đối với các bản ghi bao gồm dữ liệu (nhị phân), việc đóng gói có thể là một vấn đề, đặc biệt là khi các bản ghi dữ liệu sẽ được truy cập ngẫu nhiên (ví dụ: tra cứu cơ sở dữ liệu) thay vì tuần tự (như băng từ).

Quay lại thời của thẻ đục lỗ (với 80 ký tự cho mỗi thẻ). Tôi đã thấy một chương trình khập khiễng lưu trữ một bản ghi 80 byte cho mỗi khu vực 512 byte để đơn giản hóa ánh xạ bản ghi theo khu vực để truy cập ngẫu nhiên. Đối với kích thước của bản ghi logic đó, số lượng bản ghi tối đa có thể được đóng gói (được trang bị) vào một khối 512 byte là sáu, với 32 byte không được sử dụng cho mỗi cung.
Đối với thời gian truy cập (ngẫu nhiên) tối ưu (và với chi phí không tối thiểu hóa không gian lưu trữ), một bản ghi logic không nên trải rộng các khối đĩa (để có thể thỏa mãn truy cập ngẫu nhiên bằng cách đọc hoặc ghi chỉ một khối).

Một số hệ điều hành, ví dụ * nixes, có xu hướng ẩn cấu trúc khối vật lý cơ bản khi sử dụng tệp. Các hệ điều hành khác có thể cung cấp các hệ thống tệp hiển thị các đặc điểm phần cứng nhiều hơn, chẳng hạn như các loại tệp được phân bổ của các ngành liền kề hoặc các ngành được liên kết hoặc bởi một bảng của các ngành và các tòa nhà như readblk () cũng như read () (cho bản ghi ). Việc đóng gói các bản ghi có độ dài cố định để truy cập ngẫu nhiên quan trọng hơn là một môi trường như vậ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.