1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Hệ thống file unix

83 229 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 83
Dung lượng 1,29 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin

Trang 1

Linux operating system - Nguyen Tri Thanh

Hệ ñiều hành UNIX-Linux

Chương 3 Hệ thống File

Trang 2

Linux operating system - Nguyen Tri Thanh

Khái niệm cơ bản

 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ợp dữ liệu có tổ chức ñược hệ ñiều hành quản

 Cách tổ chức dữ liệu trong file thuộc về người ñã tạo ra file

 File có thể là:

 một vă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,

 Hệ ñiều hành tổ chức việc lưu trữ nội dung file trên các thiết

bị nhớ lâu dài và ñảm bảo các thao tác lên file

Trang 3

Linux operating system - Nguyen Tri Thanh

Khái niệm cơ bản

 Hệ ñiều hành ñảm bảo các chức năng liên quan ñến file nên

ngườ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 từ 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ên cá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ính liên quan ñến 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

 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 thư mục cũng ñược coi là file

Trang 4

Linux operating system - Nguyen Tri Thanh

File trong Linux - UNIX

 Tên file trong Linux có thể dài > 256 ký tự

 Nên chỉ gồm các chữ cái, chữ số, dấu gạch nối, gạch chân,

dấu chấm

 Tên thư mục/file trong Linux có thể có nhiều hơn một dấu

chấm: This_is.a.VERY_long.filename

 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

 Phần mở rộng ở ñây không mang ý nghĩa như một số hệ ñiều

hành khác (chẳng hạn như MS-DOS)

 Phân biệt chữ hoa và chữ thường ñối với tên thư mục/file

 Nếu trong tên thư mục/file có chứa khoảng trống, ñặt tên vào

trong cặp dấu nháy kép: # mkdir “My document”

 Một số ký tự không ñược sử dụng trong tên thư mục/file: !, *,

$, &, #

Trang 5

Linux operating system - Nguyen Tri Thanh

Cách tổ chức file

 Trên ñĩa hệ thống file là dãy tuần tự các khối lôgic mỗi khối

chứa hoặc 512B hoặc 1024B hoặc bội của 512B

 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 gồm 4 thành phần kế tiếp nhau: Boot block

(dùng ñể khởi ñộng hệ thống), Siêu khối (Super block), Danh

sách inode và Vùng dữ liệu

Trang 6

Linux operating system - Nguyen Tri Thanh

Siêu khối

Chứa thông tin liên quan ñến trạng thái của hệ thống file

 Kích thước của danh sách inode

 Kích thước của hệ thống file.

 Danh sách chỉ số các khối rỗi

 Chỉ số các khối rỗi thường trực trên siêu khối

 Chỉ số của khối rỗi tiếp theo trong danh sách các khối rỗi

 Một danh sách các inode rỗi

 Danh sách này chứa chỉ số các inode rỗi ñược dùng ñể phân phối

ngay ñược cho một file mới ñược khởi tạo

 Cờ chỉ dẫn rằng hệ thống file chỉ có thể ñọc (cấm ghi)

 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 của hệ thống file

Trang 7

Linux operating system - Nguyen Tri Thanh

Cấu trúc thư mục

Trang 8

Linux operating system - Nguyen Tri ThanhKiến trúc hệ thống file

Trang 9

Linux operating system - Nguyen Tri Thanh

Hình ảnh các khối bộ nhớ

Trang 10

Linux operating system - Nguyen Tri Thanh

Thông tin một file entry

Inode No File name File name length Entry length

Cấu trúc thư mục

 Nội dung của một thư mục là một danh sách các file entry

 Mỗi một file entry gồm

 Số hiệu inode quản lý file này

 Tên file

 ðộ dài của tên file

 ðộ dài của entry

Trang 11

Linux operating system - Nguyen Tri ThanhTrạng thái của thư mục

Cấu trúc thư mục

 Khi một file bị xóa thì trường entry length của file ñứng trước sẽ ñược

tăng ñộ dài

 Khi chèn thêm một file entry, nó sẽ tính toán ñộ dài của entry ñể quyết

ñịnh là chèn vào một entry bị xóa nào ñó hay cuối danh sách

Trang 12

Linux operating system - Nguyen Tri Thanh

Inode

 Khi tạo một file mới, hệ thống sẽ cấp một inode chưa sử dụng

 inode cho ta biết các khối dữ liệu của file và các thông tin về file

 Tổ hợp gồm inode + tập các khối dữ liệu = file vật lý

 Các inode có chỉ số: số thứ tự của inode trong danh sách inode

 Hệ thống dùng 2 bytes ñể lưu trữ chỉ số của inode

 Một file chỉ có một inode + một hoặc một số tên file

 Người dùng tác ñộng thông qua tên file và tên file lại tham chiếuñến inode

Linux dùng một vùng bộ nhớ chứa danh sách các inode: in-core

inode

Trang 13

Linux operating system - Nguyen Tri Thanh

Cấu trúc Inode

 Kiểu file (file thông thường, thư mục, ñặc tả kí tự, ñặc tả khối,

ống dẫn)

 Kiểu file có giá trị 0 tương ứng ñó là inode chưa ñược sử dụng

 Quyền truy nhập file: có 3 mức quyền truy nhập

 chủ của file

 nhóm người dùng của chủ nhân của file

 người dùng khác

 Quyền truy nhập là ñọc (r), ghi (w), thực hiện (x) hoặc một tổ

hợp nào ñó từ nhóm gồm 3 quyền trên

 Quyền thực hiện ñối với một thư mục tương ứng với việc cho

phép tìm một tên file có trong thư mục ñó

Trang 14

Linux operating system - Nguyen Tri Thanh

Cấu trúc Inode (tiếp)

 Số lượng liên kết ñối với inode (số lượng các tên file)

 ðịnh danh chủ nhân của inode

 ðịnh danh nhóm chủ nhân

 ðộ 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

Trang 15

Linux operating system - Nguyen Tri ThanhCác con trỏ dữ liệu

Trang 16

Linux operating system - Nguyen Tri Thanh

Nội dung của một Inode

Trang 17

Linux operating system - Nguyen Tri ThanhTruy cập ñến một file

Trang 18

Linux operating system - Nguyen Tri Thanh

Trang 19

Linux operating system - Nguyen Tri Thanh

Thuật toán truy nhập tới inode (iget)

Tình huống ñòi hỏi thuật toán iget: mở / tạo một file mới …

iget cấp phát một bản in-core inode ñối với một số hiệu inode

Nếu chưa có bản sao in-core inode thì ñể có nội dung của nó cầnphải ñọc ñược nội dung của inode

Nếu mỗi inode ñĩa chiếm 64 bytes, mỗi khối ñĩa chứa 8 inode ñĩathì 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

Trang 20

Linux operating system - Nguyen Tri Thanh

Thuật toán iget

Vào: hệ thống file, số hiệu inode

Ra: inode ñược khóa hoặc mã lỗi

while (not done){

if (inode trong vùng ñệm các inode){ /*có quá trình ñang làm việc với inode*/

if (inode ñã bị khóa) {

sleep (cho ñến khi inode ñược mở khóa);

continue; /* quay về while */

}

if (inode tồn tại trong danh sách các inode rỗi)

Loại bỏ nó khỏi danh sách các inode rỗi;

Tăng giá trị trường số file tích cực trong in-core inode;

return (inode) }

if (danh sách các inode rỗi rỗng) return (mã lỗi)

Loại bỏ một inode mới từ danh sách các inode rỗi;

ðặt lại số lượng inode rỗi vào hệ thống file;

Loại bỏ inode ñó trên hàng ñợi cũ và ñặt nó lên hàng ñợi mới;

ðọc inode từ ñĩa vào in-core inode;

Khởi tạo inode;

return (inode)

}

Trang 21

Linux operating system - Nguyen Tri Thanh

Thuật toán iput

Vào: con trỏ tới in-core inode

Ra: không có

{

if (inode chưa bị khóa) Khóa inode;

Giảm trường số lượng file tích cực ñi một ñơn vị;

if (số lượng file tích cực ==0)

{

if (số liên kết của inode ==0) {

Giải phóng các khối ñĩa của file tương ứng với inode;

ðặt giá trị trường "file type" của inode là 0;

Giải phóng inode;

}

if (file ñã truy cập hoặc inode bị thay ñổi hoặc file ñã thay ñổi)

Cập nhật inode trên ñĩa;

ðặt inode vào danh sách các inode rỗi;

}

Tháo khóa của inode;

}

Trang 22

Linux operating system - Nguyen Tri Thanh

Thuật toán iname

if (path_name bắt ñầu từ th ư mục gốc)

working_inode = inode của th ư mục gốc; /* thuật toán

iget */

else

working_inode = inode của th ư mục hiện tại; /* thuật toán iget */

while (thành phần ñã xử lý ch ư a là thành phần cuối cùng của path_name) {

ñọc thành phần tiếp theo của path_name từ dòng vào;

xác minh quyền truy cập của quá trình ñối với working_inode là ñúng ñắn;

if (working_inode là gốc và thành phần tiếp theo là "/")

ñọc từ ñĩa nội dung th ư mục working_inode;

/* nhờ các thuật toán nh ư bmap, bread và brelse */

if (thành phần trùng với một ñiểm vào của th ư mục working_inode)

{

nhận số hiệu inode từ thành phần ñã gặp;

working_inode = inode của thành phần ñã gặp; /* thuật toán iget*/

Trang 23

Linux operating system - Nguyen Tri Thanh

Thuật toán ialloc

while (true)

{

if (super block của hệthống file bị khóa){

sleep (cho tới khi super block không bị khóa); continue;

}

if (nếu danh sách các inode rỗi trên super block ñã rỗng){

Khóa super block;

Lấy inode nhớ trên super block;

Tìm kiếm các inode chưa sử dụng trên ñĩa lên super block cho ñến khi ñầy;

Mở khóa super block;

wakeup (cho tới khi super block rỗi);

if (không có inode trên ñĩa) return (không có inode);

ðặt inode nhớ là inode tiếp theo tìm ñ ư ợc cuối cùng;

}

Lấy số hiệu của inode từ danh sách các inode trên super block;

Lấy inode;

if (tất cả inode không rỗi) {

Ghi inode lênñĩa; Loại bỏ inode;continue;

}

Thiết lập các giá trị cho inode;

Ghi inode lên ñĩa;

Giảm tổng số các inode rỗi trên hệ thống file;

return (inode);

}

Trang 24

Linux operating system - Nguyen Tri Thanh

Thuật toán ialloc – trường hợp danh sách không rỗng

Trước khi gán: 48 là số hiệu inode tiếp theo

Sau khi gán: 48 ñã ñược cung cấp cho nhu cầu, vì vậy 83 trở thành

chỉ số tiếp

Trang 25

Linux operating system - Nguyen Tri Thanh

Thuật toán ialloc – trường hợp danh sách rỗng

Trước khi gán: danh sách inode rỗi trên super block là rỗng, do 470

là chỉ số tiếp nên tìm từ số hiệu 471 trở ñi

Sau khi tìm kiếm có ñược danh sách rỗi và 471 là số hiệu inode

cần gán; lúc này, 535 trở thành chỉ số inode tiếp theo

Trang 26

Linux operating system - Nguyen Tri Thanh

Thuật toán ifree

Vào: hệ thống file, chỉ số inode

Ra: Không

Tăng tổng số inode rỗi trên super block;

if (super block trên hệ thống file ñã bị khóa) return;

if (danh sách các inode ñầy) {

if (chỉ số inode lớn hơn inode nhớ trên super block)

ðặt chỉ số inode nhớ = chỉ số inode cần giải phóng;

} else lưu trữ chỉ số inode;

return;

Trang 27

Linux operating system - Nguyen Tri Thanh

Thuật toán alloc

Vào: hệ thống file

Ra: bộ nhớ ñệm cho khối ñĩa

while (super block của hệ thống file ñã bị khóa)

sleep (cho ñến khi super block không bị khóa;

Loại bỏ khối ñược cấp phát trên super block;

if (khối bị loại bỏ là khối cuối cùng trong danh sách các khối rỗi) {

Khóa super block;

ðọc khối có danh sách các khối rỗi;

Sao chép các khối ñó vào super block của hệ thống file;

Loại bỏ vùng ñệm cho khối;

Mở khóa cho super block;

}

Lấy bộ ñệm của khối ñó;

Loại bỏ nội dung bộ ñệm;

Giảm các khối nhớ rỗi lên hệ thống file;

Chuyển chỉ số trên super block;

return (bộ ñệm tương ứng với khối);

}

Trang 28

Linux operating system - Nguyen Tri Thanh

Trang 29

Linux operating system - Nguyen Tri Thanh

Liên kết

Có hai kiểu liên kết: liên kết cứng và tượng trưng

 Liên kết cứng là một tên khác của một file

 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ên kế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: file tham chiếu

theo tên ñến một file khác

 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

 Các thao tác (mở, ñọc, ghi ) ñược thực hiện trên các file

liên kết, sau ñó, nhân hệ thống sẽ tự ñộng thực hiện trênfile ñích của liên kết

 Khi xóa file, file liên kết sẽ bị xóa (file ñích vẫn còn)

Trang 30

-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

-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=<tên-thư-mục>: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

 Ví dụ

# ln -s /usr/doc/g77/DOC g77manual.txt

Trang 31

Linux operating system - Nguyen Tri Thanh

Quyền truy nhập

 File và thư mục ñều có một chủ sở hữu và một nhóm sở hữu và

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

Trang 32

Linux operating system - Nguyen Tri Thanh

Các kiểu file

Trang 33

Linux operating system - Nguyen Tri Thanh

Các kiểu file có trong Linux

 File người dùng (user data file)

 Là các file tạo ra do hoạt ñộng của người dùng (khi các

chương trình)

 File hệ thống (system data file)

 Là các file lưu trữ thông tin của hệ thống (cấu hình, tài

khoản, thông tin thiết bị )

 File thực hiện (executable file)

 Là các file chứa mã lệnh hay chỉ thị cho máy tính thực hiện

 Thư mục (directory)

 Là file có cấu tạo hoàn toàn tương tự như file thông thường

khác nên có thể gọi là file

Trang 34

Linux operating system - Nguyen Tri Thanh

Các kiểu file có trong Linux

 File thiết bị (device file)

 Là file mô tả thiết bị, ñược lưu trữ trong thư mục /dev

 Ví dụ: tty (teletype - thiết bị truyền thô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,

 File liên kết (linked file)

 Là những file chứa tham chiếu ñến các file khác trong hệ

Trang 35

Linux operating system - Nguyen Tri Thanh

Các quyền truy cập

Trang 36

Linux operating system - Nguyen Tri Thanh

Thay ñổi quyền truy cập file

chmod [tùy-chọn] <mod [,mod] > <file >

chmod [tùy-chọn] <mod-hệ-8> <file >

chmod [tùy-chọn] reference=nhómR <file >

 Tùy chọn cũng có ý nghĩa giống như lệnh chgrp:

 Dạng thứ hai là dạng xác lập tuyệt ñối

 Dạng gián tiếp tuân theo quyền truy nhập của file nhómR

Trang 37

Linux operating system - Nguyen Tri Thanh

Cách xác lập tương ñối

Ví dụ

chmod g+w test chmod o-rx test

Trang 39

Linux operating system - Nguyen Tri Thanh

Thay ñổi quyền sở hữu

chown [tùy-chọn] [chủ][:nhóm] <file >

 Tùy chọn:

-c, changes: hiển thị dòng thông báo chỉ với các file mà lệnh làm thay ñổi sở

hữu (số thông báo hiện ra có thể ít hơn trường hợp -v, -verbose).

-f, silent, quiet: bỏ qua hầu hết các thông báo lỗi.

-R, recursive: thực hiện ñổi quyền sở hữu ñối với thư mục và file theo ñệ quy -v, verbose: hiển thị dòng thông báo với mọi file liên quan mà chown tác ñộng

tới (có hoặc không thay ñổi sở hữu).

help: ñưa ra trang trợ giúp và thoát.

 Ví dụ

# chown lan LinuxVN.com

Trang 40

Linux operating system - Nguyen Tri Thanh

Thay ñổi nhóm sở hữu

chgrp [tùy-chọn] {nhóm| reference=nhómR} <file >

 Tùy chọn của lệnh là (một số t-ơng tự như ở lệnh chown):

-c, changes : hiển thị dòng thông báo chỉ với các file mà lệnh làm thay

ñổi sở hữu (số thông báo hiện ra có thể ít hơn trờng hợp v,

-verbose)

-f, silent, quiet : bỏ qua hầu hết các thông báo lỗi.

-R, recursive : thực hiện ñổi quyền sở hữu ñối với thư mục và file theo

Trang 41

Linux operating system - Nguyen Tri Thanh

ðăng nhập vào một nhóm người dùng mới

 Người dùng có thể là thành viên của một hoặc nhiều nhómngười dùng khác nhau

 Tại một thời ñiểm, một người dùng thuộc vào chỉ một nhóm

 Khi một người dùng ñăng nhập, hệ thống ngầm ñịnh người dùng

ñó là thành nhóm khởi ñộng

 Nếu muốn sử dụng quyền sở hữu theo các nhóm khác ñối vớinhững file thì người dùng phải chuyển ñổi thành thành viên củamột nhóm tương ứng

Trang 42

Linux operating system - Nguyen Tri Thanh

ðăng nhập vào một nhóm người dùng mới

 Lệnh ñể chuyển ñổi nhóm người sử dụng

newgrp [nhóm]

 Ví dụ

 người dùng là thành viên của hai nhóm user và installer

 user là nhóm khởi ñộng

 khi ñăng nhập, người dùng là thành viên của nhóm user

 khi muốn sử dụng một số các chương trình thuộc quyền sở hữu

của nhóm installer, gõ lệnh sau:

# newgrp installerNếu người dùng chuyển vào một nhóm không là thành viên

# newgrp hot2thì Linux sẽ ñưa ra một khuyến cáo thân thiện như sau:

newgrp: Sorry

Ngày đăng: 19/10/2014, 22:04

HÌNH ẢNH LIÊN QUAN

Hình ảnh các khối bộ nhớ - Bài giảng Hệ thống file unix
nh ảnh các khối bộ nhớ (Trang 9)

TỪ KHÓA LIÊN QUAN