CHƯƠNG 1 : GIỚI THIỆU CHUNG
4.5. CẤP PHÁT KHÔNG GIAN CHO FILE 149
4.5.1. Cấp phát các khối liên tiếp 150
Mỗi file được cấp một khoảng không gian gồm các khối nằm liên tiếp trên đĩa. Vị trí file trên đĩa được xác định bởi vị trí khối đầu tiên và độ dài hoặc số khối mà file đó chiếm. Chẳng hạn, nếu file được cầp phát n khối bắt đầu từ khối thứ s, khi đó các khối của file sẽ là s, s+1, s+2, ..., s+n-1. Khoản mục của file trong thư mục sẽ chứa địa chỉ khối đầu tiên và số khối mà file chiếm (Hình 4.7)
Hình 4.7: Cấp phát cho file các khối liên tục
Trong trường hợp cấp phát khối liên tiếp, việc truy cập file có thể thực hiện dễ dàng theo cả hai cách truy cập trực tiếp và truy cập tuần tự. Để truy cập tuần tự, hệ điều hành ghi nhớ địa chỉ khối vừa được truy cập cuối cùng. Khối tiếp theo sẽ được đọc khi cần thiết. Việc truy cập trực tiếp khối thứ i của một file bắt đầu tại địa chỉ s được thực hiện bằng cách truy cập khối thứ s+i của đĩa.
Ngoài việc hỗ trợ cả hai phương pháp truy cập và dễ dàng lưu trữ vị trí file trong thư mục, phương pháp cấp phát cho file các khối liên tiếp còn cho phép tiết kiệm thời gian di chuyển đầu từ khi đọc các khối của file. Để đọc một khối trên đĩa, đầu từ cần di chuyển tới vị trí khối đó bằng cách di chuyển tới rãnh tương ứng và chờ cho tới khi cung chứa khối quay đến nơi. Trong trường hợp các khối của file nằm kề nhau có thể đọc liên tiếp mà khơng thực hiện các di chuyển nói trên. Trong trường hợp các khối nằm trên các rãnh khác nhau (ví dụ fileC trên hình 4.7) thì đầu từ cũng chỉ phải di chuyển sang rãnh bên cạnh. Do không phải di chuyển đầu đọc nên tốc độ truy cập file sẽ tăng lên.
Ngồi các ưu điểm nói trên, việc cấp phát cho file các khối liên tiếp có một số nhược điểm lớn. Khó khăn đầu tiên liên quan tới việc tìm ra khoảng khơng gian trống đủ lớn trên đĩa để cấp phát cho file. Sau một thời gian sử dụng, các khối được cấp phát khi tạo file và giải phóng khi xố file sẽ tạo ra các vùng trống trên đĩa. Khi có yêu cầu cấp phát, hệ điều hành phải kiểm tra các vùng trống để tìm ra vùng có kích thước thích hợp. Việc này đòi hỏi một
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 fileB fileB Bắt đầu 1 3 8 Độ dài 2 3 5 fileA fileB fileC
thời gian nhất định. Việc lựa chọn ô trống để cấp phát cho file có thể thực hiện theo một trong các chiến lược cấp phát bộ nhớ động đã được trình bầy trong phần phân đoạn bộ nhớ. Chiến lược thường được sử dụng là tìm vùng trống đầu tiên thích hợp (first fit) hoặc tìm vùng trống thích hợp nhất (best fit).
Tương tự như trong trường hợp cấp phát bộ nhớ động, phương pháp cấp phát khối liên tiếp gây ra lãng phí khơng gian đĩa do hiện tượng phân mảnh ngồi (external fragmentation). Đó là hiện tượng các vùng trống cịn lại trên đĩa có kích thước quá nhỏ và do vậy không thể cấp phát cho file có kích thước lớn hơn. Ví dụ, trên hình 4.7, vùng trống nằm trước fileA có kích thước 1 khối và khơng thể cấp phát cho file kích thước lớn hơn. Những vùng trống như vậy do đó bị bỏ phí. Tuỳ thuộc vào kích thước đĩa, độ dài khối và độ dài trung bình của file, hiện tượng phân mảnh ngồi sẽ gây lãng phí khơng gian nhiều hay ít. Mặc dù hiện tượng này có thể khắc phục bằng cách chuyển các file lại gần nhau để tập trung tất cả vùng trống về cuối đĩa nhưng việc di chuyển file cần khá nhiều thời gian, đặc biệt khi kích thước đĩa lớn, và do vậy không thể tiến hành thường xuyên.
Một nhược điểm khác của phương pháp này là cần phải biết kích thước file khi tạo file. Trong một số trường hợp như khi chép file từ nơi này sang nơi khác, ta biết trước kích thước file cần tạo. Tuy nhiên, trong đa số trường hợp, kích thước file khơng được biết trước mà chỉ biết sau khi ghi thông tin vào file. Mặt khác, kích thước file ln ln thay đổi. Sau khi file đã được tạo, việc tăng độ dài file có thể gặp khó khăn nếu các khối nằm sau vị trí của file đã bị file khác chiếm. Giải pháp duy nhất để tăng kích thước file là chuyển toàn bộ file sang vùng không gian trống lớn hơn.