TỔ CHỨC BÊN TRONG CỦA THƯ MỤC

Một phần của tài liệu Giáo trình môn Hệ Điều Hành PTIT (Trang 156 - 158)

CHƯƠNG 4 : HỆ THỐNG FILE

4.7. TỔ CHỨC BÊN TRONG CỦA THƯ MỤC

Như đã nói trong các phần trước, file được biểu diễn bởi khoản mục trong thư mục. Để tiến hành thao tác mở file, xoá file, tạo file, trước tiên hệ điều hành duyệt thư mục và tìm ra khoản mục tương ứng. Khoản mục này sẽ cung cấp thông tin về vị trí file trên đĩa cho phép ta thực hiện các thao tác tiếp theo với file.

Hiệu quả việc tạo, xố, tìm kiếm khoản mục trong thư mục phụ thuộc rất nhiều vào cách tổ chức bên trong, cách lưu trữ và quản lý thư mục. Phần này sẽ đề cập tới một số phương pháp xây dựng thư mục.

4.7.1. Danh sách

Cách đơn giản nhất là tổ chức thư mục dưới dạng danh sách các khoản mục. Danh sách này có thể là bảng, danh sách kết nối hay một câu trúc khác. Việc tìm kiếm khoản mục khi đó được thực hiện bằng cách duyệt lần lượt danh sách. Để thêm file mới vào thư mục, trước tiên ta phải duyệt cả thư mục để kiểm tra xem khoản mụcvới tên file như vậy đã có chưa. Khoản mục mới sau đó được thêm vào cuối danh sách hoặc một ô trong bảng nếu ô này chưa được sử dụng. Để mở file hoặc xóa file, ta cũng tiến hành tìm tuần tự khoản mục tương ứng.

Nhược điểm cơ bản của phương pháp tổ chức thư mục này là việc tìm kiếm trong danh sách rất chậm do phải duyệt lần lượt. Khi số lượng file trong thư mục tăng lên, thời gian tìm kiếm có thể rất lớn (ở mức người dùng có thể nhận biết được). Việc cache thư mục trong bộ nhớ mà nhiều hệ điều hành thực hiện chỉ cho phép tiết kiệm thời gian đọc thư mục từ đĩa chứ khơng giảm được thời gian tìm kiếm trong thư mục.

4.7.2. Cây nhị phân

Để tăng tốc độ tìm kiếm cần dùng cấu trúc dữ liệu có hỗ trợ sắp xếp. Cấu trúc dữ liệu thường được dùng để xây dựng thư mục là cây nhị phân (B tree) hoặc cây nhị phân cân bằng. Khi thêm khoản mục mới vào thư mục, hệ thống sắp xếp khoản mục vào nhánh tương ứng của cây. Việc tìm kiếm trong cây đã sắp xếp nhanh hơn rất nhiều. Hệ thống file NTFS của Windows NT là một ví dụ sử dụng thư mục kiểu này.

4.7.3. Bảng băm

Một kiểu cấu trúc dữ liệu khác có thể dùng cho thư mục là bảng băm (hash table). Bảng băm là cấu trúc dữ liệu cho phép dùng hàm băm để tính vị trí của khoản mục trong thư mục theo tên file. Thời gian tìm kiếm trong thư mục do đó giảm xuống rất nhiều so với dùng danh sách như ở phần trên. Việc tạo và xoá file cũng được thực hiện đơn giản bằng cách tính vị trí của khoản mục cần tạo hay xoá trong bảng băm. Trường hợp nhiều ên file cùng băm tới một vị trí được giải quyết như trong các bảng băm thông thường.

Nhược điểm lớn nhất của cấu trúc này là hàm băm phụ thuộc vào kích thước của bảng băm do đó bảng phải có kích thước cố định. Nếu số lượng khoản mục vượt quá kích thước chọn cho bảng băm thì phải chọn lại hàm băm. Ví dụ, ta có bảng băm với 128 khoản mục.

Hàm băm biến đổi tên file thành các số nguyên từ 0 đến 127 bằng cách lấy phần dư sau khi chia cho 128. Nếu số lượng file trong thư mục tăng lên quá 128, chẳng hạn 130 file, kích thước bảng băm cũng phải tăng lên, chẳng hạn thành 150 khoản mục. Khi đó ta cần xây dựng hàm băm mới cho phép ánh xạ tên file sang khoảng mới từ 0 đến 149.

4.7.4. Tổ chức thư mục của DOS (FAT)

Mỗi đĩa lơgic trong MS-DOS có cây thư mục riêng của mình. Cây thư mục bắt đầu từ thư mục gốc ROOT. Thư mục gốc được đặt ở phần đầu của đĩa, ngay sau sector khởi động BOOT và bảng FAT. Thư mục gốc chứa các file và thư mục con. Thư mục con đến lượt mình có thể chứa file và thư mục mức dưới.

Hình 4.12: Nội dung khoản mục trong thư mục của hệ thống file FAT

Thư mục của MS-DOS được tổ chức dưới dạng bảng. Mỗi khoản mục chiếm một dòng trong bảng này và có độ dài cố định là 32 byte. Cấu trúc của khoản mục được thể hiện trên hình 4.12 (dùng trong phiên bản cũ, cấu trúc phiên bản mới xem trong phần mô tả hệ thống file FAT ở cuối chương).Các khoản mục có thể trỏ tới file hoặc trỏ tới thư mục con mức dưới. Số lượng khoản mục trong thư mục gốc bị hạn chế không được vượt quá một số lượng cho trước. Ví dụ thư mục gốc của đĩa mềm thường chỉ chứa tối đa 128 khoản mục.

Một số phiên bản cải tiến của FAT cho phép sử dụng tên file có độ dài tối đa là 255 ký tự. Trong trường hợp đó, khoản mục dài 32 byte khơng đủ để chứa hết các tên file dài. Để chứa hết tên file, hệ điều hành sử dụng nhiều khoản mục cho một file. Mỗi khoản mục độ dài 32 byte sẽ chứa một phần tên file. Chỉ có khoản mục cuối cùng chứa vị trí bắt đầu file và các thuộc tính khác.

4.7.5. Thư mục của Linux

Thư mục hệ thống file Ext2 của Linux có cách tổ chức bên trong đơn giản. Mỗi khoản mục chứa tên file và địa chỉ i-node. Tồn bộ thơng tin cịn lại về thuộc tính và vị trí các khối dữ liệu của file được lưu trong i-node chứ không phải trong thư mục. Kích thước khoản mục khơng cố định mà phụ thuộc vào độ dài tên file. Do vậy, phần đầu mỗi khoản mục có một trường cho biết kích thước của khoản mục này (xem hình 4.13).

8 3 1 10 2 2 2 4

Tên file Phần dự phòng Độ dài

Phần mở rộng tên file

Thuộc tính

Thời gian tạo file

Ngày tạo file Số thứ tự cluster đầu

Hình 4.13: Cấu trúc khoản mục trong thư mục hệ thống file Linux Ext

Một phần của tài liệu Giáo trình môn Hệ Điều Hành PTIT (Trang 156 - 158)