CHƯƠNG 4 : HỆ THỐNG FILE
4.1. KHÁI NIỆM FILE
4.1.3. Cấu trúc file
File là tập hợp các thông tin do người tạo file định ra. Các thơng tin này có thể rất khác nhau: văn bản, mã nguồn chương trình, chương trình đã được dịch và liên kết, hình ảnh từ máy quét, các bản ghi của cơ sở dữ liệu.v.v. Cấu trúc của file do vậy cũng rất khác nhau và phụ thuộc vào thông tin chứa trong file. File văn bản sẽ gồm các ký tự xếp liền nhau trong khi file cơ sở dữ liệu là các bản ghi có cấu trúc nhất định.
Vậy hệ điều hành có cần biết và hỗ trợ các kiểu cấu trúc file hay không?
Việc hỗ trợ cấu trúc file ở mức hệ điều hành có một số ưu điểm sau. Thứ nhất, các thao tác với file sẽ dễ dàng hơn đối với người lập trình ứng dụng. Thứ hai, hệ điều hành có thể kiểm sốt được các thao tác với file. Việc kiểm soát được các thao tác với file cho phép hạn chế một số lỗi. Ví dụ, khi ta vơ tình in một file chương trình (đã được dịch và lưu trữ dưới dạng nhị phân) ra máy in, hệ điều hành sẽ phát hiện ra rằng file kiểu nhị phân không hỗ trợ in ấn và ngăn chặn việc in ra như vậy.
Tuy nhiên, hỗ trợ cấu trúc file ở mức hệ điều hành có các hạn chế là làm tăng kích thước hệ thống. Có bao nhiêu kiểu cấu trúc file được hệ điều hành hỗ trợ thì phải có bấy nhiêu đoạn chương trình được thêm vào hệ điều hành để thao tác với những kiểu cấu trúc này. Một số lượng lớn cấu trúc file sẽ khiến kích thước hệ điều hành tăng lên đáng kể.
Nhược điểm thứ hai quan trọng hơn là tính mềm dẻo của hệ điều hành bị giảm. Các chương trình chỉ có thể sử dụng các file có cấu trúc do hệ điều hành định sẵn. Việc tạo ra một file có cấu trúc khác với các cấu trúc mà hệ thống hỗ trợ sẽ bị ngăn cản. Ta hãy xem xét ví dụ sau. Giả sử hệ điều hành chỉ hỗ trợ các file văn bản và file chương trình. Do yêu cầu bảo mật, người dùng muốn tạo ra một file văn bản đã được mã hố. Sau khi mã hố, file văn bản sẽ có dạng như một file nhị phân, tức là giống với file chương trình hơn file văn bản. Hệ điều hành khi đó có thể nhầm và xếp file đã mã hố vào kiểu file chương trình và ngăn cản việc đọc file này để giải mã.
Do các nhược điểm nêu trên, đa số hệ điều hành không hỗ trợ và quản lý kiểu cấu trúc file. Cấu trúc file sẽ do chương trình ứng dụng và người dùng tự quản lý. UNIX, DOS, WINDOWS là các hệ điều hành như vậy. Trong các hệ điều hành này, các file được xem như tập hợp (khơng có cấu trúc) các byte1. Các chương trình ứng dụng khác nhau sẽ tạo ra và tự
1 Tuy nhiên hệ điều hành vẫn phải nhận biết và hỗ trợ một số loại file nhất định. Ví dụ như file chương trình phải
có cấu trúc phù hợp cho việc tải vào bộ nhớ và chạy chương trình đó. Các ví dụ là file kiểu EXE của Windows.
quản lý cấu trúc file riêng của mình. Chẳng hạn, hệ thống quản lý dữ liệu sẽ tạo ra file bao gồm các bản ghi, chương trình xử lý đồ hoạ lưu file dưới dạng mã nhị phân đã được nén.v.v. Cách tổ chức như vậy cho phép chương trình ứng dụng hồn tồn tự do trong việc tổ chức lưu trữ thơng tin của mính.