Tải bản đầy đủ (.doc) (36 trang)

Tìm hiểu về hệ điều hành linux

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (522.37 KB, 36 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
TRUNG TÂM CÔNG NGHỆ THÔNG TIN

BÁO CÁO
THỰC TẬP TỐT NGHIỆP
Tìm hiểu về hệ điều hành Linux

Nơi thực tập : Trung tâm CNTT – CDIT
Người hướng dẫn : Thầy Phạm Quốc Hùng

Hà Nội


MỤC LỤC
MỤC LỤC...........................................................................................................................2
Phần A : GIỚI THIỆU ĐƠN VỊ THỰC TẬP...................................................................4
I. Chức năng.............................................................................................................................4
II. Tổ chức ................................................................................................................................5
III. Các lĩnh vực hoạt động......................................................................................................5

Phần B : NỘI DUNG THỰC TẬP.....................................................................................5
I. Phần giới thiệu chung...........................................................................................................5

Một client truy cập đến hệ thống file sử dụng lời gọi hệ thống được cung cấp
bởi hệ điều hành của nó. Tuy nhiên, giao diện hệ thống file LINUX cục bộ
được thay bởi 1 giao diện đến Hệ thống file ảo (VFS). Các thao tác trên giao
diện VFS hoặc được chuyển đến 1 hệ thống file cục bộ, hoặc được chuyển
đến 1 thành phần riêng biệt gọi là NFS client, đảm nhiệm việc điều khiển
truy cập đến các file được lưu ở server từ xa. Trong NFS, tất cả client –
server giao tiếp thông qua các RPC (REMOTE PROCEDULE CALL).
Client gửi yêu cầu truy cập file đến Server, các yêu cầu này sau đó sẽ được


gửi xuống NFS client, rồi qua RPC client, qua mạng internet rồi sang bên
phía server, bên server cũng tổ chức các thành phần như client, yêu cầu đến
server, nó sẽ đi từ dưới lên trên, ra lệnh cho hệ thống VFS bên server thao tác
file....................................................................................................................24

2


TRUNG TÂM CÔNG NGHỆ THÔNG TIN
PHÒNG …….

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập Tự do Hanh phúc

ĐÁNH GIÁ KẾT QUẢ THỰC TẬP TỐT NGHIỆP
(Thời gian thực tập: Từ ngày ……/…../20 đến ngày ……/…../20 )
Họ và tên sinh viên:
Lớp: D07 HTTT2
NỘI DUNG ĐÁNH GIÁ
1. Chấp hành kỷ luật: (Tốt, Trung bình, hoặc Yếu)
2. Ý thức học tập: (Tốt, Trung bình, hoặc Yếu)
3. Quan hệ, giao tiếp: (Tốt, Trung bình, hoặc Yếu)
4. Điểm ((Thang điểm 10)

Các ý kiến khác (nếu có:
Ngày tháng năm 20….
Giáo viên hướng dẫn thực tập
(Ký và ghi rõ họ tên)


3


LỜI CẢM ƠN
Để hoàn thành đề tài ‘‘Tìm hiểu về hệ điều hành Linux’’, ngoài sự cố gắng của bản
thân, em còn nhận được sự giúp đỡ, chỉ bảo rất tận tình của các thầy giáo trong học
viện.
Em xin bày tỏ lời cảm ơn đến các thầy giáo trong khoa Công nghệ thông tin 1, các
thầy giáo ở trung tâm công nghệ thông tin – CDIT, đặc biệt là thầy Phạm Quốc
Hùng – công tác tại phòng nghiên cứu ứng dụng Viễn Thông, đã tận tình hướng dẫn,
chỉ bảo, cung cấp tài liệu chuyên ngành về Linux để em tham khảo và tổng hợp.
Em cũng gửi lời cảm ơn đến các bạn cán bộ lớp D07 HTTT đã sắp xếp các buổi họp
nhóm để trao đổi kiến thức chuyên môn.

Phần A : GIỚI THIỆU ĐƠN VỊ THỰC TẬP
I. Chức năng
Được thành lập năm 1999 trong xu thế cạnh tranh và hội nhập toàn cầu, Trung tâm
Công nghệ Thông tin CDIT, với vai trò là đơn vị nghiên cứu phát triển hàng đầu
trong lĩnh vực công nghệ thông tin, xác định: việc lĩnh hội, đúc kết và phát huy tiềm
năng, nội lực, làm chủ công nghệ là mục tiêu chiến lược nhằm thực hiện thành công
định hướng gắn kết Nghiên cứu - Đào tạo - Sản xuất Kinh doanh.
Trung tâm Công nghệ Thông tin CDIT có nhiệm vụ: nghiên cứu, phát triển, triển
khai sản phẩm, chuyển giao công nghệ và đào tạo trong lĩnh vực Công nghệ Thông
tin phục vụ Ngành Bưu chính Viễn thông và xã hội.
4


II. Tổ chức
BAN GIÁM ĐỐC


Phòng
tổng hợp

Phòng
kế
hoạch
– tài
chính

ĐOÀN, CÔNG ĐOÀN,
ĐOÀN THANH NIÊN

Phòng
nghiên
cứu phát
triển
Mạng –
viễn
thông

Phòng
nghiên
cứu ứng
dụng
bưu
chính

Phòng
nghiên
cứu ứng

dụng
Viễn
thông

III. Các lĩnh vực hoạt động
Trung tâm Công nghệ Thông tin hoạt động trên năm lĩnh vực chính:
1. Nghiên cứu khoa học công nghệ;
2. Phát triển, triển khai công nghệ và sản phẩm;
3. Sản xuất phần mềm và thiết bị;
4. Tiếp nhận và chuyển giao công nghệ;
5. Đào tạo và bồi dưỡng nhân lực.

Phần B : NỘI DUNG THỰC TẬP
I. Phần giới thiệu chung
 Tên chủ đề thực tập: Tìm hiểu về hệ điều hành Linux
 Mục tiêu: Hiểu được kiến trúc và nguyên lí hoạt động của hệ điều hành
Linux, từ đó có thể đi sâu về các lĩnh vực như lập trình hoặc bảo mật hệ thống.
 Nội dung: gồm có các phần: Giới thiệu, Cách cài đặt, Kiến trúc, Hệ thống file
phân tán, Tính bảo mật, So sánh với Windows và Tổng kết.

5


 Kết quả cần đạt: Trình bày thành quyển với nội dung kiến thức rõ ràng, đầy đủ
và báo cáo trước hội đồng thực tập.
II. Phần trình bày
1. Giới thiệu về Linux
1.1 Linux là gì?
Linux là hệ điều hành. Về mặt nguyên tắc hệ điều hành cũng là một software; nhưng
đây là một software đặc biệt – được dùng để quản lý, điều phối các tài nguyên

(resource) của hệ thống (bao gồm cả hardware và các software khác).Linux còn
được gọi là Open Source Unix (OSU), Unix-like Kernel, clone of the UNIX
operating system. Linux do Linus Torvalds, một sinh viên tại trường Đại Học ở
Helsinki (Phần Lan) phát triển dựa trên hệ điều hành Minix, một hệ điều hành có
cấu trúc tương tự Unix với các chức năng tối thiểu được dùng trong dạy học. Hiện
nay, Linux là một hệ điều hành với mã nguồn mở (Open Source) và miễn phí (free)
dưới bản quyền của tổ chức GNU (Gnu’s Not Unix). Khởi đầu, Linux được thiết kế
để hoạt động trên nền tảng của kiến trúc i386 Intel với khả năng đa tác vụ
(multitasking). Tuy nhiên ngày nay, Linux đã có các phiên bản trên các họ chip
khác chẳng hạn như chip Alpha. Linux có nguyên lý hoạt động tương tự hệ điều
hành Unix (Unix-like). Mặc dù Linux không phải là Unix nhưng người ta vẫn xem
Linux như là phiên bản Unix trên PC (PC version of Unix OS). Do là Unix-like;
Linux có đầy đủ tất cả các đặc tính của Unix (fully functional). Ngoài ra nó còn hỗ
trợ thêm một số tính năng mà trên Unix không có, như long file name (tên file có ký
tự space “ ”).
1.2 Các phiên bản của Linux
RedHat Linux:
Hiện đã có version (ấn bản) 7.0; là phiên bản khá phổ biến. Cung cấp khá nhiều tool
và utility để hỗ trợ user (người sử dụng) từ các thao tác setup (cài đặt) đến config
(cấu hình) hệ thống.
Mandrake Linux:
Một dòng khác thoát thai từ RedHat Linux, tương thích hoàn toàn với RedHat. Hiện
có tới version 7.1.
6


Slackware Linux:
Đây là một trong phiên bản Linux lâu đời. Hỗ trợ các dịch vụ mạng rất mạnh, tuy
nhiên việc setup và config đòi hỏi user có kiến thức tốt về hệ điều hành này. Hiện có
version 7.0

S.u.S.E. Linux:
Do hãng S.u.S.E (Đức) phát hành, khá phổ biến tại Âu châu, nhưng không được phổ
biến tại các nước khác. Có các công cụ riêng để hỗ trợ setup và config tương đối dễ
sử dụng. Hiện đang có đến version 6.3
Free BSD Linux:
Được phát triển bởi Đại Học Berkeley, đây không phải là phiên bản thương mại, do
vậy ít được phổ biến. Có rất nhiều tiện ích dành cho việc phát triển hệ thống và
lập trình. Hỗ trợ đầy đủ các shell trên Unix. Hiện có version 2.2.
Corel Linux:
Phát triển bởi hãng Corel, dễ setup, có graphic interface (giao diện đồ họa) khá
giống Windows NT kể các tool và utility. Tuy nhiên các config tool chưa hoạt
động tốt. Hiện có đến version 1.0
Open Linux:
Do hãng Caldera phát triển, dễ cài đặt cũng như sử dụng. Giao diện KDE. Thích
hợp cho người sử dụng tại gia đình. Hiện đang có version 2.3.
1.3 Các tính năng và dịch vụ cơ bản của Linux
Như đã trình bày, Linux là một hệ điều hành với đầy đủ các tính năng của Unix. Vì
thế nó có khả năng đóng vai trò của một Internet/Intranet Server (Web Server, Ftp
Server, Mail Server, DNS Server, v.v....), Database Server, File Server v.v... hoặc
làm việc như một Unix workstation (máy trạm Unix). Như vậy, Linux là một hệ
điều hành mạng với đầy đủ các tính năng của nó. Cũng như Unix, Linux cũng tuân
theo chuẩn POSIX (Portable Operating System Interface for Computer Enviroment)
mặc dù nó vẫn chưa được tổ chức này công nhận.

7


Các service được cung cấp bởi Linux bao gồm hầu hết các service của Unix như:
UUCP (Unix to Unix Copy Protocol): Giao thức hỗ trợ service truyền thông giữa
các host Unix.

TCP/IP IP (Transmission Control Protocol/Internet Protocol): Giao thức cung cấp
service truyền thông trên mạng Internet.
X Protocol: Giao thức để xử lý GUI (Graphics User Interface) trên X Window.
PPP: (Point to Point Protocol): Giao thức dùng để truyền thông trực tiếp giữa
hai máy.
Samba: Giao thức cung cấp File service tương tự File Service của Windows NT cho
phép các windows client truy xuất hệ thống file trên Linux Server.
DNS (Domain Name Service): Dịch vụ quản lý tên host trên mạng Internet/Intranet.
v.v....
Tuy nhiên các service trên chỉ là các service tùy chọn, nghĩa là hệ thống có thể có
hay không có các service trên vẫn hoạt động tốt. Các service này chỉ làm cho
Unix/Linux tăng thêm khả năng và sức mạnh của mình mà thôi.
Còn các service được mô tả sau đây là các service quan trọng của Unix/Linux.Điều
đó có nghĩa là nếu không có các service này, hệ thống có thể không hoạt động được.
Do vậy, một số trong chúng sẽ được cài đặt một cách tự động khi chúng ta thiết lập
một hệ thống Unix/Linux.
Init:
Dịch vụ đơn lẻ quan trọng nhất trong hệ thống Unix/Linux là init. Nó được khởi
động như là tiến trình đầu tiên trong mọi hệ thống Unix/Linux. Đây là tiến
trình dùng để khởi động (boot) hệ thống. Nó sẽ kiểm tra và mount filesystems vào
hệ thống, khởi động các daemon. Nó cung cấp các khái niệm như single user mode
(chế độ hoạt động như hệ người dùng đơn lẻ), multiuser mode (chế độ đa người
dùng). Một số tài liệu còn gọi là run level (cấp độ hoạt động). Khi hệ thống kết thúc
hoạt động (shutdown), init sẽ dọn dẹp (dừng mọi triến trình đang hoạt động, umount
filesystems, v.v...).

8


Login:

Dịch vụ này cho phép user login (đăng nhập) vào hệ thống và khai thác các tài
nguyên của hệ thống – trong quyền hạn mà user này được cấp.
Graphic User Interface (GUI):
Đây chính là X Window service. Nó cung cấp khả năng giao tiếp đồ họa với người
sử dụng. Nếu không cài đặt X service, một số các chương trình ứng dụng có xử lý
đồ họa sẽ không thể chạy.
Network:
Dịch vụ này cho phép user có thể login vào hệ thống từ xa.
Network File System (NFS):
Đây là dịch vụ được hãng SUN phát triển. Nó cho phép các tác vụ về file trong
một hệ thống mạng là trong suốt (transparency) đối với user. Nghĩa là, các user thao
tác với các tập tin trên máy khác nhau trong cùng hệ thống mạng như đang thao tác
trên máy đơn duy nhất.
1.4 Tóm lại:
Cũng như Unix, Linux là một hệ điều hành với các khả năng multiproccessing (đa
nhiệm), multitasking (đa tác vụ), multiuser (đa người dùng) sau hơn mười năm
phát triển và hiệu chỉnh bởi hàng nghìn lập trình viên trên thế giới đã chứng tỏ
được là một hệ điều hành uyển chuyển (có thể hoạt động trên nhiều platform), đáng
tin cậy và ổn định.
2. Cài đặt Linux từ đĩa CD/DVD
Có rất nhiều phiên bản Linux. Ở đây, em trình bày cách cài đặt bản RedHat 9.0. Do
khuôn khổ tài liệu này có hạn, nên em chỉ nêu ra cấu hình yêu cầu cho máy tính và
một số các bước có tính quan trọng trong quá trình cài đặt.
2.1 Cấu hình yêu cầu đối với máy tính
CPU: Pentium
- Chế độ Text: 200MH trở lên
- Chế độ Graphic: 400MH trở lên
Dung lượng đĩa cứng: (Tùy theo ứng dụng cần cài đặt)
- Server: 850 MB
- Pesonal Desktop: 1,7 GB

- Workstation: 2,1 GB.

9


Bộ nhớ:
- Chế độ Text: 64 MB trở lên
- Chế độ Graphic: 128 MB trở lên
Ổ CD hoặc DVD, card mạng.

2.2 Chuẩn bị và cài đặt
Trước hết, ta cần có 1 đĩa CD/DVD chứa bộ cài RedHat 9.0. Sau đó cho đĩa vào ổ
CD/DVD và tiến hành khởi động hệ thống từ ổ CD/DVD ROM. Việc cài đặt khá dễ
dàng vì ta chỉ cần làm theo hướng dẫn hiện ra trên màn hình. Đây là 1 số bước:
- Chọn chế độ cài đặt(Text hoặc Graphic)
- Thông qua từng bước wizard để thiết lập các thông số về hệ thống như: Bàn phím,
chuột, ngôn ngữ hiển thị trong quá trình cài đặt, giờ hệ thống…
- Chọn kiểu cài đặt.
- Thiết lập phân vùng cài Linux RedHat
- Cài đặt boot loader
- Cấu hình Account
- Các lưu ý lựa chọn gói phần mềm cài đặt
- Cấu hình X-Windown.
2.3 Một số lưu ý khi cài
Trong Linux bắt buộc phải có tối thiểu 2 partition :
Một là, Partition chính (Linux native filesystem) chứa thư mục gốc (/) và hạt nhân.
Độ lớn khỏang 6GB nếu muốn cài đặt tất cả các packages của RedHat Linux 9.0 và
50-100 MB dành cho phần /boot (phần này phải được đạt tại Primary Partition của
HDD để khởi động).
Hai là, Partition swap (Linux swap space) được dùng làm không gian trao đổi dữ

liệu khi vùng nhớ chính đầy, dung lượng cho phân này khoảng gấp 2 đến gấp 3 lần
dung lượng bộ nhớ vật lý của hệ thống. Tuy nhiên chỉ nên dùng khoảng 256 MB trở
lại cho máy tính cá nhân.
Cuối cùng, ta phải chú ý ghi nhớ mật khẩu của root, để sau này có thể cài đặt các
ứng dụng.
3. Kiến trúc Linux
Linux gồm có 2 thành phần chính là Shell và Kernel

10


Shell

Kernel

CPU
3.1 Shell: Thời kỳ đầu của máy tính, các chỉ dẫn sử dụng ngôn ngữ nhị phân - rất
khó hiểu. Vì thế Os có một chương trình đặc biệt được gọi là Shell. Shell chấp nhận
các chỉ dẫn hoặc các lệnh bằng tiếng Anh (hầu hết như vậy) và nếu như lệnh có giá
trị thì nó chuyển đến kernel.
Shell là chương trình giao tiếp với người dùng. Shell là trình thông dịch ngôn ngữ
dòng lệnh -thực lệnh các lệnh đọc từ các thiết bị input (như bàn phím) hoặc từ một
file.Shell thì không phải là phần của kernel, nhưng sử dụng kernel để thực thi
chương trình, tạo các file,...
Shell hoạt động như sau: Khi ta gõ lệnh vào shell và kết thúc bởi <Enter>, đầu tiên
shell sẽ biên dịch dòng lệnh như sau: tách dòng lệnh thành các phần gọi là các
token.
Một token có thể là 1 từ khóa, 1 biến hoặc 1 kí tự mà shell hiểu được. Sau đó, nó sẽ
xây dựng 1 dãy các token tuần tự, đến khi tạo thành 1 từ hoặc 1 tên hàm (function
name) hoặc kí hiệu phép toán mà shell hiểu được. Lệnh sau khi đã được dịch thì

được gửi đến nhân của hệ điều hành rồi gửi đến CPU thực hiện.
Một số loại shell mà Linux chứa:
BASH (Bourne-Again Shell)
CSH (C Shell)
KSH (Korn Shell)
TCSH

Để xem shell hiện hành, gõ lệnh sau:
11


$ echo $SHELL
Để tìm tất cả các shell có sẵn trong hệ thống, sử dụng lệnh sau:
cat /etc/shells
Trong MS-DOS, tên Shell là COMMAND.COM được sử dụng cho cùng mục đích
nhưng nó không mạnh bằng các shell trong Linux. Bất kỳ shell nào cũng đọc lệnh từ
người dùng (bàn phím hoặc chuột) và ra lệnh cho hệ điều hành Linux những gì mà
người dùng muốn. Nếu chúng ta cho một lệnh từ bàn phím thì nó được gọi là giao
diện dòng lệnh (thường có $ prompt ở trước, prompt phụ thuộc vào shell của người
dùng và môi trường mà họ thiết lập hoặc bởi người quản trị hệ thống, do đó có thể
tạo ra các prompt khác nhau).
Khi mở một shell, ta cần đến tài khoản kích hoạt vào thư mục chủ (thông thường
nằm trong /home/tên_người_dùng). Chú ý rằng mỗi lệnh đều có nhiều tùy chọn
riêng của mình. Để xem các tùy chọn cho một lệnh cụ thể, đơn giản chỉ cần gõ "man
<command>" (trong đó: man là từ khóa; command là tên lệnh). Một điểm quan
trọng cần chú ý là trong các hệ điều hành Linux, câu lệnh có phân biệt chữ hoa, chữ
thường. “A” sẽ được hệ điều hành hiểu là khác so với “a”.
Một số lệnh cơ bản trong shell:
pwd: đưa ra ngoài màn hình thư mục đang hoạt động
(ví dụ: /etc/ssh).

cd: thay đổi thư mục
(ví dụ: cd .. – ra một cấp thư mục hiện tại; cd vidu – vào thư mục /vidu).
ls: đưa ra danh sách nội dung thư mục.
mkdir: tạo thư mục mới
(mkdir tên_thumuc).
touch: tạo file mới
(touch ten_file).
rmdir: bỏ một thư mục
(rmdir ten_thumuc).
cp: copy file hoặc thư mục
(cp file_nguồn file_đích).
12


mv: di chuyển file hoặc thư mục; cũng được dùng để đặt lại tên file hoặc thư mục
(mv vị_trí_cũ vị_trí_mới hoặc mv tên_cũ tên_mới).
rm: loại bỏ file
(rm tên_file).
Ở đây chỉ nêu ra một số lệnh thông thường để minh họa cách sử dụng shell, ngoài ra
còn nhiều lệnh nữa, riêng shell nếu chúng ta tìm hiểu sâu thì cũng rất phức tạp, nhất
là lĩnh vực lập trình trong shell.
3.2 Kernel: được coi là lõi của hệ điều hành, chịu trách nhiệm đảm bảo cho hệ
thống hoạt động theo kiểu đa nhiệm, đa người dùng, quản lý file, quản lý phần cứng,
tránh gây xung đột giữa các thành phần trong hệ điều hành. Kernel gồm có 5 thành
phần chính như hình vẽ sau:

3.2.1 Process Scheduler : còn gọi là bộ định thời, là bộ phận có nhiệm vụ phân chia
thời gian sử dụng tài nguyên hệ thống cho các tiến trình. Do Linux là hệ điều hành
đa nhiệm, trong 1 khoảng thời gian có thể có nhiều tiến trình được thực hiện mà tài


13


nguyên hệ thống lại là hữu hạn nên phải sắp xếp sao cho mỗi tiến trình đều được sử
dụng tài nguyên mà không gây ra tranh chấp.
Vòng đời sống của 1 tiến trình được minh họa như sau:

(1): Đang chạy thì tạm ngừng nhường CPU cho tiến trình được ưu tiên hơn.
(2): Tiếp tục chờ tiến trình sau thực hiện xong.
(3): Chuyển sang trạng thái running để thực hiện tiếp.
(4): Kết thúc.
Kiến trúc bên trong của Process Scheduler :

Chia làm 4 modun :
Module luật định thời (scheduling policy): chịu trách nhiệm phân xử xem process
nào được quyền truy xuất CPU. Hệ thống hoạt động có thông suốt hay không nhờ

14


vào bộ luật này, tránh trường hợp 1 process chiếm thời gian hệ thống qúa nhiều làm
các process khác bị đóng băng (freeze)
Module phụ thuộc kiến trúc (architeture-specific): module này gồm các code
assembly phụ thuộc vào mỗi loại CPU dùng để tạm dừng và phục hồi lại tiến trình.
Module độc lập kiến trúc (architeture-independent): module gọi các hàm từ
module phụ thuộc kiến trúc và module luật để switch giữa các process đồng thời nó
còn gọi các hàm ở bộ phận quản lý bộ nhớ để thiết lập virtual memory cho các
process được phục hồi.
Module hàm gọi hệ thống (system call). Gồm các hàm mà user có thể dùng để
tương tác với Process Scheduler.

Các thành phần tương tác với Scheduler process :

Network
interface

VFS

MM

Scheduler
process

IPC

3.2.2 Memory Manager-MM
Đây là bộ phận dùng để quản lý bộ nhớ. MM chịu trách nhiệm điểu khiển tiến trình
truy xuất tài nguyên bộ nhớ. Bản thân CPU cũng có một hệ thống quản lý bộ nhớ
vật lý mà cho phép ánh xạ giửa bộ nhớ process với bộ nhớ vật lý. MM phải lưu trữ
ánh xạ này cho từng process. Thêm vào đó MM còn cho phép swap;tức là nó sẽ di
chuyển những trang bộ nhớ không dùng xuống ổ cứng cho phép PC dùng bộ nhớ
RAM còn trống.

MM có 3 module:

15


Module phụ thuộc kiến trúc: code để gọi các lệnh của hệ thống quản lý bộ nhớ của
CPU.
Module độc lập kiến trúc: ánh xạ cho từng process và swap bộ nhớ ảo. Nó cũng

quyết định xem phải remove trang nào, load trang nào.
System call : cho phép các process tác động lên MM bao gồm xin cấp phát vùng
nhớ. Một số các giao diện (System call interface) là :
malloc() / free() – cấp phát hoặc giải phóng một vùng nhớ
mmap() / munmap() / msync() / mremap() – ánh xạ file vào vùng nhớ ảo
mprotect – thay đổi chế độ bảo vệ cho vùng nhớ ảo
swapon() / swapoff() – thêm hoặc bỏ các file swap
Sơ đồ tương tác với các thành phần khác:
Network
interface

VFS

Scheduler
process
Memory
management

IPC

3.2.3 Virtual system file (VFS)
Như đã nói ở trên, một trong các nhiệm vụ của Kernel là quản lý việc truy xuất đến
các file mà Linux lại hỗ trợ nhiều loại file: ext, ext2, xia, minix, umsdos, vfat, proc,
16


smb, ncp, iso9660, sysv, hpfs, affs, ufs. Như vậy, khi có 1 yêu cầu đọc hoặc ghi file
chẳng hạn, thì Kernel sẽ phải nhận biết được kiểu file cần đọc/ghi là gì? Và thực
hiện các thao tác tương ứng với từng kiểu khác nhau. Như vậy sẽ tốn thời gian và
hiệu năng xử lí không cao, do vậy 1 giải pháp được đưa ra là dùng 1 lớp ngăn cách

giữa hệ thống file và Kernel, để các file khác nhau sẽ được “nhìn” qua lớp đó thành
1 kiểu giống nhau đối với Kernel. Như vậy, Kernel chỉ cần dùng những thao tác
giống nhau đối với tất cả các loại file. Và các thao tác ứng với từng loại file khác
nhau là dành cho lớp đó. Lớp này được gọi là hệ thống ảo hóa file (Virtual file
system).
Ví dụ: Chẳng hạn khi có yêu cầu từ 1 tiến trình là đọc file ABC.smb và file
XYZ.ext2. Thì 2 file này được Kernel “nhìn” qua VFS là giống nhau. Như vậy chỉ
dùng thao tác giống nhau, còn những thao tác riêng với từng loại file đó là do VFS
thực hiện.
VFS được chia thành 5 modun:

Các module thiết bị điều khiển(device driver), mỗi một phần cứng sẽ có 1 module
thiết bị điều kiển riêng, cái này thường gọi là driver. Linux cũng như các hệ điều
hành khác cho phép thêm vào 1 driver mới.
17


Module giao diện độc lập thiết bị(device independent interface) Modun này là
abstract cho tất cả các driver. Các module hệ thống file logic: Trên thực tế có nhiều
hệ thống file khác nhau, mỗi hệ thống file có một module điều khiển riêng.
Module độc lập hệ thống file (system independent interface): Modun này là
abstract không những cho các loại file system mà còn cho tất cả các driver.
System call: các hàm gọi hệ thống cho VFS. Một số lời gọi hàm:
create(): tạo file
lookup(): tìm file
link() / symlink() / unlink() / readlink() / follow_link(): quản lý hệ thống file links
mkdir() / rmdir(): tạo hoặc xóa thư mục
readpage() / writepage(): đọc hoặc ghi một trang của bộ nhớ
rename(): đổi tên một thư mục
Sơ đồ tương tác với các thành phần khác:


Scheduler
process

Network
interface

VFS

Memory
management

IPC

3.2.4 Network interface (NET)
NET cho phép Linux connect với các hệ thống khác bằng mạng. Mặc dù có rất
nhiều loại thiết bị và giao thức mạng, NET đã abstract tất cả cho phép những phần
18


khác có thể truy xuất qua mạng mà không quan tâm đền các thiết bị và giao thức
được sử dụng.
NET có 5 module:

Modun Driver cho thiết bị mạng(network device driver), mỗi module cho mỗi loại
thiết bị.
Module độc lập thiết bị(device independent interface): abstract tất cả các thiết bị
mạng thành tập tin để truy cập.
Các Module giao thức mạng(network protocol): mỗi module cho mỗi loại giao
thức truyền, Linux hỗ trợ tốt nhất cho giao thức TCP và UDP.

Module độc lập giao thức mạng(protocol independent interface): abstract cho tất
cả các module giao thức mạng và các driver.
System call: các lời gọi từ bên ngoài.
Sơ đồ tương tác với các thành phần khác:

19


3.2.5 Inter- communication process (IPC)
Linux là hệ điều hành đa nhiệm, các tiến trình được sắp xếp để cùng chạy mà không
xung đột với nhau, đó là nhiệm vụ của bộ định thời. Nhưng nhiều trường hợp, các
tiến trình cần phải trao đổi dữ liệu với nhau. Như vậy cần phải đảm bảo sự toàn vẹn
của dữ liệu được trao đổi và không gây xung đột tài nguyên giữa các tiến trình.
Nhiệm vụ đó là của thành phần gọi là quản lý giao tiếp giữa các tiến trình (IPC).
Ví dụ : có 2 tiến trình P0 và P1 với
P0 : Đọc từ file nhiều dãy số nguyên liên tiếp(mỗi dãy có thể có số phần tử khác
nhau) sau đó tiến trình P0 lần lượt gửi các dãy này cho P1.
P1 : Thực hiện sắp xếp các dãy theo thứ tự tăng dần,đồng thời tính tổng của dãy đó
rồi gửi kết quả và tổng tương ứng của mỗi dãy về P0. Lúc này P0 thực hiện ghi kết
quả lại vào file sao cho : dãy có tổng bé nhất được ghi đầu tiên,dãy có tổng lớn hơn
được ghi sau.
IPC gồm có 5 modun

20


System call interface: các lời gọi hệ thống
File IPC : gồm 2 cơ chế pipes (đường ống) và fifo (hàng đợi) để lấy đầu ra của 1
tiến trình làm đầu vào của tiến trình khác.
Net IPC : Cho phép các tiến trình trên mạng giao tiếp với nhau thông qua socket, Ví

dụ : tiến trình này sẽ gửi thông điệp và thông điệp đó sẽ được đọc bởi tiến trình khác
qua socket.
System V IPC : Xác thực các tiến trình yêu cầu tài nguyên. Các tiến trình sẽ dùng
một định danh để gửi mesenger đến kernel để yêu cầu tài nguyên thông qua system
call interface. Sau đó System V IPC sẽ tiến hành kiểm tra định danh đó có hợp lệ
không, nếu có sẽ xếp vào hàng đợi để chờ phục vụ.
Kernel IPC : Bộ phận này có nhiệm vụ làm tiến trình đang chạy tạm ngừng để
nhường CPU cho tiến trình được ưu tiên, sau đó phục hồi lại tiến trình ban đầu. Nó
gồm 2 phần là Signals để nhận tín hiệu từ System V IPC và Wait Queues để lưu
thông tin về các tiến trình tạm ngừng.
Sơ đồ tương tác với các thành phần khác:

21


4. Hệ thống file phân tán (Network file system)
Tên đầy đủ là Hệ thống file mạng của Sun Microsystem - thường được gọi tắt là
NFS. NFS ban đầu được phát triển bởi Sun dành cho các máy trạmUNIX, sau là cho
cả LINUX ,tuy nhiên nó cũng có thể chạy tốt trên các hệ điều hành khác. Ý tưởng
cơ bản của NFS là mỗi file server (máy chủ file) cung cấp 1 khung nhìn đã được
chuẩn hóa về hệ thống file cục bộ của nó. Nói cách khác, bất kể hệ thống file cục bộ
được thi hành như thế nào, thì mỗi NFS server (máy chủ hệ thống file mạng) hỗ trợ
cùng mô hình. Mô hình này cùng với 1 giao thức truyền thông cho phép các client
truy cập đến các file lưu trữ trên server. Hướng tiếp cận này cho phép 1 tập không
thuần nhất các tiến trình, có khả năng chạy trên các máy và các hệ điều hành khác
nhau, để cùng chia sẻ 1 hệ thống file chung.
Sơ lược lịch sử của NFS:
Phiên bản đầu tiên của NFS đã không được phát hành mà chỉ được lưu hành nội bộ
trong Sun.
Phiên bản thứ 2 được kết hợp trong hệ điều hành SunOS 2.0 (1985).

Vài năm sau, phiên bản thứ 3 của NFS được phát hành (1994) rồi đến phiên bản 4.
4.1 Kiến trúc của NFS
Trong mô hình Dịch vụ file từ xa (remote file service), các client truy cập 1 cách
trong suốt đến hệ thống file được quản lý bởi 1 server ở xa. Vì thế, thông thường
các client không biết chỗ thực sự của các file. Thay vào đó, chúng được cung cấp 1
giao diện đến hệ thống file, tương tự như giao diện của các hệ thống file cục bộ

22


thông thường. Trong trường hợp riêng, client chỉ được cung cấp 1 giao diện chứa
nhiều các thao tác file khác nhau, server chỉ có nhiệm vụ thực thi các thao tác file
đó. Chính vì vậy mô hình này còn được gọi là Mô hình truy cập từ xa (remote
access model).

NFS được thực thi theo kiến trúc phân tầng như sau:

23


Một client truy cập đến hệ thống file sử dụng lời gọi hệ thống được cung cấp bởi hệ
điều hành của nó. Tuy nhiên, giao diện hệ thống file LINUX cục bộ được thay bởi 1
giao diện đến Hệ thống file ảo (VFS). Các thao tác trên giao diện VFS hoặc được
chuyển đến 1 hệ thống file cục bộ, hoặc được chuyển đến 1 thành phần riêng biệt
gọi là NFS client, đảm nhiệm việc điều khiển truy cập đến các file được lưu ở server
từ xa. Trong NFS, tất cả client – server giao tiếp thông qua các RPC (REMOTE
PROCEDULE CALL). Client gửi yêu cầu truy cập file đến Server, các yêu cầu này
sau đó sẽ được gửi xuống NFS client, rồi qua RPC client, qua mạng internet rồi sang
bên phía server, bên server cũng tổ chức các thành phần như client, yêu cầu đến
server, nó sẽ đi từ dưới lên trên, ra lệnh cho hệ thống VFS bên server thao tác file.

Ta thấy, một lợi ích quan trọng của sơ đồ trên đó là sự độc lập của các hệ thống file
cục bộ. Theo nguyên tắc thì nó sẽ không hề quan tâm dù hệ điều hành tại client hay
server chạy 1 hệ thống file UNIX, 1 hệ thống file Windows 2000, hay thậm chí là 1
hệ thống file MS-DOS cũ. Chỉ có 1 điều quan trọng cần chú ý là các hệ thống file
này phải tùy theo mô hình hệ thống file được đưa ra bởi NFS.
4.2 Truyền thông giữa server – client trong NFS
Một điều quan trọng trong NFS đó là sự độc lập với hệ điều hành, kiến trúc mạng,
và các giao thức vận chuyển. Ví dụ như, các client chạy trên hệ thống Windows vẫn
có thể giao tiếp với 1 máy chủ file (file server) LINUX. Trong NFS, tất cả truyền
thông giữa client và server đều theo giao thức Open Network Computing RPC
(ONC RPC). Nói chung thì ONC RPC hoàn toàn tương tự với các hệ thống RPC
khác. Mọi thao tác NFS đều có thể thi hành khi 1 thủ tục đơn từ xa gọi đến 1 file
server. Dưới đây là minh họa một ví dụ:
Để đọc dữ liệu từ 1 file lần đầu tiên, trước hết 1 client thông thường phải dùng thao
tác lookup để truy tìm file, sau đó nó mới có thể gửi 1 yêu cầu đọc.

24


Sau khi file được tìm thấy, sẽ chuyển sang mở file, và sau đó server mới tiếp tục với
thao tác đọc. Như vậy ta có thể thấy, toàn bộ chỉ cần có 2 thông điệp phải trao đổi
giữa client và server. Các thao tác sẽ được nhóm lại với nhau trong 1 thủ tục ghép
(compound procedure). Nếu có lỗi thao tác dù bất kỳ lý do gì, thì không thao tác nào
nữa trong thủ tục ghép được thực hiện, và kết quả cho đến lúc đó sẽ được trả về cho
client. Ví dụ như, nếu thao tác truy tìm bị lỗi, thì việc mở file tiếp theo sẽ không
được thực hiện nữa.
4.3 Mô hình hệ thống file NFS
Mô hình hệ thống file được đưa ra bởi NFS cũng giống như mô hình được đưa ra
bởi hệ thống dựa trên UNIX. Các file sẽ được xem như dãy tuần tự các byte. Chúng
được tổ chức phân cấp trong 1 đồ thị định danh, trong đó các nút biểu diễn các thư

mục và các file. Để truy cập 1 file, client phải tìm tên của nó trong 1 dịch vụ định
danh (naming service). Ngoài ra mỗi file có 1 số các thuộc tính mà giá trị của chúng
có thể được tìm và thay đổi. (Xem phần 3.4)
Các thao tác với file của NFS phiên bản 3 và 4 :
Thao tác tạo mới (creat) được sử dụng để tạo ra 1 file, ở đây cũng có sự khác biệt
giữa NFS phiên bản 3 với phiên bản 4. Trong phiên bản 3, thao tác này được dùng
để tạo ra các file chính quy (regular file), trong khi các file phi chính quy (nonregular file) lại được tạo ra bởi các thao tác riêng khác. Thao tác liên kết được dùng
25


×