Nội dung chính trong đề tài:I File-System Structure Cấu trúc hệ thống file II File-System ImplementationTriển khai hệ thống tệp III Directory Implementaion Triển khai thư mục IV Alloca
Trang 1Trường Đại học Kiến trúc Hà Nội
Đề tài: File-System Implementation
( Triển khai hệ thống tệp )
Giảng viên: Nguyễn Mạnh Hùng
Lớp: 21CN4 Nhóm: 6
Thành viên trong nhóm: Lê Văn Tuấn
Đới Mạnh Toan Nguyễn Hồng Thơm Phạm Hồng Nhung
Vũ Văn Sơn
Hà Nội, tháng 5 năm 2023
Trang 2Nội dung chính trong đề tài:
I File-System Structure (Cấu trúc hệ thống file)
II File-System Implementation(Triển khai hệ thống tệp)
III Directory Implementaion ( Triển khai thư mục )
IV Allocation Methods ( Phương pháp phân bổ tệp )
V Free-Space Management ( Quản lý không gian trống )
VI Eficiency and Performance ( Hiệu suất và hiệu năng )
VII Recovery ( Sự phục hồi )
VII
I
NFS ( Network File System )
Hệ thống tập tin thực thi
I, File-System Structure (Cấu trúc hệ thống file)
File system là các phương pháp và các cấu trúc dữ liệu mà một hệ điều hành sử dụng để theo dõi các tập tin trên ổ đĩa hoặc phân vùng Có thể tạm dịch filesystem
là một hệ thống tập tin Đó là các tập tin được tổ chức trên ổ đĩa Thuật ngữ này cũng được sử dụng để chỉ một phân vùng hoặc ổ đĩa được sử dụng để lưu trữ các tập tin hoặc loại hệ thống tập tin
File-System cung cấp quyền truy cập hiệu quả và thuận tiện vào đĩa bằng cách cho phép dữ liệu được lưu trữ, định vị và truy xuất dễ dàng
Trang 3cập vào các tệp một cách hợp lý.
• Metadata (Siêu dữ liệu): Siêu dữ liệu chứa thông tin về các tệp và thư mục trong
hệ thống tập tin, chẳng hạn như tên, kích thước, quyền truy cập, ngày tạo và ngày sửa đổi
Click
Cấu trúc hệ thống tập tin có thể thực hiện theo nhiều kiểu khác nhau, bao gồm:
• Single-Level Directory: Một cấu trúc đơn giản, chỉ có một thư mục duy nhất
• Two-Level Directory: Sử dụng hai cấp thư mục để tổ chức các tệp
• Hierarchical Directory: Sử dụng cấu trúc thư mục cây có nhiều cấp độ
• Acyclic-Graph Directory: Cho phép mỗi thư mục có nhiều thư mục cha và một tệp không thể thuộc cùng một thư mục
• General Graph Directory: Cho phép các mối quan hệ thư mục bất kỳ
Click
Hình ảnh hiển thị bên dưới mô tả chi tiết cách hệ thống tệp được chia thành các lớpkhác nhau:
Trang 4 Khi một chương trình ứng dụng yêu cầu một tệp, yêu cầu đầu tiên được chuyển đến hệ thống tệp logic Hệ thống tệp logic chứa dữ liệu Meta của cấu trúc tệp và thư mục Nếu chương trình ứng dụng không có các quyền cần thiết của tệp thì lớp này sẽ gây ra lỗi Hệ thống tệp logic cũng xác minh đường dẫn đến tệp.
Nói chung, các tệp được chia thành nhiều khối logic khác nhau Các tệp phải được lưu trữ trong đĩa cứng và được truy xuất từ đĩa cứng Đĩa cứng được chia thành các rãnh và rãnh khác nhau Do đó, để lưu trữ và truy xuất các tệp, các khối logic cần được ánh xạ tới các khối vật lý Việc ánh
xạ này được thực hiện bởi mô-đun Tổ chức tệp Nó cũng chịu trách nhiệmquản lý không gian trống
Sau khi mô-đun tổ chức tệp quyết định khối vật lý mà chương trình ứng dụng cần, nó sẽ chuyển thông tin này đến hệ thống tệp cơ bản Hệ thống tệp cơ bản chịu trách nhiệm đưa ra các lệnh cho điều khiển I / O để tìm nạp các khối đó
Các điều khiển I / O chứa các mã bằng cách sử dụng nó có thể truy cập vào đĩa cứng Những mã này được gọi là trình điều khiển thiết bị Các điều khiển I / O cũng chịu trách nhiệm xử lý các ngắt
Các lớp của hệ thống file
Trang 5II, File-System Implementation(Triển khai hệ thống tệp)
1, Triển khai hệ thống tệp (File-System Implementation)
Là quá trình thiết kế và triển khai các thành phần và thuật toán cần thiết để quản lý
và tương tác với các tệp và thư mục trong hệ thống tệp
Click
Các cấu trúc trên đĩa và trong bộ nhớ được sử dụng để thực hiện hệ thống tệp này
và khác nhau tùy thuộc vào hệ điều hành và hệ thống tệp Sau đây là mô tả về một
số cấu trúc quan trọng:
- Khối điều khiển khởi động: Đây là một khối thông tin cần thiết để khởi động hệ điều hành từ ổ đĩa Nó tồn tại trên mỗi ổ đĩa và chứa thông tin khởi động Ví dụ: UFS sử dụng khối khởi động và NTFS sử dụng khu vực khởi động phân vùng
- Khối điều khiển âm lượng: Mỗi âm lượng (hoặc phân vùng) chứa thông tin chi tiết về nó, bao gồm kích thước, số lượng khối, và các khối miễn phí Nó cũng chứa
số lượng và vị trí của FCB (File Control Block) miễn phí và con trỏ FCB Ví dụ: UFS sử dụng siêu khối và NTFS lưu trữ thông tin này trong bảng tệp chính
- Cấu trúc thư mục: Cấu trúc thư mục được sử dụng để tổ chức các tệp trong hệ thống tệp Nó chứa thông tin về tên tệp và số inode (định danh duy nhất) liên kết với tệp đó Ví dụ: UFS lưu trữ thông tin này trong thư mục và số inode liên kết, trong khi NTFS lưu trữ nó trong bảng tệp chính
- FCB (File Control Block): Mỗi tệp có một FCB chứa thông tin chi tiết về tệp đó
Nó có một định danh duy nhất để liên kết với mục nhập thư mục tương ứng Ví dụ:NTFS sử dụng bảng tệp chính và cấu trúc cơ sở dữ liệu quan hệ để lưu trữ thông tin này
Trang 6Thông tin trong bộ nhớ được sử dụng để quản lý hệ thống tệp và cải thiện hiệu suấtthông qua bộ nhớ đệm Các loại cấu trúc trong bộ nhớ có thể bao gồm:
- Bảng gắn trong bộ nhớ: Chứa thông tin về từng âm lượng được gắn kết
- Bộ đệm cấu trúc thư mục trong bộ nhớ: Chứa thông tin thư mục của các thư mục được truy cập gần đây Đối với các thư mục có khối lượng được gắn kết, nó có thể chứa một con trỏ tới bảng âm lượng
- Bảng tệp mở toàn hệ thống: Chứa một bản sao FCB của mỗi tệp mở và các thông tin khác
- Bảng tệp mở cho mỗi quy trình: Chứa một con trỏ tới mục thích hợp trong bảng tệp mở toàn hệ thống và các thông tin khác
- Bộ đệm giữ các khối hệ thống tệp: Lưu trữ các khối hệ thống tệp khi chúng được đọc từ đĩa hoặc ghi vào đĩa
Click
2, "phân vùng" (partitions) và "gắn kết" (mounting)
Trong hệ điều hành, "phân vùng" (partitions) và "gắn kết" (mounting) liên quan đến việc quản lý không gian lưu trữ và truy cập vào các hệ thống tập tin trên ổ đĩa
Click
- Phân vùng: Một phân vùng là một vùng không gian được chia ra từ ổ đĩa vật lý để
tổ chức và quản lý dữ liệu trên hệ thống máy tính Khi ổ đĩa vật lý được phân vùng,
nó được chia thành các phân vùng riêng biệt, mỗi phân vùng có thể chứa một hệ thống tập tin riêng và được xử lý như một ổ đĩa độc lập Mỗi phân vùng có thể được định dạng với một hệ thống tập tin cụ thể như NTFS, FAT32 hoặc EXT4 tùy thuộc vào hệ điều hành và yêu cầu sử dụng
Trang 7- Gắn kết: Gắn kết là quá trình gắn kết một hệ thống tập tin vào cây thư mục hiện tại của hệ thống Khi một hệ thống tập tin được gắn kết, nó trở thành một phần của cây thư mục, cho phép người dùng và các ứng dụng truy cập vào nó và thao tác vớicác tệp và thư mục trong hệ thống tập tin đó Việc gắn kết được thực hiện thông qua lệnh hoặc giao diện người dùng của hệ điều hành và thường được thực hiện khikhởi động hệ thống hoặc khi cần truy cập vào một hệ thống tập tin bên ngoài như ổđĩa cắm ngoài hoặc mạng chia sẻ.
Click
Thông qua việc phân vùng và gắn kết hệ thống tập tin, hệ điều hành có thể quản lý
và sắp xếp không gian lưu trữ hiệu quả, cho phép người dùng và các ứng dụng truycập và làm việc với dữ liệu một cách dễ dàng và an toàn
Click
3, Virtual File Systems (Hệ thống file ảo)
Các cấu trúc và thủ tục dữ liệu được sử dụng để tách biệt chức năng gọi hệ thống
cơ bản khỏi các chi tiết triển khai Như vậy, hệ thống tập tin thực hiện bao gồm ba lớp chính, như được mô tả sơ đồ trong hình bên dưới đây
Click
Trang 8Lớp đầu tiên là giao diện hệ thống tệp, dựa trên open(), các lệnh gọi read(), write()
và close() và trên các bộ mô tả tệp
Click
Lớp thứ hai được gọi là lớp hệ thống tệp ảo (VFS).VFS có hai chức năng quan trọng:
1 Nó tách các hoạt động chung của hệ thống tệp khỏi việc triển khai chúng
bằng cách xác định giao diện VFS sạch Một số triển khai cho VFS
giao diện có thể cùng tồn tại trên cùng một máy, cho phép truy cập minh bạch với các loại hệ thống tệp khác nhau được gắn cục bộ
2 Nó cung cấp một cơ chế để biểu diễn duy nhất một tệp trong toàn bộ
mạng VFS dựa trên cấu trúc biểu diễn tệp, được gọi là vnode, chứa một chỉ định
số cho một duy nhất trên toàn mạng tài liệu (Các nút UNIX là duy nhất chỉ trong một hệ thống tệp duy nhất.) Tính duy nhất trên toàn mạng là cần thiết để hỗ trợ các
hệ thống tệp mạng Hạt nhân duy trì một cấu trúc vnode cho mỗi nút hoạt động (tệp hoặc danh mục)
Vì vậy, VFS (Virtual File System) phân biệt giữa các tệp cục bộ và tệp từ xa, và cũng phân biệt theo loại hệ thống tập tin của chúng
Trang 9VFS kích hoạt các hoạt động đặc biệt cho các hệ thống tệp cục bộ để xử lý các yêu cầu cục bộ, tuân theo các quy tắc và đặc điểm riêng của từng loại hệ thống tập tin Đối với các yêu cầu từ xa, nó gọi các thủ tục giao thức NFS (Network File
System) Việc xử lý tệp được thực hiện thông qua việc xây dựng các đối tượng vnode (virtual node) liên quan và chuyển chúng như đối số cho các thủ tục này
Click
Việc triển khai thư mục trong hệ điều hành có thể được thực hiện bằng cách sử dụng Hash Table và Danh sách liên kết đơn Hiệu quả, độ tin cậy và hiệu suất của một hệ thống tệp bị ảnh hưởng rất nhiều bởi việc lựa chọn thuật toán quản lý thư mục và cấp phát thư mục Có rất nhiều cách mà các thư mục có thể được thựchiện Nhưng chúng ta cần chọn một thuật toán thực thi thư mục phù hợp để nâng cao hiệu năng của hệ thống
Click
III, Triển khai thư mục
1, Triển khai thư mục bằng Danh sách liên kết đơn
Việc triển khai các thư mục bằng cách sử dụng danh sách liên kết đơn dễ lập trìnhnhưng tốn nhiều thời gian để thực hiện Ở đây chúng tôi thực hiện một thư mụcbằng cách sử dụng một danh sách tên tệp tuyến tính với các con trỏ tới các khối
dữ liệu
Trang 10Triển khai thư mục bằng danh sách liên kết đơn
Để tạo một tệp mới, toàn bộ danh sách phải được kiểm tra sao cho thư mụcmới không tồn tại trước đó
Thư mục mới sau đó có thể được thêm vào cuối danh sách hoặc đầu danhsách
Để xóa một tệp, đầu tiên chúng ta tìm trong thư mục có tên tệp cầnxóa Sau khi tìm kiếm, chúng tôi có thể xóa tệp đó bằng cách giải phóngkhông gian được phân bổ cho nó
Để sử dụng lại mục nhập thư mục, chúng tôi có thể đánh dấu mục nhập đó
là không sử dụng hoặc chúng tôi có thể thêm nó vào danh sách các thư mụcmiễn phí
Để xóa một danh sách liên kết tệp là lựa chọn tốt nhất vì nó tốn ít thời gianhơn
Click
Nhược điểm
Nhược điểm chính của việc sử dụng danh sách liên kết là khi người dùng cần tìmmột tệp, người dùng phải thực hiện tìm kiếm tuyến tính Trong thế giới ngày nay,thông tin thư mục được sử dụng khá thường xuyên và việc triển khai danh sáchliên kết dẫn đến việc truy cập tệp chậm Vì vậy, hệ điều hành duy trì một bộ đệm
để lưu trữ thông tin thư mục được sử dụng gần đây nhất
Click
2, Triển khai thư mục bằng Hash Table
Một cấu trúc dữ liệu thay thế có thể được sử dụng để thực hiện thư mục là HashTable Nó khắc phục những nhược điểm chính của việc thực hiện thư mục bằng
Trang 11danh sách liên kết Trong phương pháp này, chúng tôi sử dụng bảng băm cùngvới danh sách được liên kết
Ở đây, danh sách được liên kết lưu trữ các mục nhập thư mục, nhưng cấu trúc dữliệu băm được sử dụng kết hợp với danh sách được liên kết
Click
Trong bảng băm cho mỗi cặp trong cặp khóa-giá trị thư mục được tạo Hàm bămtrên tên tệp xác định khóa và khóa này trỏ đến tệp tương ứng được lưu trữ trongthư mục Phương pháp này giúp giảm thời gian tìm kiếm thư mục một cách hiệuquả vì toàn bộ danh sách sẽ không được tìm kiếm trong mọi thao tác Sử dụng cácphím, các mục trong bảng băm được kiểm tra và khi tệp được tìm thấy, nó sẽđược tìm nạp
Triển khai thư mục bằng bảng băm
Click
Nhược điểm:
Hạn chế chính của việc sử dụng bảng băm nói chung là nó có kích thước cố định
và sự phụ thuộc của nó vào kích thước Nhưng phương pháp này thường nhanh
Trang 12hơn so với tìm kiếm tuyến tính thông qua toàn bộ thư mục bằng cách sử dụngdanh sách được liên kết
IV, Phương pháp phân bổ tệp ( Allocation Methods )
Các phương pháp phân bổ xác định cách các tệp được lưu trữ trong các khối đĩa Có ba phương pháp phân bổ không gian đĩa hoặc tệp chính
Phân bổ liên tục
Phân bổ được liên kết
Phân bổ được lập chỉ mục
Ý tưởng chính đằng sau các phương pháp này là cung cấp:
Sử dụng không gian đĩa hiệu quả
Truy cập nhanh vào các khối tập tin
Tất cả ba phương pháp đều có những ưu điểm và nhược điểm riêng như được thảo luận dưới đây:
Click
1 Phân bổ liên tục
Trong sơ đồ này, mỗi tệp chiếm một tập hợp các khối liền kề trên đĩa Ví dụ: nếu một tệp yêu cầu n khối và được đặt khối b làm vị trí bắt đầu, thì các khối được
gán cho tệp sẽ là: b, b+1, b+2,……b+n-1 Điều này có nghĩa là với địa chỉ khối
bắt đầu và độ dài của tệp (về số khối được yêu cầu), chúng tôi có thể xác định cáckhối chiếm bởi tệp
Mục nhập thư mục cho một tệp có phân bổ liền kề chứa
Địa chỉ của khối bắt đầu
Chiều dài của phần được phân bổ
Tệp 'mail' trong hình dưới đây bắt đầu từ khối 19 với chiều dài = 6 khối Do đó,
nó chiếm 19, 20, 21, 22, 23, 24 khối.
Trang 13Thuận lợi:
Cả Truy cập Tuần tự và Trực tiếp đều được hỗ trợ bởi điều này Để truy cập trực tiếp, địa chỉ của khối thứ k của tệp bắt đầu tại khối b có thể dễ dàng nhận được dưới dạng (b+k)
Điều này cực kỳ nhanh vì số lượng tìm kiếm là tối thiểu do phân bổ liền kề các khối tệp
2 Phân bổ danh sách liên kết
Trong sơ đồ này, mỗi tệp là một danh sách liên kết của các khối đĩa không cần
phải liền kề nhau Các khối đĩa có thể nằm rải rác ở bất kỳ đâu trên đĩa.
Mục nhập thư mục chứa một con trỏ tới khối tệp bắt đầu và kết thúc Mỗi khối chứa một con trỏ tới khối tiếp theo được chiếm giữ bởi tệp
Tệp 'jeep' trong hình ảnh sau đây cho thấy các khối được phân phối ngẫu nhiên như thế nào Khối cuối cùng (25) chứa -1 chỉ ra một con trỏ null và không trỏ
Trang 14 Nó không hỗ trợ truy cập ngẫu nhiên hoặc trực tiếp Chúng tôi không thể truy cập trực tiếp vào các khối của tệp Một khối k của tệp có thể được truy cập bằng cách duyệt qua k khối một cách tuần tự (truy cập tuần tự) từ khối bắt đầu của tệp thông qua các con trỏ khối.
Con trỏ được yêu cầu trong phân bổ được liên kết phát sinh thêm một số chi phí
Click
3 Phân bổ được lập chỉ mục
Trong sơ đồ này, một khối đặc biệt được gọi là khối Chỉ mục chứa các con trỏ tới
tất cả các khối được chiếm giữ bởi một tệp Mỗi tệp có khối chỉ mục riêng Mục thứ i trong khối chỉ mục chứa địa chỉ đĩa của khối tệp thứ i Mục nhập thư mục chứa địa chỉ của khối chỉ mục như trong hình:
Trang 15Đối với các tệp rất lớn, một khối chỉ mục có thể không chứa được tất cả các con trỏ.
Các cơ chế sau đây có thể được sử dụng để giải quyết vấn đề này:
1 Lược đồ được liên kết: Lược đồ này liên kết hai hoặc nhiều khối chỉ mục
với nhau để giữ các con trỏ Sau đó, mỗi khối chỉ mục sẽ chứa một con trỏ hoặc địa chỉ của khối chỉ mục tiếp theo
2 Chỉ mục đa cấp: Trong chính sách này, một khối chỉ mục cấp độ đầu tiên
được sử dụng để trỏ tới các khối chỉ mục cấp độ thứ hai, khối này lần lượt trỏ tới các khối đĩa do tệp chiếm giữ Điều này có thể được mở rộng thành 3 cấp
độ trở lên tùy thuộc vào kích thước tệp tối đa
Trang 163 Lược đồ kết hợp: Trong lược đồ này, một khối đặc biệt được gọi là Inode (Nút thông tin) chứa tất cả thông tin về tệp như tên, kích thước, quyền hạn,
v.v và không gian còn lại của Inode được sử dụng để lưu trữ các địa chỉ Khối
đĩa chứa tập tin thực tế như trong hình bên dưới Một số con trỏ đầu tiên trong
Inode trỏ đến các khối trực tiếp tức là các con trỏ chứa địa chỉ của các khối
đĩa chứa dữ liệu của tệp Một vài gợi ý tiếp theo trỏ đến các khối gián
tiếp Các khối gián tiếp có thể là gián tiếp đơn, gián tiếp kép hoặc gián tiếp ba
lần Khối gián tiếp đơnlà khối đĩa không chứa dữ liệu tệp mà là địa chỉ đĩa của các khối chứa dữ liệu tệp Tương tự, các khối gián tiếp kép không chứa
dữ liệu tệp mà là địa chỉ đĩa của các khối chứa địa chỉ của các khối chứa dữ liệu tệp
V, Quản lý không gian trống
Quản lý không gian trống cho phép hệ thống tệp hiệu quả sử dụng không gian lưu trữ Nó giúp theo dõi các vùng không gian trống và cung cấp cách tổ chức để lưu trữ các file mới Quản lý không gian trống giúp tránh tình trạng xáo trộn trong việclưu trữ file Nó đảm bảo rằng các file được lưu trữ một cách tuần tự và giúp tránh
sự lãng phí không gian lưu trữ Vì thế Free-Space Management có 4 loại cấu trúc
dữ liệu để giải quyết từng trường hợp trong không gian lưu trữ
Bit Vector
Trong quản lý không gian tự do (Free-Space Management) của hệ thống lưu trữ, một Bit Vector (còn được gọi là Bitmap) là một cấu trúc dữ liệu được sử dụng để theo dõi trạng thái của các khối hoặc vùng không gian trong hệ thống lưu trữ.Mỗi Bit Vector thường tương ứng với một phạm vi không gian nhất định trong hệ thống lưu trữ, chẳng hạn như các khối dữ liệu hoặc các vùng tự do Mỗi bit trong Bit Vector đại diện cho trạng thái của một khối hoặc vùng tương ứng Thông