Nội dung cần học
Bài 7. Linux file system
Ngơ Duy Hịa – KHMT - CNTT
•
•
•
•
•
•
Các khái niệm cơ bản.
Các loại filesystem cơ bản.
Virtual Filesystem.
File I/O.
File standard library.
…
File & Inode
1. Các khái niệm cơ bản
• Trong Unix/Linux: 1 file ↔ 1 Inode.
• Cấu trúc Inode tương tự nhau,nhưng phụ
thuộc vào phiên bản OS.
• Dữ liệu file được xác định thơng qua địa
chỉ các block. Trong 1 Inode:
– 10 (ufs) hoặc 12 (ext2) địa chỉ trực tiếp.
– 3 địa chỉ kế tiếp tương ứng với 3 cấp địa chỉ
gián tiếp.
Tổ chức dữ liệu theo chỉ mục
Inode – Index Node
1
Quản lý bộ nhớ trống
Dùng danh sách liên kết & bảng chỉ mục
• Dữ liệu trong HDD được chia thành các khối
(block data), địa chỉ các block này là 1 số 4 byte.
• File cũng được chia thành các khối dữ liệu và
được sắp đặt khơng liên tục trong HDD.
• Có 3 cách quản lý bộ nhớ trống (các địa chỉ
block chưa sử dụng):
– Dùng danh sách liên kết.
– Dùng bảng chỉ mục.
– Dùng vector bitmap.
Kết hợp 2 phương pháp trên
Dùng vector Bitmap
Disk partitions
2. Các loại filesystem cơ bản
2
Super blocks
Cấu trúc phân vùng
•
•
•
•
Boot block: chứa thơng tin khởi động.
Super block: chứa thông tin về phân vùng.
Inode List: danh sách Inodes trong filesystem.
Data List: danh sách các khối blocks dữ liệu.
•
•
•
•
•
•
Kích thướng phân vùng.
Số blocks dữ liệu chưa sử dụng.
Danh sách các blocks dữ liệu chưa sử dụng.
Kích thước danh sách Inodes.
Số Inodes chưa sử dụng.
Danh sách các Inodes chưa sử dụng.
List free inodes & free blocks
s5fs directory
• Directory la 1 bảng các thành phần (entry table).
• Mỗi entry table đặc trưng cho 1 file:
– File inode (2 bytes).
– File name (14 bytes).
3
Kiến trúc FFS
Data layout on hard disk
track2
track1
track0
Sector 0
Sector 1
• Đĩa được chia thành các phân vùng
(partition) là tập các cylinder liên tiếp.
• FFS chia phân vùng thành các nhóm
(group) các cylinder liên tiếp.
• Trong mỗi nhóm đều có:
– Super block.
– Free data block & Free inode Bitmap.
– Fixed inodes table.
– Data blocks table.
Group cylinder
Các chức năng mở rộng
•
•
•
•
head 0
Cylinder 0
platters
head 1
Cylinder 1
head 2
Cấu trúc thư mục trong FFS
Ext2 file system
Hỗ trợ file name với 255 ký tự.
Hỗ trợ làm việc với symbolic link.
Hỗ trợ file locking
Hỗ trợ file rename.
4
Virtual File System
Nguyên tắc làm việc
• Khi 1 file được u cầu dữ liệu Ỉ giá trị inode
của file được lưu trữ trong bộ nhớ chính trong 1
in-core inode (vnode).
• Cấu trúc vnode có các thành phần cơ bản sau:
– v_data: trỏ đến dữ liệu trong filesystem thực (chính là
inode của file).
– v_op : thao tác thực hiện với dữ liệu
– v_vfsp: con trỏ đến filesystem thực mà chứa file đang
được yêu cầu dữ liệu.
–…
Một số đặc điểm
3. File I/O
• Unbuffered I/O functions.
• Các hàm system call làm việc với file
thông qua file descriptor:
– Standard input: STDIN_FILENO.
– Standard output: STDOUT_FILENO.
– Standard error: STDERR_FILENO.
• Sử dụng header:
– <unistd.h>
– <fcntl.h>
5
Các hàm làm việc với file
6
Các hàm làm việc với file (tiếp)
Các hàm làm việc với Inode
7
Đặc điểm
• Sử dụng con trỏ FILE*
4. Standard Library
Các hàm cơ bản
Thank you!
8