Thứ Bảy, 13 tháng 1, 2018

[Vụn vặt Linux] File và FileSystem trong Linux (P2)

Trong phần 1, ta đã tìm hiểu các khái niệm về file và links trong hệ thống Linux. Ta cũng đã được biết qua nguyên lý thiết kế:
Everything is a file
Trong phần này, những dạng file đặc biệt sẽ chỉ rõ việc triển khai nguyên lý này trên thực tế bên trong hệ thống Linux.

Special files
Các file đặc biệt bao gồm 4 loại:
- block device files
- character device files
- named pipes
- và Unix domain sockets

User-space giao tiếp với các thiết bị bên dưới thông qua device files, nghĩa là thiết bị có thể mở file, đọc và ghi file này, các file như lớp trung gian giữa user-space và kernel. Devices files lại được chia thành 2 loại là character device và block devices, chúng có cùng cách sử dụng nhưng sở dĩ có tên khác nhau là do cách ta tiếp cận dữ liệu của file.

Character device files
Với loại file này, việc đọc ghi dữ liệu sẽ được thực hiện trên từng byte của 1 queue. Một ví dụ điển hình đó là keyboard. Khi ta dùng bàn phím (physical) gõ chữ hello, trên user-space sẽ đọc từng chữ h-e-l-l-o từ file và hiển thị lên màn hình, khi không còn kí tự nào nữa, thiết bị sẽ trả về kí tự EOL. Do đó các thiết bị như bàn phím nói ở trên được gọi là character device.

Block device files
Với loại file này, việc đọc và ghi dữ liệu sẽ được thực hiện tùy ý. Device driver sẽ map dữ liệu vật lý vào 1 file mà user có thể tùy ý truy cập (thường đồng nghĩa với quá trình mount). Ví dụ điển hình là hard disks, flash hoặc CD Drives.

Named pipes
Pipe là 1 phương thức truyền thông liên tiến trình (IPC) hoạt động bằng cơ chế đầu ra của một chương trình là đầu vào của 1 chương trình khác.
http://www.linfo.org/pipes.html
Cụ thể hơn các bạn có thể xem ở đây:
http://man7.org/linux/man-pages/man2/pipe.2.html

Socket files
Socket cũng là một phương thức IPC, nhưng hơn pipes đó là socket cho phép chúng ta không những có thể giao tiếp giữa hai process trong cùng một máy tính, còn có thể giao tiếp giữa các thiết bị khác nhau trên mạng Internet (sử dụng host name và port). Một socket được đặc trưng bởi 1 socket file.
http://man7.org/linux/man-pages/man2/socket.2.html

Filesystem
Tất cả các thư mục chúng ta thấy trong hệ thống Linux như root/ home/ etc/ v.v... đều được gọi là filesystem. Vậy filesystem là gì?
Filesystem thực ra là các vùng nhớ trên đĩa cứng hoặc Floppy Disk, Flash v.v... và được mount vào hệ thống để ta có thể thao tác với chúng được. Trường hợp đặc biệt là root filesystem hay còn gọi là rfs, là filesystem đầu tiên được mount khi hệ thống bắt đầu khởi động, từ root fs, ta có thể thực hiện các thao tác như mount các ngoại vi khác như floppydisk sẽ ở /media/cdrom/.
Dù vậy, filesystem cũng có thể là các file ảo (virtual filesystem - vfs) chỉ tồn tại trên RAM (ví dụ như proc file) hoặc network filesystem - nfs.
File system lại được chia ra thành các loại như sau:
- media specific fs (ISO9660)
- network fs
- native fs (ext4)
- fs from other Unix systesm (XFS)
- fs from non-Unix systesm (FAT).

Không có nhận xét nào:

Đăng nhận xét