21.1
4. H i u hành Linuxệ đ ề
4. H i u hành Linuxệ đ ề
21.2
H i u hành Linuxệ đ ề
H i u hành Linuxệ đ ề
■
L ch s Linuxị ử
■
Nguyên t c thi t kắ ế ế
■
L p trình Kernel Modulesậ
■
Qu n lý quá trìnhả
■
nh th i Đị ờ
■
Qu n lý b nh ả ộ ớ
■
H th ng fileệ ố
■
H th ng xu t nh p (I/O)ệ ố ấ ậ
■
Truy n thông liên quá trìnhề
■
C u trúc m ngấ ạ
■
B o m tả ậ
21.3
M c tiêuụ
M c tiêuụ
■
Kh o sát l ch s h i u hành Unix - ngu n g c c a Linux và m t ả ị ử ệ đ ề ồ ố ủ ộ
s nguyên t c b t bu c thi t k Linuxố ắ ắ ộ để ế ế
■
Nghiên c u mô hình x lý Linux b ng vi c minh h a cách nh th i ứ ử ằ ệ ọ đị ờ
các quá trình và cung c p truy n thông liên quá trình.ấ ề
■
Xem xét cách qu n lý b nh trong Linuxả ộ ớ
■
Tìm hi u xem Linux hi n th c h th ng file và qu n lý các thi t b ể ệ ự ệ ố ả ế ị
xuât nh p nh th nàoậ ư ế
21.4
L ch sị ử
L ch sị ử
■
Linux là m t h i u hành tiên ti n và mi n phí d a trên tiêu chu n ộ ệ đ ề ế ễ ự ẩ
Unix
■
Ban u Linux phát tri n nh . n n m 1991 Linus Torvalds k t đầ ể ỏ Đế ă ế
h p thêm kernel(nhân) v i m c ích chính là có kh n ng thích h p ợ ớ ụ đ ả ă ợ
v i Unixớ
■
L ch s cho th y Linux là s c ng tác c a nhi u ng i s d ng ị ử ấ ự ộ ủ ề ườ ử ụ
trên toàn th gi i, h u h t h trao i u qua internetế ớ ầ ế ọ đổ đề
■
Linux c thi t k có th ch y hi u qu trên nh ng ph n c ng đượ ế ế để ể ạ ệ ả ữ ầ ứ
máy tính thông th ng, h n n a Linux còn có th ch y trên nhi u ườ ơ ữ ể ạ ề
n n ph n c ng khác.ề ầ ứ
■
Nòng c t c a h i u hành Linux kernel là toàn b nguyên b n, ố ủ ệ đ ề ộ ả
nh ng nó có th ch y nhi u ph n m m Unix mi n phí, ó là k t ư ể ạ ề ầ ề ễ đ ế
qu c a vi c tích h p code có th thích h p Unix.ả ủ ệ ợ để ể ợ
■
Thêm vào ó, thay i Linux bao g m cung c p thêm kernel, các đ đổ ồ ấ
ng d ng, và các công c qu n lýứ ụ ụ ả
21.5
The Linux Kernel
The Linux Kernel
■
Phiên b n 0.01 (5-1991) không có m ng, ch có th ch y trên ả ạ ỉ ể ạ
80386- t ng thích v i vi x lý intel và trên ph n c ng máy tính, ươ ớ ử ầ ứ
c bi t b gi i h n trong giao ti p device-drive, và ch cung đặ ệ ị ớ ạ ế ỉ
c p cho h th ng file Minixấ ệ ố
■
Linux 1.0 (3-1994) có thêm m t s tính n ng m i:ộ ố ă ớ
●
H tr thêm giao th c m ng TCP/IP theo chu n UNIXỗ ợ ứ ạ ẩ
●
Các ch ng trình m ng c h tr giao ti p socket t ng ươ ạ đượ ỗ ợ ế ươ
thích BCD
●
H tr giao ti p Device-driver có th ch y IP trong ỗ ợ ế để ể ạ
m ng Ethernetạ
●
T ng c ng h th ng fileă ườ ệ ố
●
H tr cách s p x p cho i u khi n SCSI giúp t ng hi u ỗ ợ ắ ế đề ể ă ệ
qu truy xu t a.ả ấ đĩ
●
H tr thêm ph n c ngỗ ợ ầ ứ
■
Phiên b n 1.2 (5-1995) là b n Linux kernel cho PC cu i cùngả ả ố
21.6
Linux 2.0
Linux 2.0
■
6-1996, 2.0 thêm 2 tính n ng m i:ă ớ
●
H tr thêm c u trúc ph c t p, bao g m c ng Alpha 64-bitỗ ợ ấ ứ ạ ồ ồ
●
H tr c u trúc a vi x lý.ỗ ợ ấ đ ử
■
Các tính n ng khác:ă
●
C i thi n mã qu n lý b nhả ệ ả ộ ớ
●
C i thi n hi u su t TCP/IP ả ệ ệ ấ
●
H tr vào nhân(kernel) s c p các lu ng, và t ng n p các ỗ ợ ơ ấ ồ ự độ ạ
module theo yêu c uầ
●
Giao di n c u hình chu nệ ấ ẩ
■
c dùng cho Motorola 68000-series vi x lý, h th ng Sun Sparc, Đượ ử ệ ố
PC và h th ng PowerMacệ ố
■
2.4 và 2.6 t ng thêm h tr SMP, thêm nh t ký trong h th ng file, u ă ỗ ợ ậ ệ ố ư
tiên kernel, h tr b nh 64-bitỗ ợ ộ ớ
21.7
H th ng Linuxệ ố
H th ng Linuxệ ố
■
Linux dùng nhi u công c gi ng nh : h th ng Berkeley’s BSD,h ề ụ ố ư ệ ố ệ
th ng MIT’s X Window, và d án Free Software Foundation's GNU ố ự
■
M t th vi n nh c b t u b ng d án GNU, và c ng ng ộ ư ệ ỏ đượ ắ đầ ằ ự ộ đồ
Linux ã d n d n c i thi n.đ ầ ầ ả ệ
■
M ng Linux-công c qu n lý c b t ngu n t mã 4.3BSD; ạ ụ ả đượ ắ ồ ừ
Ngu n g c c a mã BSD g n ây nh Free BSD ã m n l i t ồ ố ủ ầ đ ư đ ượ ạ ừ
b ng mã này c a Linuxả ủ
■
Các h th ng Linux c duy trì b i m t m ng l i l ng l o c a ệ ố đượ ở ộ ạ ướ ỏ ẻ ủ
các c ng tác trên Internet, v i m t s l ng nh c a các trang ộ ớ ộ ố ượ ỏ ủ
web công c ng ho t ng v i tiêu chu n th c tộ ạ độ ớ ẩ ự ế
21.8
Linux Distributions
Linux Distributions
■
T p h p các gói tr c khi biên d ch hay ậ ợ ướ ị distributions, bao g m h ồ ệ
th ng Linux c b n, cài t h th ng, qu n lý ti n ích và c ch ố ơ ả đặ ệ ố ả ệ ơ ế
s n sàng cài t các gói c a công c ti n íchẵ để đặ ủ ụ ệ
■
Các phân ph i u tiên qu n lý các gói b ng cách n gi n là ố đầ ả ằ đơ ả
cung c p ph ng ti n bung t t c các t p tin vào n i thích h p; ấ ươ ệ để ấ ả ậ ơ ợ
các phân ph i sau này bao g m các gói qu n lý nâng caoố ồ ả
■
M i nhà phân ph i bao g m SLS và Slackware ỗ ố ồ
●
Red Hat và Debian là các nhà phân ph i ph bi n bao g m ố ổ ế ồ
các ngu n th ng m i và không th ng m iồ ươ ạ ươ ạ
■
Gói nh d ng file RPM cho phép tích h p gi a các nhà phân ph i đị ạ ợ ữ ố
Linux
21.9
Gi y phép Linux ấ
Gi y phép Linux ấ
■
Nhân Linux c phân phát b i GNU General Public License đượ ở
(GPL), các i u kho n trong ó c t ra b i Free Software đ ề ả đ đượ đặ ở
Foundation
■
B t c ai s d ng Linux, hay t o ra các ng d ng c a Linux, có ấ ứ ử ụ ạ ứ ụ ủ
th làm m t ngu n g c c a các s n ph m c quy n; ph n m m ể ấ ồ ố ủ ả ẩ độ ề ầ ề
phát hành d i GPL có th không c c p phát l i nh là s n ướ ể đượ ấ ạ ư ả
ph m binary-onlyẩ
21.10
Nguyên t c thi t kắ ế ế
Nguyên t c thi t kắ ế ế
■
Linux là m t h th ng a tác v , a ng i dùng v i t p h p các ộ ệ ố đ ụ đ ườ ớ ậ ợ
công c thích h p v i Unixụ ợ ớ
■
Các h th ng t p tin c a nó tôn tr ng tri t UNIX semantic ệ ố ậ ủ ọ ệ để
truy n th ng , và nó th c hi n y các tiêu chu n mô hình ề ố ự ệ đầ đủ ẩ
m ng UNIXạ
■
M c tiêu thi t k chính là t c , hi u qu và tiêu chu n hóaụ ế ế ố độ ệ ả ẩ
■
Linux c thi t k có th tuân th v i các tài li u liên quan đượ ế ế để ể ủ ớ ệ
posix ; ít nh t có hai phân ph i Linux ã chính th c c c p gi y ấ ố đ ứ đượ ấ ấ
ch ng nh n posix. Giao di n l p trình Linux tuân th SVR4 UNIX ứ ậ ệ ậ ủ
semantics, h n là ho t ng BSD.ơ để ạ độ
21.11
Các thành ph n h th ng Linuxầ ệ ố
Các thành ph n h th ng Linuxầ ệ ố
21.12
Các thành ph n h th ng Linux(Cont.)ầ ệ ố
Các thành ph n h th ng Linux(Cont.)ầ ệ ố
■
Gi ng nh hi n th c UNIX, code t o thành Linux g m có 3 ph n ố ư ệ ự ạ ồ ầ
chính; quan tr ng nh t là s khác bi t gi a nhân(kernel) và các ọ ấ ự ệ ữ
ph n khácầ
■
Kernel có trách nhi m duy trì nh ng ph n tr u t ng quan tr ng ệ ữ ầ ừ ượ ọ
c a h i u hành.ủ ệ đ ề
●
Kernel code th c thi trong ch ự ế độ kernel v i kh n ng truy xu t ớ ả ă ấ
n t t c các tài nguyên v t lý c a máy tínhđế ấ ả ậ ủ
●
T t c các mã kernel và c u trúc gi li u c gi trong cùng ấ ả ấ ữ ệ đượ ữ
m t không gian a ch nộ đị ỉ đơ
21.13
Các thành ph n h th ng Linux(Cont.)ầ ệ ố
Các thành ph n h th ng Linux(Cont.)ầ ệ ố
■
H th ng th vi n nh ngh a m t t p h p chu n các hàm,thông ệ ố ư ệ đị ĩ ộ ậ ợ ẩ
qua các hàm này các ng d ng có th t ng tác v i nhân, và hi n ứ ụ ể ươ ớ ệ
th c m t s ch c n ng c a h i u hành, mà không c n u tiên ự ộ ố ứ ă ủ ệ đ ề ầ ư
qua mã kernel.
■
system utilities th c thi các thao tác qu n lý chuyên d ng cá ự ả ụ
nhân
21.14
Kernel modules
Kernel modules
■
Nh ng ph n c a mã kernel có th c biên d ch, load, và ữ ầ ủ ể đượ ị
unload không ph thu c vào nh ng ph n còn l i c a kernel.ụ ộ ữ ầ ạ ủ
■
Kernel module có th th c thi trình i u khi n thi t b , file h ể ự đ ề ể ế ị ệ
th ng, hay m t giao th c m ng.ố ộ ứ ạ
■
Giao di n module cho phép ng i s d ng th 3 vi t và phân ệ ườ ử ụ ứ ế
phát trong ph m vi gi i h n c a h ,có thêm trình i u khi n thi t ạ ớ ạ ủ ọ đ ề ể ế
b hay file h th ng –chúng không c phân ph i d i d ng ị ệ ố đượ ố ướ ạ
GPL
■
Kernel modules cho phép Linux c thi t l p theo m t tiêu đượ ế ậ ộ
chu n,nhân nh nh t mà không c n xây d ng thêm b t k trình ẩ ỏ ấ ầ ự ấ ỳ
i u khi n thi t b nào.đ ề ể ế ị
■
Linux module h tr 3 thành ph n:ỗ ợ ầ
●
Qu n lý module ả
●
i u khi n ng kýĐ ề ể đă
●
Gi i quy t mâu thu n ả ế ẫ
21.15
Qu n lý Module ả
Qu n lý Module ả
■
H tr vi c n p module vào b nh , cho phép chúng giao ti p v i ỗ ợ ệ ạ ộ ớ ế ớ
các ph n còn l i c a kernelầ ạ ủ
■
Quá trình n p module c chia thành 2 ph n khác nhau:ạ đượ ầ
●
Qu n lý các o n mã module trong b nh nhânả đ ạ ộ ớ
●
Nh ng module c phép tham kh o và trình bày t ng tr ngữ đượ ả ượ ư
■
Module requestor qu n lý các yêu c u n p d li u; nó c ng liên ả ầ ạ ữ ệ ũ
t c h i nhân xem các module ng ã c n p v n còn s d ng ụ ỏ độ đ đượ ạ ẫ ử ụ
không, và khi không c n n a module này s c xóaầ ữ ẽ đượ
21.16
Driver Registration
Driver Registration
( ng ký b ph n i u khi n)đă ộ ậ đ ề ể
( ng ký b ph n i u khi n)đă ộ ậ đ ề ể
■
Cho phép module nói v i ph n còn l i c a nhân r ng có m t drive ớ ầ ạ ủ ằ ộ
m i v a c thêm vàoớ ừ đượ
■
Kernel duy trì m t b ng ng có l u t t c các driver, và cung c p ộ ả độ ư ấ ả ấ
m t t p h p các routine cho phép các driver này thêm vào hay gõ ộ ậ ợ
b ra kh i b ng b t c lúc nào.ỏ ỏ ả ấ ứ
■
B ng ng ký bao g m nh ng ph n sau: ả đă ồ ữ ầ
●
Trình qu n lý thi t bả ế ị
●
H th ng fileệ ố
●
Giao th c m ngứ ạ
●
nh d ng nh phânĐị ạ ị
21.17
Gi i quy t mâu thu nả ế ẫ
Gi i quy t mâu thu nả ế ẫ
■
Là m t k thu t cho phép các tài nguyên khác nhau dành riêng các ộ ỹ ậ
tài nguyên trong ph n c ng và b o v các tài nguyên này kh i các ầ ứ ả ệ ỏ
tình hu ng b t ng c dùng t các driver khácố ấ ờ đượ ừ
■
Module gi i quy t mâu thu n có m c ích:ả ế ẫ ụ đ
●
Ng n ng a các va ch m khi các module truy xu t tài nguyên ă ừ ạ ấ
c a ph n c ng.ủ ầ ứ
●
Ng n ng a s qu y r i c a các trình qu n lý thi t b n ă ừ ự ấ ố ủ ả ế ị đế
autoprobes
●
Gi i quy t các mâu thu n khi các driver c g ng truy xu t vào ả ế ẫ ố ắ ấ
cùng m t ph n c ngộ ầ ứ
21.18
Qu n lý ti n trìnhả ế
Qu n lý ti n trìnhả ế
■
Qu n lý ti n trình Unix chia vi c t o quá trình và vi c ch y các quá ả ế ệ ạ ệ ạ
trình m i thành hai thao tác c l p.ớ độ ậ
●
Câu l nh ệ fork t o quá trình m iđể ạ ớ
●
M t ch ng trình c ch y sau l i g i: ộ ươ đượ ạ ờ ọ execve
■
Trong UNIX, m t ch ng trình bao g m t t c các thông tin ph i ộ ươ ồ ấ ả ả
duy trì t track ch a các b i c nh c a m t hi n th c n trong để ứ ố ả ủ ộ ệ ự đơ
quá trình nđơ
■
Trong Linux, c tính c a quá trình chia thành 3 nhóm: c tính đặ ủ đặ
c a quá trình, môi tr ng, và b i c nh.ủ ườ ố ả
21.19
ng nh t ti n trìnhĐồ ấ ế
ng nh t ti n trìnhĐồ ấ ế
■
ID c a quá trình (PID). nh danh n cho quá trình; dùng cho ủ Đị đơ
nh ng quá trình c bi t trong h i u hành khi m t quá trình g i ữ đặ ệ ệ đ ề ộ ọ
m t system call signal, modify, hay wait m t quá trình khácộ để ộ
■
Credentials. M i quá trình ph i có m t ID liên h v i ng i s d ng ỗ ả ộ ệ ớ ườ ử ụ
và m t hay nhi u nhóm ID có th quy t nh quy n truy xu t vào tài ộ ề ể ế đị ề ấ
nguyên và file c a h th ngủ ệ ố
■
Personality. Trong nh ng h th ng Unix thì không th tìm th y ữ ệ ố ể ấ
nh ng trong Lin thì m i quá trình có m t nh danh liên k t cá nhân- ư ũ ỗ ộ đị ế
mà nó có th s a các sematic c a m t s system callể ử ủ ộ ố
●
c s d ng u tiên b i các th vi n mô ph ng yêu c u Đượ ử ụ đầ ở ư ệ ỏ để ầ
các system call này thích h p v i m t s tính n ng c a Unixợ ớ ộ ố ă ủ
21.20
Môi tr ng ti n trìnhườ ế
Môi tr ng ti n trìnhườ ế
■
Môi tr ng ti n trình c th a k t các ti n trình cha m , và c ườ ế đượ ừ ế ừ ế ẹ đượ
so n th o thành 2 vector k t thúc b ng 0:ạ ả ế ằ
●
The argument vector lists the command-line arguments used to
invoke the running program; conventionally starts with the name of
the program itself
●
The environment vector is a list of “NAME=VALUE” pairs that
associates named environment variables with arbitrary textual
values
■
Qua các bi n môi tr ng trong s các quá trình và các bi n c ế ườ ố ế đượ
th a k c a ti n trình con, vi c chuy n thông tin n các ph n c a ừ ế ủ ế ệ ể đế ầ ủ
ph n m m h th ng user-mode tr nên linh ngầ ề ệ ố ở độ
■
Bi n môi tr ng cung c p c ch tùy nh c a h i u hành. C ch ế ườ ấ ơ ế đị ủ ệ đ ề ơ ế
này c t o ra m i quá trình, ch không ph i là nh c u hình h đượ ạ ở ỗ ứ ả đị ầ ệ
th ng cho toàn bố ộ
21.21
Ng c nh quá trìnhữ ả
Ng c nh quá trìnhữ ả
■
Tr ng thái-thay i liên t c c a m t quá trình ang ch y t i m t ạ đổ ụ ủ ộ đ ạ ạ ộ
i m th i gianđ ể ờ
■
nh th i ng c nh là m t ph n quan tr ng c a ng c nh quá Đị ờ ữ ả ộ ầ ọ ủ ữ ả
trình; ó là thông tin mà b nh th i c n có t m ng ng hay đ ộ đị ờ ầ để ạ ư
kh i ng l i quá trìnhở độ ạ
■
Kernel duy trì thông tin accounting v tài nguyên hi n hành c ề ệ đượ
s d ng b i m i quá trình, t ng s tài nguyên c s d ng b i ử ụ ở ỗ ổ ố đượ ử ụ ở
quá trình t lúc b t u n khi k t thúcừ ắ đầ đế ế
■
B ng file ả là m t m ng các con tr n c u trúc file kernelộ ả ỏ đế ấ
●
Khi t o m t file xu t nh p b ng system call, quá trình c p ạ ộ ấ ậ ằ đề ậ
các file b i a ch c a nó trong b ngở đị ỉ ủ ả
21.22
Ng c nh quá trìnhữ ả
Ng c nh quá trìnhữ ả
■
Trong khi ó, b ng các t p tin li t kê các file ang m , đ ả ậ ệ đ ở
file-system context cung c p yêu c u m m t file m iấ ầ để ở ộ ớ
●
Nh ng t p tin g c hi n t i và ng d n m c nh c dùng ữ ậ ố ệ ạ đườ ẫ ặ đị đượ
cho vi c tìm ki m file m i c ch a trong óệ ế ớ đượ ứ đ
■
Signal-handler table nh ngh a các công vi c trong không gian đị ĩ ệ
a ch quá trình c g i khi có m t tín hi u c bi t nđị ỉ đượ ọ ộ ệ đặ ệ đế
■
Virtual-memory context mô t t t c n i dung c a không gian a ả ấ ả ộ ủ đị
ch riêng nóỉ
21.23
Quá trình và lu ngồ
Quá trình và lu ngồ
■
Linux dùng các cách trình bày gi ng nhau v b n ch t c a các ố ề ả ấ ủ
quá trình và lu ng; m t lu ng n gi n ch là m t quá trình m i, ồ ộ ồ đơ ả ỉ ộ ớ
mà x y ra vi c chia s không gian a ch v i quá trình cha c a nóả ệ ẻ đị ỉ ớ ủ
■
S phân bi t ch c t o ra khi có m t lu ng m i t o ra b ng ự ệ ỉ đượ ạ ộ ồ ớ ạ ằ
vi c g i system call ệ ọ clone
●
fork t o ra m t quá trình con, có kh n ng s h u toàn b quá ạ ộ ả ă ở ữ ộ
trình ng c nh c a nóữ ả ủ
●
clone t o ra m t quá trình m i gi ng nh chính nó, nh ng ạ ộ ớ ố ư ư
c cho phép chia s c u trúc d li u c a quá trình chađượ để ẻ ấ ữ ệ ủ
■
S d ng ử ụ clone t o m t ng d ng fine-grained i u khi n chính để ạ ộ ứ ụ đ ề ể
xác nh ng gì c chia s gi a hai lu ngữ đượ ẻ ữ ồ
21.24
nh th iĐị ờ
nh th iĐị ờ
■
Nhi m v là ch nh th i gian CPU cho các tác v khác nhau ệ ụ ỉ đị ờ ụ
trong ph m vi h i u hànhạ ệ đ ề
■
Trong khi nh th i th ng c xem nh là vi c ch y và ng t các đị ờ ườ đượ ư ệ ạ ắ
quá trình. Trong Linux, vi c ch y các ch n trình c ng bao g m ệ ạ ươ ũ ồ
các tác v kernel khác nhauụ
■
Vi c ch y các tác v kernel bao g m c các tác v yêu c u b i ệ ạ ụ ồ ả ụ ầ ở
các quá trình ang ch y và các tác v th c thi thay m t cho m t đ ạ ụ ự ặ ộ
thi t b i u khi nế ị đ ề ể
■
Nh ví d 2.5, gi i thu t nh th i m i – u tiên, u tiên c sư ụ ả ậ đị ờ ớ ư độ ư ơ ở
●
S p x p th i gian th cắ ế ờ ự
●
Giá tr pị đẹ
21.25
Qua h gi a u tiên và dài phân th i ệ ữ độ ư độ ờ
Qua h gi a u tiên và dài phân th i ệ ữ độ ư độ ờ
gian
gian