Bài giảng 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.
c là nó bao gồm 48bit cho số tệp tin và 16bit cho số tuần tự. Số tuần tự sẽ được gia tăng theo mỗi khi xoá tệp tin thuộc số tệp tin, do đó, người ta có thể phân biệt giữa sự tham chiếu tới các số tệp tin trung gian đã bị xoá và một tệp tin hiện hành, nếu chúng tham chiếu tới các số tệp tin tương tự. Ưu điểm của ý tưởng này là cung cấp cho người ta tương đối đầy đủ tất cả các thông tin về tệp tin: + Cơ cấu truy cập tệp tin thì kiên đình và đơn giản, kể cả các thông tin khởi động hệ thống; + Các thông tin về bảo vệ được tách bạch theo các thành phần quản lý, và với điều này, nó thì có thể thích hợp hơn ở các ứng dụng; + 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ố của cluster logic (logic cluster number: LCN). Hình 4.20 biểu diễn một sự điền vào như vậy. Những thuộc tính của tệp tin được giải thích một cách đầy đủ ở trong mục 4.3.2 ở trên. Nếu theo đó các block của bộ nhớ chỉ tồn tại toàn số 0, và nếu một thuộc tính chuẩn được biểu thị compress (nén lại) đối với tệp tin, do đó, các block trống của bộ nhớ sẽ không lưu trữ. Đáng lẽ là như vậy, nhưng khi đếm các cluster ảo, các khối cluster thích hợp sẽ được nhãy qua một cách đơn giản, do đó, ở trong dãy tuần tự VCN, các lỗ trống vẫn tồn tại. Hình 4.20************************************ Khi đọc các tệp tin, thì điều đó được các tệp tin hệ thống của Windows NT nhận biết và được đưa trở lại với các block khởi xướng là các số 0. Nếu các block của tệp tin nén không chứa đựng các số 0, do đó, một giải thuật nén tổng quát được đáp ứng; tuy nhiên, giải thuật này chỉ đạt được nén nhanh chứ không đạt được nén hiệu suất. Ở một thư mục, dòng dữ liệu bao gồm một chỉ số với tên tệp tin, mà bộ đệm của nó được tổ chức thành dạng cây B* (thí dụ các tệp tin hệ thống của hệ điều hành OS/2), xem mục 4.4.4 ở trên. Chỉ số này bao gồm 3 thành phần: phần thứ nhất là các tên được đánh chỉ số ở trong dãy tuần tự từ điển (gọi là chỉ số gốc: index root) và các chỉ dẫn của chúng; phần thứ hai là các bảng sắp xếp (VCN -> LCN) của các bộ đệm để cấp phát chỉ số (index allocation) cho các dữ liệu không thường trú; phần thứ ba là các bảng che phủ của các bộ đệm còn gọi là các bit ảnh xạ. Mỗi sự điền vào bao gồm số tham chiếu tệp tin, tên tệp tin, thời gian tạo lập và chiều dài tệp tin; tất cả những cái đó được bảng MFT sao chép lại ở tại đây. Tuy nhiên, một sự chi phí cho việc đồng bộ sẽ được bổ sung; chi phí này có lợi nhờ thời gian tìm kiếm ngắn hơn ở trong các thư mục. Tên tệp tin được đánh chỉ số ở trong dãy tuần tự từ điển. Mỗi tên tệp tin được chỉ dẫn trên một bộ đệm chỉ số và chứa đựng các sự điền vào với chỉ số nhỏ hơn. Một cây B* thường phát triển theo chiều rộng tốt hơn chiều sâu, vì nó cho phép các tác vụ tìm kiếm rất nhanh. Các bộ đệm bổ sung chứa đựng những chỉ dẫn tệp tin trong dạng đóng gói; ở lần sử dụng đầu tiên (mount) của tệp tin, cấu trúc dữ liệu phải được đóng gói ở trong bộ nhớ. Nhờ đó, một sự lưu trữ với khoáng 15 tên tệp trên mỗi bộ đệm với 2kB hay 4 cluster (khoảng 512 Byte cho mỗi cluster) là có thể. 4.6. Các bài tập về quản lý tệp tin 4.6.1.Các bài tập về tệp tin Bài tập 4.1. Về các thư mục cô lập Giả sử thư mục Test là thư mục gốc. Bạn hãy lập thư mục con của thư mục Test. Trên thư mục vừa thiết lập, bạn hãy tạo ra một kết nối cứng (hard link). Bấy 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() Trong trường hợp thứ hai, người ta chỉ việc truy cập tệp tin (I/O- Ops); sau đó, tệp tin được đóng lại khi chương trình kết thúc. Với hai cách nói trên, tồn tại những ưu điểm và nhược điểm nào ? Bài tập 4.7. Lệnh copy Mỗi hệ điều hành thông thạo một số lệnh để quản lý các tệp tin. Bạn hãy đặt mình vào vị trí một nhà thiết kế hệ thống để viết một lệnhh copy. a). Bạn hãy thực thi lệnh copy để sao một tệp tin của hệ điều hành với các chức năng thư viện về quản lý tệp tin (read, write...). b). Những thay đổi nào phải được lựa chọn đối với lệnh move ? Nếu đầu tiên đạt được việc copy, thì khi đó, tệp tin ở thư mục nguồn có bị xóa không ? Xin lưu ý: Bạn hãy suy nghĩ tới cơ chế bảo vệ ! c). Lệnh copy phải được mô tả như thế nào để sao chép toàn bộ thư mục kể cả các thư mục con ? Bạn hãy thực thi lệnh này xem ! Bài tập 4.8. Về xuất- nhập Tại sao trong Unix có sự khác nhau giữa xuất chuẩn và xuất lỗi chuẩn, nếu cả hai đều dẫn tới sự mặc định trên màn hình ? Bài tập 4.9. Thực hiện lệnh echo bởi thiết bị đặc biệt Cái gì sẽ xảy ra, nếu trong Unix bạn xuất ra một bài text với chương trình echo (dội lại) theo các đường dẫn dev/tty hay dev/null ? 4.6.4. Thực thi việc tổ chức tệp tin Bài tập 4.10. Về i-node Trong hệ điều hành Unix, các i-node chứa đựng 20 địa chỉ đối với các block dữ liệu, cũng như các địa chỉ của một block vô hướng của bậc đầu tiên, bậc 2 và bậc 3. Nếu một trong các block chứa đựng 256 địa chỉ ổ đĩa, thì tệp tin có thể sử dụng lớn nhất là bao nhiêu ? Với kích cỡ một block của ổ đĩa là 1 KB. Bài tập 4.11. Về quản lý việc lưu trữ các tệp tin Việc lưu trữ các tệp tin dẫn tới việc phân mảnh nhỏ ổ đĩa từ. Bạn hãy trình bày về việc phân mảnh nhỏ các vòng xuyến ở ngoài và ở trong gần tâm của đĩa từ ?
File đính kèm:
- HDH_chuong 4.pdf