GIÁO TRÌNH HỆ ĐIỀU HÀNH UNIX - LINUX - Trang 47

4
6

Chúng ta xem xét một số thuật toán làm việc với inode.

Thut toán truy nhp ti inode (iget)

Nhiều tình huống đòi hỏi thuật toán iget, chẳng hạn như, một quá trình mở một file mới

hoặc tạo một file mới v.v.. Thuật toán iget cấp phát một bản in-core inode đối với một số
hiệu inode. Tuy nhiên, trong trường hợp chưa có bản sao in-core inode thì dể có nội dung
của nó cần phải đọc được nội dung của inode đó và cần định vị khối dữ liệu chứa inode đã
cho. Công thức liên quan đến khối đĩa từ chứa inode để có thể đọc vào bộ nhớ trong như
sau:

Chỉ số khối chứa inode = (số hiệu inode - 1) / (số lượng inode trong một khối nhớ)

+ chỉ số khối nhớ đầu tiên chứa danh sách inode trên đĩa.

Sau khi đã đọc khối đĩa chứa inode vào bộ nhớ trong, để xác định chính xác vị trí của

inode, chúng ta có công thức sau:

Byte vị trí đầu tiên = ((số hiệu inode - 1) mod (số lượng inode trong một khối

nhớ))*độ dài một inode

Ví dụ, nếu như mỗi inode đĩa chiếm 64 bytes, mỗi khối đĩa chứa 8 inode đĩa thì inode

số 8 sẽ bắt đầu từ byte thứ 448 trên khối đĩa đầu tiên trong vùng danh sách các inode.
Để ý rằng, khi làm việc với một hệ thống file thì super block của nó luôn có mặt trong bộ
nhớ trong để hệ thống có những thông tin làm việc. Chú ý rằng, trong super block có một
danh sách các inode rỗi (trên nó) và một danh sách các khối rỗi.

Thuật toán iget nhận một inode để cho nó tích cực và điều đó tùy thuộc vào một số tình

huống sau đây:

- Nếu inode không tồn tại trong vùng đệm mà lại không thuộc danh sách các

inode rỗi trên super block thì hệ thống phải thông báo một lỗi đã đưọc gặp.
Lỗi này xảy ra do yêu cầu một inode không còn đủ vùng đệm làm việc với file
nữa (tương ứng với trường hợp trong MS-DOS thông báo: too many files
opened),

- inode đã có trong vùng đệm các inode trên hệ thống file (đã có in-core inode).

Trong trường hợp này xử lý theo hai bước:

+

inode tương ứng đã bị khóa bởi một quá trình khác: lúc đó phải đợi cho

đến khi quá trình trước đây không khóa inode nữa. Sau khi được tháo
khóa inode có thể trở thành tích cực hoặc rỗi,

+

Nếu inode ở danh sách các inode rỗi thì loại bỏ nó khỏi danh sách này

bằng cách đặt inode sang tích cực.

- inode không tồn tại trên vùng đệm tuy nhiên danh sách các inode rỗi khác

rỗng. Khi danh sách các inode này khác rỗng, có nghĩa là có những inode
không có giá trị: loại bỏ nó và đặt inode mới vào thay thế.

Thut toán iput loi b inode

Thuật toán iput có chức năng đối ngẫu với thuật toán iget: cần tháo bớt sự xuất hiện của

một inode, chẳng hạn khi chương trình thực hiện thao tác đóng file.

Khác với trường hợp thuật toán iget, thuật toán iput không nảy sinh tình huống sai sót.
Trong thuật toán này, khi một quá trình không làm việc với một file được liên kết với

một inode nữa thì một số tình huống xẩy ra:

- Hệ thống giảm số lượng file tích cực đi 1,
- Nếu số lượng file tích cực là 0 thì:

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.