đặc biệt trong trường hợp bảng chỉ mục lớn. Bảng chỉ mục lớn là do đĩa lớn, đĩa có bao nhiêu block thì bảng chỉ mục có bấy nhiêu phần tử, mỗi phần tử trong bảng chỉ mục có thể là 1 word, 1.5 word, 2 word, 4 word, vv phụ thuộc vào kích thước đĩa, kích thước block và cách tổ chức quả lý block đĩa của mỗi hệ điều hành. Các hệ điều hành hiện nay khắc phục hạn chế trên đây bằng cách, không nạp tất cả bảng chỉ mục vào bộ nhớ mà chỉ nạp phần bảng chỉ mục liên quan đến các file đang mở trên bộ nhớ tại một thời điểm cụ thể nào đó, tức là, phần bảng chỉ mục này luôn thay đổi trong quá trình làm việc của hệ thống. Khái niệm cửa sổ bảng FAT trong hệ thống file của hệ điều hành windows98 là một ví dụ của trường hợp này. Chúng ta sẽ được nhắc đến điều này trong phần sau của chương này. I-nodes (index-node): trong chiến lược này, hệ điều hành thiết kế một bảng nhỏ để theo dõi các blocks của một file, được gọi là I-node. I-node liệt kê các thuộc tính và các địa chỉ đĩa của các block của file. Hình sau đây minh hoạ cho chiến lược này. Đầu tiên một phần địa chỉ đĩa (các block đĩa) được lưu trữ trong chính I- node. Sau đó, đối với các file nhỏ thì tất cả các thông tin cần thiết là phải chứa trong chính I-node, đó là các thông tin được nhận từ đĩa vào bộ nhớ chính khi file được mở. Đối với các file lớn, gồm nhiều block, thì một trong các địa chỉ trong I- node là địa chỉ của một block đĩa, được gọi là block gián tiếp đơn. Block này chứa các địa chỉ đĩa được thêm vào. Nếu vẫn còn không đủ thì một địa chỉ khác trong I- node, được gọi là block gián tiếp đôi, sẽ chứa địa chỉ của một block mà nó chứa một danh sách các block gián tiếp đơn. Mỗi block gián tiếp đơn trỏ đến khoảng 100 block dữ liệu. Nếu vẫn còn không đủ thì có thể một block gián tiếp ba được sử dụng. Nhìn hình vẽ trên ta dẽ dàng phân biệt được sự khác nhau giữa: block gián tiếp đơn, block gián tiếp đôi và block gián tiếp ba. Attributes I-node Địa chỉ đĩa Địa ch ỉ của các block dữ liệu block gián tiếp đơn block gián tiếp ba block gián tiếp đôi Hình 4.5: M ột I - node Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Chiến lược này được windows 2000 cải tiến và sử dụng trong cấu trúc MFT trong hệ thống file của nó. Chúng ta sẽ thấy điều này khi tìm hiểu hệ thống file của windows 2000 trong phần sau của chương này. Cấp phát không liên tục với block chỉ mục: Cả hai chiến lược cấp phát, theo danh sách liên kết và theo liên kết chỉ mục đều tồn tại hạn chế là phải phân tích danh sách liên kết hay bảng chỉ mục để dò tìm ra danh sách các block đĩa chứa nội dung của tập tin cần đọc, khi đọc tập tin, dẫn đến làm chậm tốc độ đọc tập tin trên đĩa. Để khắc phục điều này các hệ điều hành có thể cài đặt chiến lược cấp phát không liên tục với block chỉ số. Hệ điều hành sử dụng một block đĩa để chứa danh sách các block đĩa chứa nội dung của một tập tin nào đó, block đĩa này được gọi là block chỉ mục. Trong hình trên block 11 là chỉ mục của file A, block 8 là chỉ mục của file A. Như vậy chỉ cần thiết kế một con trỏ, tại phần tử trong bảng chỉ mục, trỏ tới block chỉ mục của tập tin trên đĩa là hệ điều hành có thể quản lý được danh sách các block đĩa chứa nội dung của một tập tin. Với chiến lược này thì tốc độ đọc file của hệ điều hành sẽ tăng lên, nhưng nó chỉ dụng được đối với các file nhỏ, vì nếu file lớn thì một block có thể không chứa đủ danh sách các block đĩa chứa nội dung của một file. Mặt khác nếu block chỉ mục của file bị hỏng thì hệ điều hành không thể đọc được file, mặc dầu nội dung của file vẫn còn tồn tại trên các block đĩa. IV.1.5. An toàn trong quản lý tập tin Bảo toàn dữ liệu tập tin: Một hệ quản trị file phải cung cấp những cơ chế thích hợp để phục hồi nội dung của file trong trường hợp hệ thống gặp sự cố về phần mềm hoặc phần cứng. Để thực hiện được điều này hệ điều hành phải luôn tạo bản sao của các tập tin đang mở trên hệ thống, để có thể phục hồi lại khi cần thiết. Có hai kỹ thuật được sử dụng trong cơ chế này: DUMP có chu kỳ: Sau một khoảng thời gian nhất định nội dung của Hình 4.6: C ấp phát không li ên t ục với block chỉ mục A 1 4 5 B 1 6 A 3 7 8 B 2 9 A 2 10 11 B 3 12 x 13 A 4 14 B 4 15 4 10 7 14 6 9 12 15 Block chỉ mục của file A Block chỉ mục của file B Các block đĩa chứa các file A và B Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m các tập tin đang mở trên bộ nhớ chính sẽ được đổ (Dum/backup) ra lại đĩa. Nếu hệ thống gặp sự cố thì tất cả các tập tin đang mở sẽ được tái tạo lại kể từ trạng thái mà chúng được DUMP ra lần cuối cùng. Rõ ràng việc DUM này sẽ làm tốn thời gian thực hiện của hệ thống. DUMP Incremental: Trong cách này, hệ thống chỉ lưu trữ các thông tin được sửa đổi kể từ lần Dump sau cùng, tức là chỉ có các tập tin được tạo lập hoặc sửa đổi so với lần đổ ra cuối cùng mới được Dump ra. Với kỹ thuật này thông tin cần lưu trữ ít hơn do đó hệ thống có thể thực hiện Dump thường xuyên hơn. Để biết được trong số những tập tin đang mở tập tin nào có sự cập nhật dữ liệu hoặc có sự thay đổi so với lần Dump ra trước đó hệ thống đưa thêm vào danh mục người sử dụng một trường mới, dài 2 bit, tạm gọi là trường kiểm tra cập nhật (KTCN). Nếu KTCN = 00: mở không cập nhật; KTCN = 01: mở có cập nhật; KTCN = 10: không có thay đổi so với lần Dump trước. KTCN = 11: có thay đổi so với lần Dump trước. Với cách này hệ thống phải luôn kiểm tra bảng danh mục và phải cập nhật lại trường KTCN sau mỗi lần Dump, dẫn đến làm chậm tốc độ thực hiện của hệ thống. Để hệ thống không phải khảo sát tất cả các điểm vào của danh mục, hệ điều hành cài đặt thêm một bảng danh mục mới để ghi nhận thông tin của các tập tin đang được truy xuất (ghi/đọc) trên hệ thống và chỉ có Dump sử dụng bảng danh mục này, do đó hệ thống Dump có thể hoạt động song song với các thao tác khác của hệ thống. Dump Incremental là một tiến trình có độ ưu tiên thấp, thường trú trong bộ nhớ phân tích các bảng danh mục để tìm ra các tập tin cần phải thực hiện Dump. Danh sách các quyền truy cập (Access Right): Trong phần trình bày về tập tin chia sẻ ở trên, chúng tôi đã trình bày về kỹ thuật tạo ra tập tin chia sẻ của hệ điều hành, kỹ thuật này hoàn toàn trong suốt với người sử dụng. Trong phần này chúng tôi trình giới thiệu một công cụ mà hệ điều hành dùng để bảo vệ các tập tin chia sẻ trong môi trường nhiều người sử dụng. Đó là quyền truy cập, quyền truy cập và quản lý truy cập đồng thời là các công cụ cơ bản mà hệ điều hành dùng để quản lý và bảo vệ các tập tin chia sẻ trong các hệ thống nhiều người sử dụng (multiuser systems). Quyền truy cập có thể được gán cho một người sử dụng (User) cụ thể, một nhóm người sử dụng (User Group) hay tất cả người sử dụng (All User) có trong các hệ thống multiuser. Một user group chứa nhiều user, khi một group được gán quyền nào đó thì tất cả các uer thành viên trong group này đều được cũng được gán quyền truy cập đó. Sau đây là các quyền truy cập mà hệ điều hành thường dùng để gán cho một Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m người sử dụng cụ thể đến một file cụ thể nào đó: None: Người sử dụng không biết được là file có tồn tại hay không. Với giới hạn của quyền này, người sử dụng không được phép đọc thư mục chứa file này. Knowledge: Người sử dụng có thể xác định được là file đang tồn tại và ai là người sở hữu file. Excution: Người sử dụng có thể nạp và thực hiện một chương trình nhưng không thể copy nó. Các chương trình thuộc dạng độc quyền của một nhà sản xuất nào đó thường được tạo với sự giới hạn với quyền này. Reading: Người sử dụng có thể đọc file cho bất kỳ mục đích nào, bao gồm cả copy và execution. Một vài hệ thống cho phép có sự khác nhau giữa xem và copy file. Trong trường hợp này nội dung của file có thể được hiển thị để người sử dụng xem, nhưng họ không được cung cấp công cụ để copy nội dung này. Appending: Người sử dụng có thể thêm dữ liệu vào file, thường là ở cuối file, nhưng không thể thay đổi hoặc xoá bất kỳ một nội dung nào trong file. Updating: Người sử dụng có thể thay đổi, xoá và thêm dữ liệu vào file. Changing protection: Người sử dụng có thể thay đổi các quyền truy cập được gán đến người sử dụng khác. Quyền này thường chỉ được gán cho người sở hữu file. Deletion: Người sử dụng có thể xoá được file từ hệ thống file. Người sử dụng được gán quyền truy cập đến file, và họ chỉ có thể truy cập file ở mức độ tương ứng với quyền truy cập được gán. Ví dụ, người sử dụng A được gán quyền đọc (read) file tailieu.doc, nhưng không được gán quyền xoá (delete) file tailieu.doc thì người sử dụng A này chỉ có thể thực hiện thao tác mở file tailieu.doc ra để đọc nội dung của file, chứ không thể thay xóa hay thay đổi nội dung của file (vì không được gán quyền thay đổi (modify) nội dung file). Người sử dụng có thể được gán nhiều quyền truy cập đến một file, khi đó họ sẽ có đầy đủ các sự cho phép và sự giới hạn tương ứng với các quyền đã được gán. Tuy nhiên quyền truy cập có tính kế thừa, nên chỉ cần gán một quyền truy cập cao nhất thì họ có đủ các sự cho phép và sự giới hạn của các quyền khác. Ví dụ , nếu người sử dụng được gán quyền Updating với một file nào đó, thì xem như họ đã được gán các quyền Knowledge, execution, reading và appending đối với file này. Mở và đóng tập tin: Hệ điều hành cho rằng các tập tin được lưu trữ trên đĩa đều ở trang thái đóng, để thực hiện bất kỳ một thao tác đọc/ghi/thay đổi nội dung của tập tin thì trước hết chương trình, tiến trình của người sử dụng (kể cả người sử dụng) phải thực hiện thao tác mở tập tin. Khi nhận được yêu cầu mở tập tin bộ phận quản lý tập tin của hệ điều hành sẽ đọc nội dung của tập tin từ đĩa và nạp nó vào bộ nhớ Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m chính, sau đó trả về cho chương trình, tiến trình của người sử dụng một thẻ tập tin/ thẻ file (file handle) hoặc một biến tương ứng với tập tin này để chương trình, tiến trình theo dõi và thao tác trên tập tin này. Sau khi thực hiện xong một thao tác nào đó trên nội dung của tập tin thì chương trình, tiến trình và cả người sử dụng phải thực hiện thao tác đóng tập tin lại. Đối tượng yêu cầu đóng tập tin phải cung cấp đúng thẻ tập tin của tập tin cần đóng cho hệ điều hành. Một số hệ điều hành cho phép thực các thao tác trên tập tin (mở/cập nhật/ đóng) bằng chính tên của tập tin. Các hệ điều hành đều cung cấp hai thủ tục chính để chương trình của người sử dụng thực hiện các thao tác mở/đóng file: Open (tên file cần mở, chế độ mở): dùng để mở file (chế độ: Đọc/ Viết/ Tạo lập) và Close (tên file cần đóng): dùng để đóng file khi mở. Thao tác mở/đóng file sẽ đơn giảm trong môi trường hệ điều hành đơn nhiệm và sẽ phức tạp hơn trong môi trường hệ điều hành đa nhiệm. Trong môi trường đa nhiệm, hệ điều hành chỉ thực sự đóng file theo yêu cầu của một tiến trình từ một người sử dụng nào đó khi tất cả các thao tác ghi/đọc file này từ các tiến trình người sử dụng khác đều đã kết thúc. Trong trường hợp này hệ điều hành phải luôn theo dõi các tiến trình người sử dụng tham gia vào việc mở file này. Để đáp ứng yêu cầu mở file từ một chương trình, tiến trình của người sử dụng trong môi trường đa nhiệm hệ điều hành phải thực hiện các bước cơ bản sau đây để đảm bảo việc truy xuất file sau này là hợp lệ: 1. Kiểm tra tên của file cần mở, tại các entry, trong bảng danh mục file của hệ thống (đó là bảng thư mục trong hệ điều hành DOS và Windows9x). 2. Kiểm tra tiến trình gọi tới từ một người sử dụng hay chương trình người sử dụng có được quyền truy cập file ở chế độ đã được chỉ ra hay không. 3. Kiểm tra nếu file đã được mở để đọc bởi một tiến trình trước đó thì tiến trình hiện tại không thể mở để ghi vào file, mặc dầu tiến trình này được quyền ghi file. Ngược lại tiến trình hiện tại không thể mở file để đọc khi đã có một tiến trình nào đó đang ghi vào file. 4. Đảm bảo sự sẵn sàng của các thiết bị lưu trữ, đĩa chẳng hạn, và vật mang liên quan đến file cần mở. Để mô tả đầy đủ các thông tin về một file thì một phần tử trong bảng danh mục cần phải chứa các trường sau: Tên file; Mô tả của đơn vị của lưu trữ file; Địa chỉ của Block đầu tiên trong dãy các block (trên đĩa) chứa file; Địa chỉ của các block kế tiếp trong dãy các block chứa file; Chế độ truy cập tập tin; vv. Trong môi trường hệ điều hành đa nhiệm có thể có các tiến trình song song cùng đọc nội dung của một file, đối với các file chia sẻ, nhưng không thể xảy ra trường hợp có hai tiến trình cùng ghi vào một file hoặc có một tiến trình ghi vào file trong khi có một hoặc nhiều tiến trình khác đang đọc nội dung của file. Hệ điều Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m Click to buy NOW! P D F - X C h a n g e V i e w e r w w w . d o c u - t r a c k . c o m . là block chỉ mục. Trong hình trên block 11 là chỉ mục của file A, block 8 là chỉ mục của file A. Như vậy chỉ cần thiết kế một con trỏ, tại phần tử trong bảng chỉ mục, trỏ tới block chỉ mục của. sẻ ở trên, chúng tôi đã trình bày về kỹ thuật tạo ra tập tin chia sẻ của hệ điều hành, kỹ thuật này hoàn toàn trong suốt với người sử dụng. Trong phần này chúng tôi trình giới thiệu một công. gián tiếp đơn. Block này chứa các địa chỉ đĩa được thêm vào. Nếu vẫn còn không đủ thì một địa chỉ khác trong I- node, được gọi là block gián tiếp đôi, sẽ chứa địa chỉ của một block mà nó chứa một