Sử dụng khối chỉ số

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

Khối chỉ số (Index block hay Index node – I-node) là phương pháp trong đó tất cả con trỏ tới các khối thuộc về một file được tập trung một chỗ cho tiện việc truy cập trực tiếp đến từng khối của file.

Trong phương pháp này, mỗi file có một mảng riêng của mình chứa trong một khối gọi là khối chỉ số (I-node). Mảng này chứa thuộc tính của file và vị trí các khối của file trên đĩa (xem hình 4.10). Ô thứ i của mảng này chứa con trỏ tới khối thứ i của file. Việc đọc khối thứ i của file do vậy được thực hiện theo địa chỉ chứa trong ô thứ i của khối chỉ số. Khi mới tạo file, tất cả các ô này có giá trị nil. Để thêm khối mới vào file, khối được lấy từ danh sách các khối trống, sau đó địa chỉ khối được thêm vào ô tương ứng trong chỉ số.

Hình 4.10: Phương pháp sử dụng khối chỉ số thư mục Tên file ... 6 0 1 2 3 4 5 6 7 8 9 10 … 9 3 -1 … Bảng chỉ số 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Thư mục Tên file fileA Khối chỉ số 19 3 9 11 6 22 -1 -1 PTIT

Để xác định khối chỉ số ứng với file, khoản mục của file trong thư mục chứa con trỏ tới khối chỉ số này. Sau khi xác định được khối chỉ số tương ứng, khối này có thể được đọc vào và cache trong bộ nhớ (ví dụ khi mở file) để giảm thời gian cho thao tác đọc ghi file tiếp theo.

Việc sử dụng khối chỉ số cho phép tiến hành truy cập trực tiếp các khối trong file mà không phải đọc các khối trước đó. Các khối thuộc về một file cũng không cần phải nằm gần nhau do đó không gây ra hiện tượng phân mảnh ngoài.

Một vấn đề quan trọng đặt ra là chọn kích thước cho i-node. I-node càng nhỏ thì càng tiết kiệm không gian. Tuy nhiên, i-node nhỏ không cho phép chứa đủ con trỏ tới các khối nếu file lớn. Ngược lại nếu i-node lớn (có hàng trăm ô) trong khi file nhỏ chỉ chiếm 1 hoặc 2 ô thì các ô còn lại không được sử dụng và gây lãng phí bộ nhớ. Có hai cách giải quyết vấn đề này.

 Cách 1: Cho phép thay đổi kích thước i-node bằng cách sử dụng danh sách kết nối. Mỗi i-node sẽ được cấp phát một khối trên đĩa để lưu các ô của mình. Nếu kích thước i-node tăng lên, hệ điều hành sẽ liên kết các i-node để tạo thành i-node có kích thước lớn hơn. Khi đó, các ô phía trên của i-node chứa con trỏ tới các khối của file trong khi ô cuối cùng chứa con trỏ tới i-node tiếp theo.

 Cách 2: Sử dụng i-node nhiều mức có cấu trúc như sau. I-node bao gồm một số ô chứa địa chỉ các khối nhớ trên đĩa. Trong hệ thống file Ext2 của Linux và phiên bản BSD UNIX i-node có 15 ô như vậy. 12 ô đầu tiên của i-node trỏ trực tiếp tới khối nhớ chứa dữ liệu của file trên đĩa. Nếu kích thước file lớn và số lượng các ô này không đủ, 3 ô cuối của i-node chứa con trỏ tới các khối chỉ số gián tiếp. Ô dầu tiên trong 3 ô (ô thứ 13) chứa địa chỉ một khối chỉ số khác gọi là chỉ số gián tiếp mức 1. Các ô của chỉ số này không chứa dữ liệu mà con trỏ tới các khối chứa dữ liệu của file. Trong trường hợp vẫn không đủ định vị hết các khối của file, ô tiếp theo của i-node sẽ được sử dụng để trỏ tới khối chỉ số gián tiếp mức 2. Các ô của khối này trỏ tới khối địa chỉ gián tiếp mức 1 khác. Nếu chỉ số gián tiếp mức 2 vẫn chưa đủ, chỉ số gián tiếp mức 3 sẽ được sử dụng. Với khối chỉ số gian tiếp mức 3 như vậy, hệ điều hành có thể định vị các file kích thước đủ lớn. Kích thước tối đa của file phụ thuộc vào số ô của khối chỉ số gián tiếp và kích thước khối chứa dữ liệu của file (hình 4.11).

Phương pháp sử dụng khối chỉ số cũng bị nhược điểm tương tự như sử dụng danh sách kết nối. Đó là do các khối thuộc về một file không nằm gần nhau, tốc độ truy cập file bị giảm vì phải di chuyển đầu đọc nhiều lần.

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