Giáo trình Hệ điều hành - Chương 4: Quản lý tệp tin

Ở việc bẻ gãy một tiến trình hay sau khi hoàn thành một tiến trình, một câu hỏi được đặt ra là: Bạn lưu trữ dữ liệu của bạn như thế nào, để sau này, bạn có thể làm việc trở lại với cái bạn đã có? Tính chất này của dữ liệu gọi là cố định dữ liệu, người ta đạt được khi dữ liệu được viết vào bộ nhớ quảng đại trước khi kết thúc chương trình. Tuy nhiên, chúng ta vẫn còn một vấn đề: Ở phần lớn bộ nhớ quảng đại, danh sách các tệp tin quá dài, ấy nhưng người ta muốn thời gian truy cập phải ngắn. Do đó, trường hợp này chỉ có thể dẫn tới một cách thức tổ chức tệp tin để quản lý các tệp dữ liệu trong hệ thống máy tính.
doc 31 trang xuanthi 30/12/2022 800
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Hệ điều hành - Chương 4: Quản lý tệp tin", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • docgiao_trinh_he_dieu_hanh_chuong_4_quan_ly_tep_tin.doc

Nội dung text: Giáo trình Hệ điều hành - Chương 4: Quản lý tệp tin

  1. Các tệp tin chỉ số tuần tự (index sequential files): Loại tệp tin này được cấu thành từ các bản ghi dữ liệu (data records), chúng được sắp xếp theo một tiêu chuẩn gọi là sắp xếp theo chìa khoá (key) và khởi đầu của tệp tin là một chỉ số. Trong thư mục chỉ số, các kiểu “đóng/mở” bằng chìa khoá được kiến tạo và được thực thi (thí dụ kiểu điền vào các tệp tin quản lý nhân sự: họ tên, ngày sinh, quê quán ); người ta có thể truy cập nhanh chóng từng phần của tệp tin; từng phần này lại được trợ cứu một khoảng giá trị thích ứng của mỗi chìa khoá. Vì một kiểu cấu trúc như thế thì đặc trưng cho tất cả các hệ thống tệp tin của các thư mục. Chúng ta có thể nhìn thấy điều này một cách chính xác hơn: Hình 4.9 chỉ ra cấu trúc kiểu chỉ số với một thí dụ về tệp tin quản lý nhân sự. Tệp tin này được sắp xếp theo một chìa khoá, thí dụ theo lứa tuổi. Các bản ghi dữ liệu riêng lẻ được tạo lập qua mũi tên xuất phát từ bậc số 0. Hình 4.9 Chìa khoá lớn nhất (con số lớn nhất) của một tệp tin (ô hình chữ nhật như hình 4.9) bắt đầu từ chỉ số của bậc số 0 được mô tả ở chỉ số của bậc số 1; chìa khoá lớn nhất của một đoạn tệp tin của bậc số 1được chỉ ra ở chỉ số của bậc số 2 Nếu người ta tìm bản ghi dữ liệu của một chìa khoá xác định x, do đó, người ta phải xác định khoảng xuất phát của chỉ số thứ 2, mà trong khoảng này tồn tại chìa khoá cần tìm, và xuất phát từ giới hạn trên của khoảng này, nhờ bậc sắp xếp, các tệp tin tuần tự dịch chuyển từ dưới lên cho tới khi người ta tìm thấy con số của bản ghi dữ liệu. Sau đó, người ta có thể đọc bản ghi dữ liệu mà nó được tạo ra có mục đích từ tệp tin. Nếu người ta thực nghiệm để mô tả cấu trúc logic cho các đối tượng vật lý - vết đường (track), hình trụ (cylinder), hình quạt (sector), do đó người ta có thể dễ dàng nhận được vấn đề để tái bản các bản ghi dữ liệu và để tổ chức bản ghi một cách mới mẽ. Thí dụ, việc tổ chức bản ghi với chìa khóa số 41 (xem hình 4.9) để tạo nên những vấn đề tương đối đầy đủ, vì mỗi hộp chữ nhật có khả năng lớn nhất là 3 chìa khoá và nó luôn luôn chứa đựng sẵn sàng 3 chìa khoá này. Do đó, chúng cần tới các cấu trúc trợ giúp cho việc tổ chức các dòng dữ liệu phát sinh khi thay đổi thường xuyên các dữ liệu và chúng đòi hỏi ngay một bản ghi mới và đầy đủ tệp tin. Đặc biệt, điều đó xuất hiện khi tổ chức dữ liệu với rất nhiều chìa khóa và thường hay thay đổi. Nếu chỉ số thư mục cho ta biết nội dùng thư mục của một hệ thống các tệp tin và với các chìa khoá này, chúng chứa đựng sự tham chiếu tệp tin (tên tệp tin, số tệp tin ) của bộ nhớ quảng đại. Đối với một hệ thống tệp tin hiệu nghiệm, nó thì khó thích hợp để tổ chức các chìa khóa thành các chỉ số thư mục theo sơ đồ khác nhau, mà sơ đồ này cho phép một sự tìm kiếm nhanh như là việc bổ sung vào hay lấy đi linh hoạt các chìa khóa. Thêm vào đó, chúng ta thực hiện 2 thay đổi. Đầu tiên chúng tag hi chép mỗi chìa khoá vào một nút của cây thư mục chỉ một lần; điều này tiết kiệm được không
  2. Bây giờ, chúng ta lưu ý rằng, chúng ta đã tạo ra được một cây mà lá cây đều ở trên một bình diện như nhau và số lượng các nhánh bị tách ra là như nhau. Do đó, chúng ta nhận thấy rằng, các hộp chìa khoá được điền đầy một cách thoả mãn với tối đa m nhánh và m-1 chìa khóa thì một nữa các nhánh [m/2] thực chất được sử dụng. Khi đó, ở gốc cây có thể xảy ra trường hợp: chỉ tồn tại 1 chìa khóa với 2 nhánh, tuy rằng con số thực chất là m nhánh. Một loại cây cho cấu trúc dữ liệu như vậy có tên gọi là cây B (B-Tree) do D.Comer đề xướng (1979). Xem hình 4.10 ở trên, ta nhận thấy: Về hình thức, cây B là một cây được diễn giải như sau: (1). Mỗi cành cũng như mỗi nút (tới gốc và lá ) được toả ra tối thiểu k = [m/2] và tối đa k=m cành. (2). Mỗi nút chứa đựng k-1 chìa khoá (hay chỉ số) (3). Tất cả các lá đều ở trên một bình diện. Chúng ta lưu ý rằng, những là nào không chứa đựng chìa khóa thì không được quan tâm. Một cây như vậy được gọi là cây bậc m. Người ta lưu ý rằng, với tổng số chìa khóa ở trên cây là N thì chúng ta có N+1 lá ở bậc thấp nhất. (Vì sao? sẽ được giải thích như dưới đây). Cây B có thể đi qua một cách nhanh chóng: Gốc cây có tối thiểu hai cành và mỗi cành trong bậc kế cạnh lại có tối thiểu [m/2] cành, do vậy, ở bậc kế n tồn tại tối thiểu một số cành là: 2.[m/2].[m/2] = 2.[m/2]n-1. (4.1) Cho nên, đối với số lượng các bậc cần dùng (gọi là dãy tuần tự tìm kiếm) với N chìa khoá và N+1 lá cây thì sẽ dẫn tới điều kiện sau đây: N+1≥ [m/2]n-1 (4.2) Hay: log[m/2](N+1)/2 ≥ n-1 (4.3) Trong đó, người ta gọi N: số chìa khoá hay số lá cây; n: số bậc; m: số cành cây. Điều đó đã đem lại một sự tiết kiệm thời gian rất nhiều, thí dụ: khi m=200 và N=1,98.106 thì theo điều kiện (4.3) chúng ta cần tới: 6 3 n-1 <= log100(0,99.10 ) = log100(0,99) +log100(100 )< 3. Hay : 3≥ n-1 Để thoả mãn bất phương trình cuối cùng, người ta nhận thấy vế trái của nó chỉ có thể là n-1 =2; khi đó bậc tối đa của cây B cho ví dụ này là n=3. Tóm lại, với chìa khóa đã cho và bậc tối đa của cây đã xác định, tệp tin sẽ được tìm thấy một cách dễ dàng! Điều đó cho thấy các cây B có khuynh hướng tự làm thật thấp xuống khi số lượng điều vào các dữ liệu gia tăng lớn lên. Có rất nhiều hình thái khác nhau của cây B, bằng cách, người ta có thể chọn cho mỗi bậc giá trị m khác nhau. Về nguyên tắc, điều đó không làm thay đổi thuật toán, mà nó chỉ là vấn đề dẫn xuất cấu trúc cây. Sau đây, chúng ta muốn khảo sát một khả năng quan trọng khác, để làm gia tăng ý nghĩa thực tiễn: nó được các hệ điều hành và các ngân hàng dữ liệu áp dụng một cách rộng rãi. Ý tưởng cơ bản để cải tiến cấu trúc cây được đơn giản nhờ lý thuyết cây B là ở chỗ: không chỉ sử dụng các hộp đầy chìa khóa (còn gọi là các phân đoạn), mà còn chia nhỏ một phân đoạn thành hai phân đoạn mới khi có các bản ghi dữ liệu bổ sung, và còn phản ảnh các thay đổi trong chỉ số của bậc kế cạnh. Các phân đoạn
  3. Khi việc điền vào bắt đầu, các danh sách được sắp xếp theo chỉ số của bản ghi, xem chìa khóa 1 và 2 (hình 4.12 ở trên). Tuy nhiên, người ta cũng có thể sắp xếp theo chỉ số các giá trị tăng hay giảm của các chìa khóa, do đó, cấu trúc phân nhánh ở trong hình 4.12 thực ra vẫn chưa rõ ràng. Điều đó được chỉ ra với danh sách các bản ghi đối với chìa khóa m (thí dụ trong hình 4.12 là 1, 3, 2, 6, 5, 8). Nếu chúng ta kết hợp tất cả các bộ chỉ thị của một chìa khóa trong chỉ số bắt đàu của tệp tin và không viết chúng vào trong các bản ghi dữ liệu, do đó, điều này được biểu thị là tệp tin được đảo ngược: Khái niệm đảo ngược được rút ra từ viện chứng, rằng, chúng ta không khai thác giá trị chìa khóa từ bản ghi, ngược lại, bản ghi được khai thác từ chìa khóa. Các tệp tin đảo ngược thích hợp đặc biệt tốt đối với việc đọc chọn có quan hệ với một chìa khóa xác định. Một sự thực thi hiệu nghiệm cách tổ chức tệp tin như cấu trúc vừa nêu ở trên được thực hiện ở trong hệ điều hành các máy tính lớn. Từ lý do này, hệ điều hành Unix với tư cách là một hệ điều hành máy tính đứng vững lâu dài đối với các áp dụng về ngân hàng dữ liệu; vì trong các chương trình ứng dụng, người ta không cần thiết phải tạo lập trên những tác vụ cao hơn. Các lớp trung gian giữa các tác vụ liên hiệp (complex) và cơ chế đơn giản của các hàm tuỳ chọn ReadFile() và WriteFile() của hệ điều hành phải được mỗi người sử dụng tự viết lấy, mà với điều đó, sự cảnh giới của ngân hàng dữ liệu che phủ lên hệ điều hành Unix với mức độ cao. Trong khi đó, sự tư duy kiểu này còn có vai trò đáng kể trong nhiều áp dụng đặc biệt, vì những bộ vi xử lý với ấn bản mới có tốc độ truy cập nhanh và vì các ổ đĩa đời mới đã làm cân bằng tổn hao của một lớp trung gian rất nhiều. 4.4.5. Các tệp tin được ảnh xạ bộ nhớ (memory mapping files) Các tệp tin với việc truy cập tuỳ chọn thường được làm việc mạnh mẽ trên bộ nhớ chính (RAM). Người ta có thể nghiên cứu tiếp sự phân tích như sau: Người ta có thể xem xét các tệp tin ở trên bộ nhớ quảng đại như là một sự kế tục của bộ nhớ chính trên bộ nhớ quảng đại. Cho nên, điều đó đặt ra, phải thực hiện bước tiếp theo, và một cách đúng mức (trước sau như một) phải tái tạo một sự kết nối trực tiếp một tệp tin với một khoảng của bộ nhớ chính, mà tệp tin được tách chia thành những khoảng có chiều dài bằng một trang. Khi đó, người ta gọi là tệp tin ảnh xạ bộ nhớ; tương tự, bộ nhớ cũng được phân chia thành các trang. Một kiểu kết nối như thế sẽ đạt được bởi gọi hệ thống; trong đó, các trang của một tệp tin được ảnh xạ như là một sự thay thế các trang bộ nhớ chính ở trong không gian địa chỉ ảo của một tiến trình. Hình 4.13 minh hoạ điều này một cách đầy đủ. Việc thực thi một cơ chế như vậy thì tương đối đơn giản: Khi một miền mà trên đó các trang của một tiến trình được nạp, do đó, miền của tệp tin được chỉ ra ở trên bộ nhớ quảng đại. Điều đó, mang lại những lợi thế khác nhau như sau: + Độ nhanh nhạy:
  4. tệp tin này còn có thể được xử lý một cách trực tiếp bởi nhiều tiến trình. Đối với việc làm đồng bộ các kiểu truy cập này, không có chức năng đặc biệt xem xét, mà chỉ có việc sử dụng bình thường các cờ hiệu. 4.4.6. Các tệp tin đặc biệt (special files) Có những cơ chế khác nhau của hệ điều hành, mà với sự trợ giúp của hệ thống tệp tin, các cơ chế này có thể được chuyển đổi một cách hài hoà; mà không cần phải lý giải hay tạo lập những tệp tin đích thực. Một trong những phương pháp mở rộng nổi tiếng nhất của hệ điều hành Unix là việc mô hình hóa các thiết bị vật lý như những tệp tin đặc biệt. Mỗi cái tên của một tệp tin được thu xếp là một thiết bị vật lý; dĩ nhiên, các tệp tin này được biểu thị với trạng thái của một tệp tin đặc biệt. Tất cả các việc truy cập và các thay đổi trạng thái đối với tệp tin biểu trưng này (symbol file) đều có tác dụng trực tiếp lên thiết bị, chứ không phải tác dụng lên tệp tin. Nếu tệp tin được viết lên một thiết bị như thế, do đó, khi thực hiện, tệp tin sẽ được dịch chuyển tới thiết bị (chẳng hạn tới một thiết bị đầu cuối nào đó) và khi đó, chúng được thể hiện trên màn hình. Nếu một tiến trình mở tệp tin đặc biệt của thiết bị đầu cuối để đọc, do đó, nó sẽ cảm nhận tất cả các ký tự được viết trên bàn phím. Lợi ích của việc mô hình hóa như vậy nằm trong những điều có thật, rằng một mặt, nó đã tạo ra khả năng cho người sử dụng truy cập trực tiếp và hiệu quả lên các tính chất vật lý của thiết bị; mặt khác, các cơ chế quản lý và bảo vệ của hệ điều hành hoạt động rất hiệu quả; và do đó, việc truy cập được điều chỉnh và điều khiển một cách hợp lý. Tệp tin đặc biệt ở Unix: Trong hệ điều hành Unix, có một thư mục tồn tại với đường dẫn /dev; ở đó, các tệp tin tồn tại với các thiết bị khác nhau. Có hai kiểu tệp tin thiết bị: Loại thứ nhất là các tệp tin tuần tự, gọi một cách đầy đủ là các tệp tin đặc biệt hướng ký tự (character oriented special files); chúng được bổ sung cho tất cả các thiết bị hướng ký tự như các thiết bị đầu cuối, các ổ đĩa từ tính, máy in Loại thứ hai là các tệp tin tuỳ chọn, gọi đầy đủ là các tệp tin đặc biệt hướng tổng thể (block oriented special files ); khi đó, những khoảng bộ nhớ bấy kỳ (block) có thể được xem là các tuỳ chọn, thí dụ các ổ đĩa cứng, các đĩa mềm Mỗi một loại tệp tn đặc biệt được tạo ra bởi sự trợ giúp của gọi hệ thống mknod() và ở tại các gọi hệ thống close(), read(), write() tệp tin này thích hợp cho các thủ tục đặc biệt, mà các thủ tục này lại được các bộ kích thích thiết bị của hệ điều hành sử dụng. Thí dụ, với đường dẫn /dev/tty, các ký tự được xuất ra và được đọc trên thiết bị đầu cuối. Người ta lưu ý rằng, với cơ chế vừa nêu, một thiết bị như thế có thể được vay mượn dưới những tên tệp tin đặc biệt khác nhau. Thí dụ, một ổ đĩa từ tính có thể được coi như một tệp tin đặc biệt, chẳng hạn tệp tin tuần tự liên tục. Hoặc giả, dưới một cái tên khác, người ta có thể coi thiết bị này như là một tệp tin đặc biệt
  5. liệt kê vào; và không gian còn lại để ghi tiếp các tệp tin. Một tệp tin thì được viết liên tục với nhau trong một đoạn. Ý tưởng vừa nêu trên phát triển theo thời gian, trong đó mỗi tệp tin chiếm một vị trí của đĩa từ và các thư mục là sự khái quát các ngăn xếp với các dãy ở trong đĩa từ. Vì ý tưởng này thì quá cứng nhắc để thay đổi tệp tin, do đó, nó chỉ được sử dụng để thu xếp chỗ cho nhiều tệp tin nhỏ (gọi là các đối tượng) ở trong một tệp tin lớn (gọi là thư viện các tệp tin). 4.5.2. Biểu diễn bộ nhớ kiểu danh sách Việc quyết định cho một khoảng bộ nhớ liên tục là ở chỗ: bộ nhớ phải được phân ra những khoảng có độ lớn bằng nhau (block) và tất cả các block của một tệp tin phải được kết nối trong một danh sách. Ưu điểm của phương pháp này là ở chỗ, tại một thư mục hỏng (bị xoá nhầm lẫn ) được biểu thị gấp đôi và các thông tin tệp tin (tên, các quyền truy cập ) được chứa đựng ở đầu tệp tin. Nhược điểm của phương pháp này là việc truy cập tệp tin kém hiệu nghiệm: Nếu người ta muốn đọc block số 123, do đó, người ta phải đọc trước đó tất cả 123 blocks để có thể lướt qua danh sách cho đến block số 123. Hình 4.14 chỉ ra một phương pháp như thế. Hình 4.14 4.5.3. Biểu diễn bộ nhớ được biểu thị qua chỉ số tập trung Người ta có thể tránh được sự bất lợi của kiểu danh sách tệp tin, bằng cách, người ta không phân bổ trong môi trường bộ nhớ các thông tin về dãy tuần tự số khối cũng như danh sách các khối liên tục với nhau, mà người ta kết hợp chúng trong một khối tập trung. Phương pháp này được gọi là cấu trúc chỉ số tập trung, nó chính là một danh sách, mà trong đó, mỗi sự điền vào chứa đựng số của khối tiếp tục trên đó. Hình 4.15 Bảng cấp phát các tệp tin (FAT) ở MS-DOS: Với hệ điều hành MS-DOS, mỗi đĩa từ được phân chia thành nhiều cung đoạn (sectors), mỗi sectors có độ lớn khoảng 512 Byte. Bắt đầu là sector số 0 được bố trí cho cung đoạn khởi động (bootstrap-sector), còn bảng cấp phát tệp tin (file allocation table: FAT) được bố trí các sector số 1 đến số 5; các bản sao bảo vệ tồn tại ở các sector số 6 đến số 10. Bảng FAT thì bao gồm các sự điền vào với chiều dài 12 bits hay 3 số thập lục phân với các giá trị 000 H tới FFF H, cho nên, bảng FAT có một không gian lớn nhất 512*5 = 2560 Byte ứng với khoảng 1706 sự điền vào. Mỗi sự điền vào thì tương ứng một đơn vị bộ nhớ của đĩa từ. Mỗi đơn vị bộ nhớ được gọi là một sluster (tức một cụm sector) ứng với 1024 Byte, do đó, một
  6. 4.5.4. Biểu diễn bộ nhớ biểu thị chỉ số phân bổ Một quyết định quan trọng để lựa chọn tệp tin chỉ số tập trung đối với bộ nhớ quảng đại thì bao gồm việc dẫn ra một danh sách chỉ số riêng lẻ đối với mỗi tệp tin và danh sách này phải được lưu trữ trong một block, hãy so sánh trong hình 4.16 ở dưới. Nếu chỉ có số tệp tin phù hợp được làm hài lòng thực thụ, do đó, khối chỉ số (index block) của nó sẽ phải được hoàn trả lại. Hình 4.16 Tất nhiên, các danh sách chỉ số sẽ dài hơn, khi đó, các tệp tin thuộc danh sách đó cũng dài hơn. Bấy giờ, trong các hệ thống tệp tin đang tồn tại, người ta lưu ý rằng, có rất nhiều tệp tin tồn tại với vài block và cũng có ít tệp tin tồn tại trong nhiều block. Với lý do này, người ta có thể dẫn giải ra một block chỉ số chính, mà đối với hầu hết các tệp tin, block này đã đạt yêu cầu. Đối với một vài tệp tin cần tới nhiều không gian cho chỉ số, chúng ta phải đặt vào một block chỉ số tiếp theo,mà địa chỉ logic của nó đứng ở cuối danh sách chỉ số. Nếu các tệp tin quá lớn, thì điều xẩy ra rất chậm, vì khi đó, tất cả các block chỉ số phải được đọc một cách tuần tự vào đĩa từ để tìm kiếm địa chỉ vật lý của block cần tìm. Điều đó nhằm mục đích để tổ chức một cách hệ thống các danh sách chỉ số đã được dẫn ra, và do đó, nhằm tăng tốc độ chuyển đổi (speed of translation) các địa chỉ logic của tệp tin tới các địa chỉ vật lý của thiết bị. Hình 4.17 ở dưới đây sẽ làm sáng tỏ nguyên tắc đã được trình bày trong mục 3.3 ở chương trước về chuyển đổi nhiều bậc từ không gian địa chỉ ảo thành không gian địa chỉ vật lý. Hình 4.17 4.5.5. Thực thi hệ thống tệp tin ở trong Unix Hệ điều hành tiếng tăm nhất sử dụng phương pháp vừa trình bày ở trên, đó là hệ điều hành Unix. Ở đây, trong những ứng dụng, một sự biến đổi đặc biệt được thử nghiệm để giữ cố địn những thông tin xác đáng đối với các tệp tin ngắn cũng như dài ở trong một block chỉ số. Về điều này, thì nút chỉ số đầu tiên (first index-node) được tạo bởi một phần khái quát, mà trong đó chứa đựng các tên, các địa chỉ đầu tiên của các block dữ liệu, và các địa chỉ của một cây chuyển đổi gián tiếp một bậc, hai bậc và ba bậc. Hình 4.18 chỉ ra một thí dụ tổng quát về điều đó. Nội dùng được chỉ ra ở trên của một nút chỉ số đã được tu chỉnh trong các hệ thống cụ thể và được mở rộng bởi các sự biểu thị thực chất ở bên trong, thí dụ ở Unix System V, với các thông tin cờ hiệu để ngăn hãm tệp tin, chúng đã mở rộng không gian cho bộ chỉ thị (khi không gian bộ nhớ còn trống, nút chỉ số đầu tiên sẽ được treo vào danh sách bậc hai kết hợp), các sự điền vào đối với bảng FAT với hàm mount() và các thông tin trạng thái đối với việc truy cập ở trong mạng máy
  7. + Khi các phần đĩa từ không thể sử dụng được, do đó, các thông tin quản lý (mà người sử dụng không thể nhìn thấy ) có thể được nạp trở lại trên các phần khác của đĩa từ. Mỗi volume chứa đựng một bảng trung tâm gọi là bảng tệp tin chủ (master file table: MFT), mà trong đó, các tệp tin hệ thống được ghi chép rất đầy đủ. Hình 4.19 ở dưới đây cho thấy, chính nó là một tệp tin bao gồm tất cả các dữ liệu về các thư mục cũng như các thông tin về việc tự khởi động của hệ thống (bootstrap). Tất cả 16 tệp tin đầu tiên này được giữ chặt và tạo thành các tệp tin hệ thống của hệ điều hành Windows NT (NT file-system: NTFS). Tệp tin 0 Bảng tệp tin chủ (MFT) Tệp tin 1 Bản sao bảo vệ bảng MFT đối với các tệp tin hệ thống, định vị đĩa từ. Tệp tin 2 Tệp tin logic: Các tác vụ thay đổi cấu trúc NTFS, được biểu thị ở đây và đảm bảo các hoạt động chuyển đổi nhân tử. Tệp tin 3 Tệp tin volume: Các thông tin trạng thái của volume như tên, ấn bản Nếu Bit corrupted được đặt thì chương trình chkdsk phải được thực hiện; chương trình này kiểm tra hệ thống tệp tin thường trú và sửa chữa lỗi đã được khẳng định. Tệp tin 4 Bảng định nghĩa thuộc tính: Ở đây biểu thị tất cả các kiểu thuộc tính tồn tại ở trong volume, như trạng thái Tệp tin 5 Thư mục gốc: Tên của thư mục gốc, thí dụ ký tự “\” Tệp tin 6 Tệp tin bitmap: Bảng che phủ của đơn vị bộ nhớ volume (sluster), xem thư mục 3.1.1 Tệp tin 7 Tệp tin boot: Tệp tin khởi động này được tạo ra nhờ chương trình format và chứa đựng mã bootstrap của Windows NT và địa chỉ vật lý của tệp tin MFT Tệp tin 8 Tệp tin bad cluster: Thư mục của colume cluster không thể sử dụng Tệp tin 9 Tệp tin 16 Các tệp tin của người sử dụng bình thường và các thư mục Hình 4.19. Dãy tuần tự của 16 tệp tin đầu tiên của hệ thống các tệp tin (NTFS) ở Windows NT Cấu trúc logic của một volume được tạo thành như sau: Cấu trúc dữ liệu trung tâm của một hệ thống tệp tin là một bảng tệp tin chủ (master file table: MFT); bảng này đóng vai trò như một nút đặc biệt ở trong Unix. Bảng MFT chứa đựng một sự điền vào đối với mỗi tệp tin và mỗi thư mục. Sự điền vào này bao gồm dãy tuần tự các thuộc tính của tệp tin. Mỗi thuộc tính có thể hoặc tồn tại một cách đầy đủ, gọi là thuộc tính thường trú (resident atribute), hoặc là, nếu thuộc tính này quá dài (thí dụ các dữ liệu riêng lẻ tồn tại như là một thuộc tính bình thường), thêm vào đó, sự tham chiếu tới các block bộ nhớ tiếp theo (còn gọi là các cluster) được biểu thị là “runs”. Mỗi thuộc tính có một sự kéo căng hai đầu (header); bên cạnh sự biểu thị “resident” (thường trú ) hay “nonresident” (không thường trú), sự kéo căng này còn chứa đựng sự bắt đầu và cả chiều dài thuộc tính trong khi điền vào tệp tin. Nếu thuộc tính là không thường trú, do đó, nó chứa đựng sự bắt đầu và chứa đựng cả chiều dài của các khối bổ sung. Thêm vào đó, số tương đối của các khối 0 N, gọi là số của các cluster ảo (virtual cluster number: VCN), sẽ được biểu diễn ở trong tệp tin như là việc sắp xếp chúng từ số của cluster ảo thành số
  8. giờ, nó tồn tại một kết nối quay vòng. Bạn hãy thử nghiệm xoá thư mục. Test từ đường dẫn gốc. Bạn đạt được cái gì ? 4.6.2. Các bài tập về tên tệp tin và thư mục Bài tập 4.2. Về đổi tên tệp tin Ở ví dụ đổi tên file, giải thuật cho Windows NT được mô tả để đổi một tên tệp tin dài thành tên ngắn và rõ ràng. a). Tên các tệp tin có kích cỡ bao nhiêu để có thể mã hóa thành một tên ngắn và rõ ràng với 8 ký tự ? Với lưu ý: các ký tự của phần tên chính không được ít hơn 6. b). Bạn có thể thay đổi sơ đồ như thế nào để mã hóa một số lượng lớn các tên tệp tin dài thành tên tệp tin rõ ràng với 8 ký tự theo mã ASCII ? Bạn hãy suy nghĩ vì sao các việc thực thi đã không chọn khả năng này ? Bài tập 4.3. Về tên đường dẫn Nhược điểm và ưu điểm của tên đường dẫn tương đối với tên đường dẫn tuyệt đối là gì ?. Ở đâu và khi nào người ta có thể thay thế tên đường dẫn nào cho phù hợp ? Bạn hãy lý giải điều này với sự trợ giúp của một hệ thống biên dịch! Bài tập 4.4. Về quản lý tệp tin hướng đối tượng Giả sử người ta cho phép việc quản lý tệp tin trong Unix một cách hướng đối tượng. Những phương pháp và những thuộc tính nào là cần thiết đối với một đối tượng thư mục và đối với một đối tượng tệp tin ở trong hệ điều hành Unix ? Bài tập 4.5. Về danh sách điều khiển truy cập Nhược điểm và ưu điểm của danh sách điều khiển truy cập là gì ? Khi điều đó được người sử dụng thiết đặt cho tất cả các tệp tin. 4.6.3. Các bài tập về các chức năng tệp tin Bài tập 4.6. Về file mở Một hệ điều hành có thể thực hiện các tác vụ tệp tin trên hai loại khác nhau: + Bình thường để truy cập tệp tin, trước hết người sử dụng phải mở tệp tin; + Hoặc điều này xảy ra một cách tự động khi truy cập tệp tin. Ở trường hợp thứ nhất, một sự truy cập tệp tin được mô tả như sau: open() read() I/O-Ops Close()