Hiển thị các file thiết bị khối (block) trong thư mục /dev ta dùng lệnh nào sau đây?

Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang HậuBỘ CÔNG THƯƠNGTRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HỒ CHÍ MINH[Industry University of Ho Chi Minh City – IUH]HỆ ĐIỀU HÀNHBÀI TIỂU LUẬNĐỀ TÀI: Tìm hiểu về hệ thống File của LinuxThành viên nhóm 1:1. Nguyễn Tuấn Anh [11149701]2. Trần Quang Hậu [11050271]1Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang HậuMỤC LỤC2Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang HậuI. Tổng quan về hệ thống file: 1] Khái niệm về hệ thống File và qui ước tên file: Một đối tượng điển hình trong các hệ điều hành đó là file. File là một tập hợpdữ liệu có tổ chức được hệ điều hành quản lý theo yêu cầu của người dùng. Cách tổchức dữ liệu trong file thuộc về chủ của nó là người đã tạo ra file. File có thể là mộtvăn bản [trường hợp đặc biệt là chương trình nguồn trên C, PASCAL, shell script ],một chương trình ngôn ngữ máy, một tập hợp dữ liệu Hệ điều hành tổ chức việc lưutrữ nội dung file trên các thiết bị nhớ lâu dài [chẳng hạn đĩa từ] và đảm bảo các thaotác lên file. Chính vì có hệ điều hành đảm bảo các chức năng liên quan đến file nênngười dùng không cần biết file của mình lưu ở vùng nào trên đĩa từ, bằng cách nàođọc/ghi lên các vùng của đĩa từ mà vẫn thực hiện được yêu cầu tìm kiếm, xử lý lêncác file. Hệ điều hành quản lý file theo tên gọi của file [tên file] và một số thuộc tínhliên quan đến file. Trước khi giới thiệu một số nội dung liên quan đến tên file và tênthư mục, chúng ta giới thiệu sơ bộ về khái niệm thư mục. Để làm việc được với các file, hệ điều hành không chỉ quản lý nội dung file màcòn phải quản lý các thông tin liên quan đến các file. Thư mục [directory] là đối tượngđược dùng để chứa thông tin về các file, hay nói theo một cách khác, thư mục chứacác file. Các thư mục cũng được hệ điều hành quản lý trên vật dẫn ngoài và vì vậy,theo nghĩa này, thư mục cũng được coi là file song trong một số trường hợp để phânbiệt với "file" thư mục, chúng ta dùng thuật ngữ file thông thường. Khác với filethông thường, hệ điều hành lại quan tâm đến nội dung của thư mục. Một số nội dung sau đây liên quan đến tên file [bao gồm cả tên thư mục]: • Tên file trong Linux có thể dài tới 256 ký tự, bao gồm các chữ cái, chữ số, dấugạch nối, gạch chân, dấu chấm. Tên thư mục/file trong Linux có thể có nhiềuhơn một dấu chấm, ví dụ: This_is.a.VERY_long.filename. Nếu trong tên filecó dấu chấm "." thì xâu con của tên file từ dấu chấm cuối cùng được gọi làphần mở rộng của tên file [hoặc file]. Ví dụ, tên file trên đây có phần mở rộnglà .filename. Chú ý rằng khái niệm phần mở rộng ở đây không mang ý nghĩanhư một số hệ điều hành khác [chẳng hạn như MS-DOS]. Lưu ý: Chúng ta nên lưu ý rằng, không phải ký tự nào cũng có nghĩa. Nếu có3Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang Hậuhai file chỉ khác nhau ở ký tự cuối cùng, thì đối với Linux, đó là hai file có thểtrùng tên. Bởi lẽ, Linux chỉ lấy 32 hay 64 ký tự đầu tiên trong tên file mà thôi[tùy theo phiên bản Linux], phần tên file còn lại dành cho chủ của file, Linuxtheo dõi thông tin, nhưng thường không xem các ký tự đứng sau ký tự thứ 33hay 65 là quan trọng đối với nó. • Xin nhắc lại lưu ý về phân biệt chữ hoa và chữ thường đối với tên thư mục/file,ví dụ hai file FILENAME.tar.gz và filename.tar.gz là hai file khác nhau. • Nếu trong tên thư mục/file có chứa khoảng trống, sẽ phải đặt tên thư mục/filevào trong cặp dấu nháy kép để sử dụng thư mục/file đó. Ví dụ, để tạo thư mụccó tên là "My document" chẳng hạn, hãy đánh dòng lệnh sau: • Một số ký tự sau không được sử dụng trong tên thư mục/file: !, *, $, &, # • Khi sử dụng chương trình mc [Midnight Commander], việc hiển thị tên file sẽbổ sung một kí tự theo nghĩa: dấu "*" cho file khả thi trong Linux, dấu "~" chofile sao lưu, dấu "." cho file ẩn, dấu "@" cho file liên kết Tập hợp tất cả các file có trong hệ điều hành được gọi là hệ thống file là một hệthống thống nhất. Bởi chính từ cách thức sử dụng thư mục, hệ thống file được tổ chứclôgic theo dạng hình cây: Hệ thống file được xuất phát từ một thư mục gốc [được kíhiệu là "/"] và cho phép tạo ra thư mục con trong một thư mục bất kỳ. Thông thường,khi khởi tạo Linux đã có ngay hệ thống file của nó. Hình 3.1. cho minh họa một phầntrong cây lôgic của hệ thống file. Để chỉ một file hay một thư mục, chúng ta cần đưa ra một đường dẫn, ví dụ đểđường dẫn xác định file Xclients trong hình 3.1. chúng ta viết như sau: 4Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang HậuĐường dẫn này cho biết Xclients nằm trong xinit, xinit nằm trong X11, X11nằm trong etc và etc nằm trong gốc /. Tên file thường là tham số thực sự khi gõ lệnh và công việc gõ lệnh trở nên rấtnặng nề đối với người dùng nếu như trong lệnh phải gõ một đường dẫn dài theo dạngtrên [được biết với tên gọi là đường dẫn tuyệt đối]. Vì vậy, Linux [cũng như nhiều hệđiều hành khác] sử dụng khái niệm thư mục hiện thời của mỗi người dùng làm việctrong hệ thống. Thư mục hiện thời là một thư mục trong hệ thống file mà hiện thời"người dùng đang ở đó". Qua thư mục hiện thời, Linux cho phép người dùng chỉ một file trong lệnhngắn gọn hơn nhiều. Ví dụ, nếu thư mục hiện thời là thư mục xinit thì để chỉ file đãnói, người dùng chỉ cần viết Xclients hoặc ./Xclients trong đó kí hiệu "." để chỉ thưmục hiện thời. Đường dẫn được xác định qua thư mục hiện thời được gọi là đườngdẫn tương đối. Khi một người dùng đăng nhập vào hệ thống, Linux luôn chuyển người dùngvào thư mục riêng, và tại thời điểm đó thư mục riêng là thư mục hiện thời của ngườidùng. Thư mục riêng của siêu người dùng là /root, thư mục riêng của người dùng cótên là user1 là /home/user1 Linux cho phép dùng lệnh c d để chuyển sang thư mụckhác [lấy thư mục khác làm thư mục hiện thời]. Hai dấu chấm " " được dùng để chỉthư mục ngay trên thư mục hiện thời [cha của thư mục hiện thời]. Linux còn cho phép ghép một hệ thống file trên một thiết bị nhớ [đĩa mềm,vùng đĩa cứng chưa được đưa vào hệ thống file] thành một thư mục con trong hệthống file của hệ thống bằng lệnh mount. Các hệ thống file được ghép thuộc vào cáckiểu khác nhau.Hai mục tiếp theo [3.1.2 và 3.1.3.] giới thiệu những nội dung sâu hơn về hệthống file Linux.5Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang Hậukiểu file cần thiết cho hệ điều hành và nguời dùng, duới đây giới thiệu lại một số các kiểu file cơ bản. • File người dùng [user data file]: là các file tạo ra do hoạt động của nguời dùng khi kích hoạt các chương trình ứng dụng tương ứng. Ví dụ như các file thuần văn bản, các file cơ sở dữ liệu hay các file bảng tính.• File hệ thống [system data file]: là các file lưu trữ thông tin của hệ thống như: cấu hình cho khởi dộng, tài khoản của người dùng, thông tin thiết bị thường được cất trong các tệp dạng văn bản dể người dùng có thể can thiệp, sửa đổi theo ý mình. • File thực hiện hay thực thi [executable file]: là các file chứa mã lệnh hay chỉ thịcho máy tính thực hiện. File thực hiện lưu trữ dưới dạng mã máy mà ta khó có thể tìm hiểu duợc ý nghĩa của nó, nhưng tồn tại một số công cụ để hiểu được các file đó. Khi dùng trình ứng dụng mục, file thực hiện được bắt đầu bởi dấu [*] và thường có màu xanh lục. • Thư mục hay còn gọi là file bao hàm [directory]: là file bao hàm các file khác và có cấu tạo hoàn toàn tương tự như file thông thuờng khác nên có thể gọi là file. Trong mục, file bao hàm thuờng có màu trắng và bắt dầu bằng dấu ngã [~]hoặc dấu chia [/]. Ví dụ: /, /home, /bin, /usr, /usr/man, /dev • File thiết bị [device file]: là file mô tả thiết bị, dùng như là định danh để chỉ ra thiết bị cần thao tác. Theo quy ước, file thiết bị được lưu trữ trong thư mục /dev. Các file thiết bị hay gặp trong thư mục này là tty [teletype - thiết bị truyềnthông], ttyS [teletype serial - thiết bị truyền thông nối tiếp], fd0, fd1, [floppy disk- thiết bị ổ đĩa mềm], hda1, hda2, hdb1, hdb2, [hardisk - thiết bị ổ cứng theo chữ Nn IDE; a, b, đánh số ổ đĩa vật lý; 1, 2, 3 đánh số ổ logic]. Trong mục, file thiết bị có màu tím và bắt dầu bằng dấu cộng [+]. • File liên kết [linked file]: là những file chứa tham chiếu đến các file khác trong hệ thống tệp tin của Linux. Tham chiếu này cho phép nguời dùng tìm nhanh tớifile thay vì tới vị trí nguyên thủy của nó. Hơn nữa, nguời ta có thể gắn vào đó các thông tin phụ trợ làm cho file này có tính nang trội hơn so với tính năng nguyên thủy của nó. Ta thấy loại file này giống như khái niệm shortcut trong MS-Windows98. Không giống một số hệ diều hành khác [nhu MS-DOS chẳng hạn], Linux quản lý thờigian của tệp tin qua các thông số thời gian truy nhập [accesed time], thời gian kiến tạo[created time] và thời gian sửa đổi [modified time]. 6Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang Hậuhoặc 512B hoặc 1024B hoặc bội của 512B là cố định trong một hệ thống file. Tronghệ thống file, các khối dữ liệu được địa chỉ hóa bằng cách đánh chỉ số liên tiếp, mỗiđịa chỉ được chứa trong 4 byte [32 bit].Cấu trúc nội tại của hệ thống file bao gồm 4 thành phần kế tiếp nhau: Bootblock [dùng để khởi động hệ thống], Siêu khối [Super block], Danh sách inode vàVùng dữ liệu.Dưới đây, chúng ta xem xét sơ lược nội dung các thành phần cấu trúc nội tạimột hệ thống file. Siêu khốiSiêu khối chứa nhiều thông tin liên quan đến trạng thái của hệ thống file.Trong siêu khối có các trường sau đây: • Kích thước của danh sách ino de [khái niệm inode sẽ được giải thích trong mụcsau]: định kích cỡ vùng không gian trên Hệ thống file quản lý các inode. • Kích thước của hệ thống file. • Hai kích thước trên đây tính theo đơn vị dung lượng bộ nhớ ngoài, • Một danh sách chỉ số các khối rỗi [thường trực trên siêu khối] trong hệ thốngfile. • Chỉ số các khối rỗi thường trực trên siêu khối được dùng để đáp ứng nhu cầuphân phối mới. Chú ý rằng, danh sách chỉ số các khối rỗi có trên siêu khối chỉlà một bộ phận của tập tất cả các khối rỗi có trên hệ thống file.• Chỉ số của khối rỗi tiếp theo trong danh sách các khối rỗi. • Chỉ số khối rỗi tiếp theo dùng để hỗ trợ việc tìm kiếm tiếp các khối rỗi: bắt đầutìm từ khối có chỉ số này trở đi. Điều đó có nghĩa là mọi khối có chỉ số khônglớn hơn chỉ số này hoặc có trong danh sách các khối rỗi thường trực hoặc đãđược cấp phát cho một file nào đó. Nhiều thao tác tạo file mới, xoá file, thayđổi nội dung file v.v. cập nhật các thông tin này. • Một danh sách các inode rỗi [thường trực trên siêu khối] trong hệ thống file. Danh sách này chứa chỉ số các inode rỗi được dùng để phân phối ngay đượccho một file mới được khởi tạo. Thông thường, danh sách này chỉ chứa một bộ phậncác inode rỗi trên hệ thống file.• Chỉ số inode rỗi tiếp theo trong danh sách các inode rỗi.Chỉ số inode rỗi tiếp theo định vị việc tìm kiếm tiếp thêm inode rỗi: bắt đầu tìmtừ inode có chỉ số này trở đi. Điều đó có nghĩa là mọi inode có chỉ số không lớn hơnchỉ số này hoặc có trong danh sách các inode rỗi thường trực hoặc đã được tương ứng7Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang Hậuvới một file nào đó.Hai tham số trên đây tạo thành cặp xác định được danh sách các inode rỗi trênhệ thống file các thao tác tạo file mới, xoá file cập nhật thông tin này.• Các trường khóa [lock] danh sách các khối rỗi và danh sách inode rỗi: Trongmột số trường hợp, chẳng hạn khi hệ thống đang làm việc thực sự với đĩa từ đểcập nhật các danh sách này, hệ thống không cho phép cập nhật tới hai danhsách nói trên.• Cờ chỉ dẫn về việc siêu khối đã được biến đổi: Định kỳ thời gian siêu khối ở bộnhớ trong được cập nhật lại vào siêu khối ở đĩa từ và vì vậy cần có thông tin vềviệc siêu khối ở bộ nhớ trong khác với nội dung ở bộ nhớ ngoài: nếu hai bảnkhông giống nhau thì cần phải biến đổi để chúng được đồng nhất.• Cờ chỉ dẫn rằng hệ thống file chỉ có thể0020đọc [cấm ghi]: Trong một sốtrường hợp, hệ thống đang cập nhật thông tin từ bộ nhớ ngoài thì chỉ cho phépđọc đối với hệ thống file,• Số lượng tổng cộng các khối rỗi trong hệ thống file,• Số lượng tổng cộng các inode rỗi trong hệ thống file, • Thông tin về thiết bị, • Kích thước khối [đơn vị phân phối dữ liệu] của hệ thống file. Hiện tại kíchthước phổ biến của khối là 1KB. Trong thời gian máy hoạt động, theo từng giai đoạn, nhân sẽ đưa siêu khối lênđĩa nếu nó đã được biến đổi để phù hợp với dữ liệu trên hệ thống file. Một trong khái niệm cốt lõi xuất hiện trong hệ thống file đó là inode. Các đốitượng liên quan đến khái niệm này sẽ được trình bày trong các mục tiếp theo.  Inode Mỗi khi một quá trình khởi tạo một file mới, nhân hệ thống sẽ gán cho nó mộtinode chưa sử dụng. Để hiểu rõ hơn về inode, chúng ta xem xét sơ lược mối quan hệliên quan giữa file dữ liệu và việc lưu trữ trên vật dẫn ngoài đối với Linux. Nội dung của file được chứa trong vùng dữ liệu của hệ thống file và được phânchia các khối dữ liệu [chứa nội dung file] và hình ảnh phân bố nội dung file có trongmột inode tương ứng. Liên kết đến tập hợp các khối dữ liệu này là một inode, chỉthông qua inode mới có thể làm việc với dữ liệu tại các khối dữ liệu: Inode chứa dựngthông tin về tập hợp các khối dữ liệu nội dung file. Có thể quan niệm rằng, tổ hợpgồm inode và tập các khối dữ liệu như vậy là một file vật lý: inode có thông tin về filevật lý, trong đó có địa chỉ của các khối nhớ chứa nội dung của file vật lý. Thuật ngữ8Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang Hậuinode là sự kết hợp của hai từ index với node và được sử dụng phổ dụng trong Linux. Các inode được phân biệt nhau theo chỉ số của inode: đó chính là số thứ tự củainode trong danh sách inode trên hệ thống file. Thông thường, hệ thống dùng 2 bytesđể lưu trữ chỉ số của inode. Với cách lưu trữ chỉ số như thế, không có nhiều hơn65535 inode trong một hệ thống file. Như vậy, một file chỉ có một inode song một file lại có một hoặc một số tênfile. Người dùng tác động thông qua tên file và tên file lại tham chiếu đến inode [tênfile và chỉ số inode là hai trường của một phần tử của một thư mục]. Một inode có thểtương ứng với một hoặc nhiều tên file, mỗi tương ứng như vậy được gọi là một liênkết. Inode được lưu trữ tại vùng danh sách các inode. Trong quá trình làm việc, Linux dùng một vùng bộ nhớ, được gọi là bảng inode[trong một số trường hợp, nó còn được gọi tường minh là bảng sao in-core inode] vớichức năng tương ứng với vùng danh sách các inode có trong hệ thống file, hỗ trợ choquá trình truy nhập dữ liệu trong hệ thống file. Nội dung của một in-core inode khôngchỉ chứa các thông tin trong inode tương ứng mà còn được bổ sung các thông tin mớigiúp cho quá trình xử lý inode.Chúng ta xem xét cấu trúc nội tại của một inode để thấy được sự trình bày nộitại của một file Inode bao gồm các trường thông tin sau đây:• Kiểu file. Trong Linux phân loại các kiểu file: file thông thường [regular], thưmục, đặc tả kí tự, đặc tả khối và ống dẫn FIFO [pipes]. Linux quy định trườngkiểu file có giá trị 0 tương ứng đó là inode chưa được sử dụng.• Quyền truy nhập file. Trong Linux, file là một tài nguyên chung của hệ thốngvì vậy quyền truy nhập file được đặc biệt quan tâm để tránh những trường hợptruy nhập không hợp lệ. Đối với một inode, có 3 mức quyền truy nhập liênquan đến các đối tượng:- Mức chủ của file [đối tượng này được ký hiệu là u: từ chữ user],- Mức nhóm người dùng của chủ nhân của file [đối tượng này được kýhiệu là g: từ chữ group],- Mức người dùng khác [đối tượng này được ký hiệu là a: từ chữ all].Quyền truy nhập là đọc, ghi, thực hiện hoặc một tổ hợp nào đó từ nhóm gồm 3quyền trên. Chú ý rằng, quyền thực hiện đối với một thư mục tương ứng với việc chophép tìm một tên file có trong thư mục đó.• Số lượng liên kết đối với inode: Đây chính là số lượng các tên file trên các thư9Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang Hậumục được liên kết với inode này,• Định danh chủ nhân của inode,• Định danh nhóm chủ nhân: xác định tên nhóm người dùng mà chủ file là mộtthành viên của nhóm này,• Độ dài của file tính theo byte, • Thời gian truy nhập file: - Thời gian file được sửa đổi muộn nhất- Thời gian file được truy nhập muộn nhất- Thời gian file được khởi tạo• Bảng địa chỉ chứa các địa chỉ khối nhớ chứa nội dung file. Bảng này có 13phần tử địa chỉ, trong đó có 10 phần tử trực tiếp, 1 phần tử gián tiếp bậc 1, 1phần tử gián tiếp bậc 2 và một phần tử gián tiếp bậc 3 [chi tiết có trong phầnsau]. Nội dung của file thay đổi khi có thao tác ghi lên nó; nội dung của mộtinode thay đổi khi nội dung của file thay đổi hoặc thay đ ổi chủ hoặc thay đổiquyền hoặc thay đổi số liên kết. Ví dụ về nội dung một inode như sau : Các phần tử địa chỉ dữ liệu Bản sao in-core inode còn bổ sung thêm trường trạng thái của in-core inode.• Trường trạng thái của in-core inode có các thông tin sau:- Inode đã bị khoá- Một quá trình đang chờ đợi khi inode tháo khóa- In-core inode khác với inode do sự thay đổi dữ liệu trong inode- In-core inode khác với inode do sự thay đổi dữ liệu trong file- Số lượng các tên file nối với file đang được mở10Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang Hậuinode được liên k ết theo một hàng băm và một danh sách tự do. Trongdanh sách hàng băm các in-core inode hòa hợp theo số hiệu thiết bị lôgic vàsố hiệu inode. Trong quá trình hệ thống làm việc, nảy sinh khái niệm inode tích cực nếu nhưcó một quá trình đ ang làm việc với inode đó [như mở file]. Một inode thuộc vào danh sách các inode rỗi khi không có file vật lý nào tươngứng với inode đó. Bảng chứa địa chỉ khối dữ liệu của File trong UNIX Bảng chứa địa chỉ khối dữ liệu của file gồm 13 phần tử với 10 phần tử trực tiếpvà 3 phần tử gián tiếp: Mỗi phần tử có độ dài 4 bytes, chứa một số hiệu của một khốinhớ trên đĩa. Mỗi phần tử trực tiếp trỏ tới 1 khối dữ liệu thực sự chứa nội dung file.Phần tử gián tiếp bậc 1 [single indirect] trỏ tới 1 khối nhớ ngoài. Khác với phần tửtrực tiếp, khối nhớ ngoài này không dùng để chứa dữ liệu của file mà lại chứa danhsách chỉ số các khối nhớ ngoài và chính các khối nhớ ngoài này mới thực sự chứa nộidung file. Như vậy, nếu khối có độ dài 1KB và một chỉ số khối ngoài có độ dài 4bytes thì địa chỉ gián tiếp cho phép định vị khô ng gian trên đĩa lưu trữ dữ liệu của filetới 256KB [Không gian bộ nhớ ngoài trong vùng dữ liệu phải dùng tới là 257KB].Tương tự đối với các phần tử gián tiếp mức cao hơn. Cơ chế quản lý địa chỉ file như trên cho thấy có sự phân biệt giữa file nhỏ vớifile lớn. File nhỏ có độ dài bé hơn và theo cách tổ chức như trên, phương pháp truynhập sẽ cho phép tốc đ ộ nhanh hơn, đơn giản hơn do chỉ phải làm việc với các phầntử trực tiếp. Khi xử lý, thuật toán đọc File tiến hành theo các cách khác nhau đối vớicác phần tử trực tiếp và gián tiếp. Cơ chế tổ chức lưu trữ nội dung Fle như đã trình bày cho phép độ dài file cóthể lên tới [224 + 216 + 28 + 10] khối.Vùng dữ liệu bao gồm các khối dữ liệu, mỗi khối dữ liệu được đánh chỉ số đểphân biệt. Khối trên vùng dữ liệu được dùng để chứa nội dung các file, nội dung cácth ư mục và nội dung các khối định vị địa chỉ của các file. Chú ý rằng, chỉ số của khốidữ liệu được chứa trong 32 bit và thông tin này xác định dung lượ ng lớn nhất của hệthống file. 4] Một số thuật toán làm vi ệc với inode: a. Hệ thống lời gọi hệ thống file 11Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang Hậuthống thường gặp như mở file open, đóng file close, đọc nội dung file read, ghi nộidung file write v.v. Bảng dưới đây thống kê các lời gọi hệ thống làm việc với hệ thống file và phânloại theo chức năng của mỗi lời gọi hệ thống [lời gọi có thể được nhắc đến một số lần]:Hình 3.2. Tổng thể về lời gọi hệ thống File. Chúng ta xem xét một số thuật toán làm việc với inode. b. Thuật toán truy nhập tới 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ộtfile 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 đốivớ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ốidữ 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ốinhớ]]*độ dài một inodeVí 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ácinode. 12Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang Hậumặt trong bộ nhớ trong để hệ thống có những thông tin làm việc. Chú ý rằng, t rongsuper 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àomộ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ácinode rỗi trên super block thì hệ thống phải thông báo một lỗi đã đưọc gặp. Lỗinà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 đếnkhi quá trình trước đây không khóa inode nữa. Sau khi được tháo khóainode 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ằngcá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ácrỗng. Khi danh sách các inode này khác rỗng, có nghĩa là có những inodekhông có giá trị: loại bỏ nó và đặt inode mới vào thay thế. c. Thuật toán iput loại 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ấthiệ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ốngsai 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ênkế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ì:- Nếu đó là lệnh xoá file thì trước đó hệ thống đã thực hiện thao tác giảmsố liên kết với inode đi 1 và vì vậy có thể số lượng liên kết trở thành 0,có nghĩa là sự tồn tại của file vật lý không còn. Khi đó, chúng ta thựchiện việc xoá thức sự file nói trên bằng một số thao tác: gi ải phóng cáckhối dữ liệu, đặt kiểu file của inode là 0 và giải phóng inode. - Khi số liên kết > 0 thi cần cập nhật sự thay đổi của inode lên đĩa từ. • Trong trường hợp số lượng file tích cực vẫn dương thì không thực hiện thaotác gì.• Chú ý là trong thuật toán này có sử dụng thuật toán ifree.13Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang Hậud. Thuật toán ialloc gán inode cho một file mớiKhi một file mới được xuất hiện, chẳng hạn khởi tạo file creat, phải cung cấpmột inode cho file và thuật toán ialloc đáp ứng đòi hỏi trên.Hoạt động của thuật toán ialloc được giải thích như sau:- Kiểm tra danh sách inode rỗi trên super block, xảy ra một trong hai trườnghợp hoặc danh sách rỗng hoặc không rỗng.- Nếu danh sách không rỗng thì lấy một inode tiếp theo cho file, khởi tạo cácgiá trị ban đầu của inode đó và giảm số inode rỗi trên super trên superblock. - Nếu danh sách các inode rỗi trên super block là rỗng: tìm kiếm trên hệthống file những inode rỗi để tải vào danh sách các inode rỗi trên superblock. Nếu danh sách đó đầy hoặc không t ìm thấy được nữa thì gán mộtinode cho file. Nếu danh sách inode rỗi trên super block là rỗng và không tìm thấy inode rỗitrên đĩa thì sẽ có thông báo lỗi. Trên danh sách các inode rỗi, nhân lưu giữ một inode được gọi là inode nhớ,chính là inode cuối cùng được tìm thấy để sau này thuận lợi cho tìm kiếm. e. Thuật toán ifree tải một inode rỗi trên đĩa vào danh sách các inode rỗitrên super block f. Thuật toán namei tìm chỉ số một inode theo tên file Thuật toán namei là một thuật toán phổ dụng, nhiều thuật toán làm việc với filephải sử dụng namei. Từ tên một đường dẫn file/thư mục, thuật toán namei cho inodetương ứng. g. Thuật toán cấp phát dữ liệu trên đĩa Khi nhân muốn cấp phát một khối dữ liệu, nó sẽ cấp phát khối rỗi tiếp theo đãđược ghi nhận trong super block. Khi một khối dữ liệu đã được cấp cho một file thì nóchỉ được cấp phát lại khi nó trở thành rỗi. Nếu không còn khối rỗng nào trên hệ thốngfile mà lại có nhu cầu cung cấp khối thì nhân sẽ thông báo lỗi. 5] Hỗ trợ nhiều hệ thống File: Các phiên bản đầu tiên của Linux chỉ hỗ trợ một hệ thống file duy nhất đó là hệthống file minix. Sau đó, với sự mở rộng nhân, cộng đồng Linux đã thêm vào nó rấtnhiều kiểu hệ thống file khác nhau và Linux trở thành một hệ điều hành hỗ trợ rất14Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang Hậunhiều hệ thống file. Dưới đây là một số hệ thống file thông dụng trong các hệ điềuhành khác nhau được Linux hỗ trợ. • Hệ thống file ADFS: ADFS viết tắt của Acorn Disc Filing System là hệ thốngfile chuẩn trên hệ điều hành RiscOS. Với sự hỗ trợ này, Linux có thể truy cậpvào các phân vùng đĩa định dạng theo hệ thống file ADFS.• Hệ thống file AFFS: AFFS [The Amiga Fast File System] là một hệ thống filephổ biến của hệ điều hành AmigaOS phiên bản 1.3 chạy trên các máy Amiga. • Hệ thống file CODA: CODA là một hệ thống file mạng cho phép người dùngcó thể kết gán các hệ thống file từ xa và truy cập chúng như các hệ thống filecục bộ [local]. • Hệ thống file DEVPTS: Hệ thống file cho Unix98 PTYs. • Hệ thống file EFS: Đây là một dạng hệ thống file sử dụng cho CDROM. • Hệ thống file EXT2: Hệ thống file EXT2 [The second extended filesystem] làhệ thống được dùng chủ yếu trên các phiên bản của hệ điều hành Linux. Chúngta sẽ trở lại nghiên cứu hệ thống file này trong các phần sau.• Hệ thống file HFS: Đây là hệ thống file chạy trên các máy Apple Macintosh.• Hệ thống file HPFS: HPFS là hệ thống file được sử dụng trong hệ điều hànhOS/2. Linux hỗ trợ hệ thống file này ở mức chỉ đọc [read only].• Hệ thống file ISOFS: Đây là hệ thống file được sử dụng cho các đĩa CD. Hệthống thông dụng nhất cho các đĩa CD hiện nay là ISO 9660. Với sự hỗ trợnày, hệ thống Linux có thể truy cập dữ liệu trên các đĩa CD.• Hệ thống file MINIX: MINIX là hệ thống file đầu tiên mà Linux hỗ trợ. Hệthống file này được sử dụng trong hệ điều hành Minix và một số hệ thốngLinux cũ. • Hệ thống file MSDOS: Với sự hỗ trợ này, hệ thống Linux có thể truy cập đượccác phân vùng của hệ điều hành MSDOS. Linux cũng có thể sử dụng kiểuMSDOS để truy cập các phân vùng của Window 95/98 tuy nhiên khi đó, cácưu điểm của hệ điều hành Window sẽ không còn giá trị ví dụ như tên file chỉtối đa 13 ký tự [kể cả mỏ rộng]. • Hệ thống file NFS: NFS [Network File System] là một hệ thống file trên mạnghỗ trợ việc truy cập dữ liệu từ xa giống như hệ thống file CODA. Với NFS, cácmáy chạy Linux có thể chia sẻ các phân vùng đĩa trên mạng để sử dụng như làcác phân vùng cục bộ của chính máy mình. • Hệ thống file NTFS: Với sự hỗ trợ này, hệ thống Linux có thể truy cập vào cácphân vùng của hệ điều hành Microsoft Window NT. • Hệ thống file PROC: Đây là một hệ thống file đặc biệt được Linux hỗ trợ. Hệthống file PROC không chiếm một phân vùng nào của hệ thống và cũng không15Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang Hậuquản lý các dữ liệu lưu trữ trên đĩa. PROC hiển thị nội dung của chính nhân hệthống. Các file trong hệ thống file PROC lưu trữ các thông tin về trạng tháihiện hành của nhân. Thông tin về mỗi một tiến trình đang thực hiện trong hệthống được lưu trong một thư mục mang tên ứng với chỉ số process ID của tiếntrình đó. Người dùng có thể sử dụng hệ thống file PROC để lấy các thông tinvề nhân cũng như sửa đổi m ột số giá trị của nhân thông qua sửa đổi nội dungcủa các file trong hệ thống file này. Tuy nhiên, việc sửa đổi trực tiếp như trêntương đối nguy hiểm, dễ gây đổ vỡ hệ thống. • Hệ thống file QNX4: Đây là hệ thống file được sử dụng trong hệ điều hành QNX 4. • Hệ thống file ROMFS: Đây là các hệ thống file chỉ đọc [read only] được sửdụng chủ yếu cho việc khởi tạo đĩa ảo [ramdisk] trong quá trình khởi động đĩacài đặt. • Hệ thống file SMB: SMB [Server Mesage Block] là một giao thức củaWindows dùng để chia sẻ file giữa các hệ điều hành Windows 95/98, WindowsNT và OS/2 Lan Manager. Với sự hỗ trợ SMB, hệ điều hành Linux có thể chiasẻ cũng như truy cập các file nằm trên các phân vùng của một máy chạy các hệđiều hành kể trên. Nói tóm lại, SMB cũng là một dạng hỗ trợ hệ thống filemạng giúp hệ thống có thể chia sẻ với các hệ thống sử dụng chung giao thứcSMB. • Hệ thống file UMSDOS: Hệ thống file UMSDOS [Unix-like MSDOS] là hệthống file được mở rộng từ hệ thống file MSDOS theo định hướng Unix. Hệthống file này có một số ưu điểm so với MSDOS như là hỗ trợ tên file dài, hỗtrợ việc phân quyền, hỗ trợ các liên kết [link], hỗ trợ các file đặc biệt [device,pipe .] và Hệ thống file này có thể được sử dụng làm phân vùng gốc của hệthống Linux. • Hệ thống file VFAT: VFAT chính là hệ thống file mở rộng của hệ thống FAT.Hệ thống file này được sử dụng trong các hệ điều hành Windows 95/98.Như vậy, ngoài khả năng hỗ trợ nhiều loại thiết bị, Linux còn có khả năng hỗtrợ nhiều kiểu hệ thống file. Bằng cách hỗ trợ nhiều kiểu hệ thống file, Linux có thểtruy cập và xử lý các file của nhiều hệ điều hành khác nhau. Mặc dù có khả năng truycập nhiều hệ thống file khác nhau, hệ thống file của Linux vẫn phải đảm bảo cung cấpcho người dùng một giao diện nhất quán đối với các file, bảo vệ các file trên các hệthống khác nhau, tối ưu các thao tác truy cập vào thiết bị Để thực hiện được điềunày, Linux sử dụng một hệ thống file đặc biệt gọi là hệ thống file ảo VFS [Virtual File16Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang HậuSystem]. Hệ thống file ảo VFS được thiết kế để cung cấp một giao diện thống nhất về các fileđược lưu trữ trên các thiết bị. Hình 3.3 mô tả mối quan hệ giữa VFS với các hệ thốngfile thực và các thiết bị lưu trữ. Hình 3.3. Hệ thống file ảo VFS. VFS có trách nhiệm cung cấp cho chương trình người dùng một giao diện nhấtquán về hệ thống file thông qua các lệnh gọi hệ thống [system call]. Mỗi khi có mộtyêu cầu truy cập file, VFS sẽ dựa vào các hệ thống file thực để tìm kiếm file yêu cầutrên các thiết bị vật lý. Với mỗi file tìm được, nó thực hiện thao tác mở file đó và chotương ứng file với một cấu trúc dữ liệu gọi là i-node. VFS cung cấp rất nhiều lệnh gọiđể thao tác với hệ thống file nhưng chủ yếu thuộc vào các loại sau: • Các thao tác liên quan tới hệ thống file. • Các thao tác liên quan tới i-node. • Các thao tác với file đang mở. • Các thao tác với vùng đệm dữ liệu. 6] Liên kết tượng trưng [lệnh ln]: Trong Linux có hai kiểu liên kết đó là liên kết tượng trưng [liên kết mềm] vàliên kết cứng. "Liên kết cứng" là một cách gọi khác đối với một file đang tồn tại [không có sựphân biệt giữa file gốc và file liên kết]. Theo cách nói kỹ thuật, chúng cùng chia sẻmột inode và inode này chứa đựng tất cả các thông tin về file. Không thể tạo một liên17Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang Hậukết cứng tới một thư mục. "Liên kết tượng trưng" là một kiểu file đặc biệt, trong đó, một file liên kết thựcsự tham chiếu theo tên đến một file khác. Có thể hiểu kiểu file này như là một con trỏchỉ dẫn tới một file hoặc một thư mục, và được sử dụng để thay thế cho file hoặc thưmục được trỏ tới. Hầu hết các thao tác [như mở, đọc, ghi ] được thực hiện trên cácfile liên kết, sau đó, nhân hệ thống sẽ tự động "tham chiếu" và thực hiện trên file đíchcủa liên kết. Tuy nhiên, có một số các thao tác như xóa file, file liên kết sẽ bị xóa bỏchứ không phải file đích của nó. Để tạo một liên kết tượng trưng, hãy sử dụng lệnh ln với cú pháp như sau:Lệnh này sẽ tạo một liên kết đến thư mục/file đích với tên file liên kết là tên-nối. Nếu tên-nối không có, một liên kết với tên file liên kết giống như tên file đích sẽđược tạo ra trong thư mục hiện thời. Các tuỳ chọn của lệnh ln: • -b, backup[=CONTROL] : tạo liên kết quay trở lại cho mỗi file đíchđang tồn tại.• -f, force : xóa bỏ các file đích đang tồn tại.• -d, -F, directory : tạo liên kết cứng đến các thư mục [tùy chọn này chỉdành cho người dùng có quyền quản trị hệ thống]. Một số phiên bản khôngcó tùy chọn này.• -n, no-dereference : một file bình thường được xem là đích liên kết từmột thư mục.• -i, interactive : vẫn tạo liên kết dù file đích đã bị xóa bỏ.• -s, symbolic : tạo các liên kết tượng trưng.• target-directory= : xác định thư mục tên-thư-mục là thưmục có chứa các liên kết.• -v, verbose : hiển thị tên các file trước khi tạo liên kết.• help : hiển thị trang trợ giúp và thoát.Ví dụ, muốn tạo liên kết đến file /usr/doc/g77/DOC với tên file liên kết làg77manual.txt, thì gõ lệnh như sau:Khi chạy chương trình mc, các file liên kết có tên bắt đầu bởi dấu "ừ", và khivệt sáng di chuyển đến file liên kết thì tên file được liên kết đến sẽ hiển thị ở bêndưới. 18Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang HậuII. Quyền truy nhập thư mục và file: 1] Quyền truy nhập: Mỗi file và thư mục trong Linux đều có một chủ sở hữu và một nhóm sở hữu,cũng như một tập hợp các quyền truy nhập. Cho phép thay đổi các quyền truy nhập vàquyền sở hữu file và thư mục nhằm cung cấp truy nhập nhiều hơn hay ít hơn. Thông tin về một file có dạng sau [được hiện ra theo lệnh hiện danh sách file ls-l]: Trong đó, dãy 10 ký tự đầu tiên mô tả kiểu file và quyền truy nhập đối với tậptin đó. Theo mặc định, người dùng tạo một file chính là người chủ [sở hữu] của file đóvà là người có quyền sở hữu nó. Người chủ của file có đặc quyền thay đổi quyền truynhập hay quyền sở hữu đối với file đó. Tất nhiên, một khi đã chuyển quyền sở hữucủa mình cho người dùng khác thì người chủ cũ không được phép chuyển quyền sởhữu và quyền truy nhập được nữa. Tập hợp một chuỗi có 10 ký tự đã giới thiệu trên đây được chia ra làm 4 phần:kiểu file, các quyền truy nhập đến file của chủ sở hữu, của nhóm sở hữu và ngườidùng khác. Có một số kiểu file trong Linux. Ký tự đầu tiên trong tập hợp 10 ký tự mô tảkiểu file và quyền truy nhập sẽ cho biết file thuộc kiểu nào [chữ cái đó được gọi làchữ cái biểu diễn]. Bảng dưới đây sẽ liệt kê các kiểu file trong Linux: 19Bài ểu luận - Hệ điều hành Nguyễn Tuấn Anh & Trần Quang HậuMỤC LỤC20

Video liên quan

Chủ Đề