Các mô hình h th ng VM và non-VM ệ ốNon-virtual Machine Virtual Machine... Java Virtual Machine.
Trang 1BÀI GI NG Ả
NGUYÊN LÝ H I U HÀNH Ệ Đ Ề
Ch ư ơ ng 2: C u trúc h i u hành ấ ệ đ ề
B môn Khoa h c máy tính ộ ọ
Khoa Công ngh thông tin ệ
H c vi n Nông nghi p Vi t Nam ọ ệ ệ ệ
Trang 4● Khác nhau gi a giao di n dòng l nh (Command-Line, CLI), giao ữ ệ ệ
di n ệ đồ ọ h a (Graphics User Interface, GUI), Batch
■ Th c hi n ch ự ệ ươ ng trình (Program execution) – kh n ng c a h ả ă ủ ệ
th ng ố để ạ n p m t chộ ương trình vào b nh và ch y nó, d ng ộ ớ ạ ừ
chương trình (bình thường ho c b t thặ ấ ường)
■ Th c hi n vào-ra ự ệ (I/O operations) – vì chương trình c a ngủ ườ ửi s
d ng không th th c hi n tr c ti p các ho t ụ ể ự ệ ự ế ạ động vào/ra, H H ph i Đ ả
cung c p m t s phấ ộ ố ương pháp để th c hi n vào/ra (1 file ho c 1 ự ệ ặ
thi t b vào/ra).ế ị
Trang 5Các d ch v c a h i u hành ị ụ ủ ệ đ ề
Các d ch v c a h i u hành ị ụ ủ ệ đ ề (ti p) ế
■ Giao ti p ế (Communications) – trao đổi thông tin gi a các ti n trình ữ ế
ang th c hi n trên cùng 1 máy tính ho c trên các máy tính khác
nhau được n i m ng ố ạ
● Giao ti p có th thông qua b nh chia s (ế ể ộ ớ ẻ shared memory) ho c ặ
chuy n thông i p (ể đ ệ message passing): các gói tin được chuy n ể
b i H H.ở Đ
■ Phát hi n l i ệ ỗ (Error detection) – H H c n ph i thĐ ầ ả ường xuyên quan tâm đến các l i có th x y raỗ ể ả
● Có th l i trong CPU và b nh , trong các thi t b vào-ra, ho c ể ỗ ộ ớ ế ị ặ
trong chương trình c a ngủ ườ ử ụi s d ng
● V i m i lo i l i, H H c n có hành ớ ỗ ạ ỗ Đ ầ động thích h p ợ để đảm b o s ả ự
tính toán phù h p và úng ợ đ đắn
● Tính n ng s a l i có th t ng áng k kh n ng s d ng hi u qu ă ử ỗ ể ă đ ể ả ă ử ụ ệ ả
H H c a ngĐ ủ ườ ử ụi s d ng và các l p trình viên.ậ
Trang 6Các d ch v c a h i u hành ị ụ ủ ệ đ ề
Các d ch v c a h i u hành ị ụ ủ ệ đ ề (ti p) ế
Có m t t p ch c n ng khác c a H H ộ ậ ứ ă ủ Đ để đảm b o s ho t ả ự ạ động hi u qu ệ ả
c a chính nó thông qua chia s tài nguyên:ủ ẻ
■ Resource allocation – các tài nguyên ph i ả được phân ph i cho m i ố ỗ
user/ti n trình khi chúng ch y ế ạ đồng th iờ
● Có nhi u lo i tài nguyên: m t s (nh các chu k CPU, b nh chính, file) có ề ạ ộ ố ư ỳ ộ ớ
th có mã phân ph i ể ố đặ c bi t, s khác (nh các thi t b vào/ra) có th có mã ệ ố ư ế ị ể
yêu c u và gi i phóng chung ầ ả
■ Accounting – theo dõi và ghi l i lo i tài nguyên và lạ ạ ượng s d ng (tài ử ụ
nguyên) c a user nh m m c ích th ng kê.ủ ằ ụ đ ố
■ Protection & Security – người ch thông tin trên m t h th ng máy tính ủ ộ ệ ố
nhi u ngề ườ ử ụi s d ng ho c n i m ng có th mu n ki m soát s s d ng ặ ố ạ ể ố ể ự ử ụ
thông tin ó, các ti n trình đ ế đồng th i không nên can thi p l n nhauờ ệ ẫ
Trang 7– Đôi khi các l nh là built-in, ệ
– Đôi khi ch là tên c a các chỉ ủ ương trình (vd UNIX):
» Vd l nh ệ rm file.txt
» N u sau c n thêm l nh m i thì không c n s a ế ầ ệ ớ ầ ử đổi
shell
Trang 8Giao di n ng ệ ườ i s d ng c a H H ử ụ ủ Đ
Giao di n ng ệ ườ i s d ng c a H H ử ụ ủ Đ (ti p) ế
b) Graphical User Interface (GUI)
■ Giao di n ệ desktop thân thi nệ
● Thường dùng chu t, bàn phím, màn hìnhộ
● Icons đại di n cho các file, chệ ương trình, hành động,…
● Các nút chu t khác nhau trên các ộ đố ượi t ng gây các hành động
khác nhau (cung c p thông tin, l a ch n, th c hi n ch c n ng, ấ ự ọ ự ệ ứ ă
m th m c)ở ư ụ
● Được phát minh t i Xerox PARC nh ng n m 1970ạ ữ ă
■ Hi n nay nhi u H H bao g m c giao di n CLI và GUIệ ề Đ ồ ả ệ
b) Microsoft Windows có GUI v i CLI ớ “command” shell
c) Apple Mac OS X có giao di n GUI là ệ “Aqua” v i UNIX kernel bên ớ
Trang 92.3 System Calls
■ Cung c p giao di n l p trình cho các d ch v c a H H.ấ ệ ậ ị ụ ủ Đ
■ Thường được vi t b ng m t ngôn ng b c cao (C, C++)ế ằ ộ ữ ậ
■ H u h t ầ ế được truy nh p b i các chậ ở ương trình thông qua m t giao di n ộ ệ
l p trình ng d ng (ậ ứ ụ Application Program Interface - API) b c cao, ít ậ
khi s d ng tr c ti p system call.ử ụ ự ế
■ Ba API ph bi n nh t là Win32 API cho Windows, POSIX API cho các ổ ế ấ
h th ng trên n n POSIX (g m h u h t các phiên b n c a UNIX, Linux, ệ ố ề ồ ầ ế ả ủ
Mac OS X), và Java API cho Java virtual machine (JVM)
■ T i sao l i s d ng các API thay vì các system call?ạ ạ ử ụ
(Chú ý: tên c a các system-call ủ được s d ng ây là t ng quát)ử ụ ở đ ổ
Trang 10Ví d các System Call ụ
■ Chu i system call ỗ để copy n i dung c a 1 file t i file khácộ ủ ớ
Trang 11Ví d API chu n ụ ẩ
■ Xét hàm ReadFile() trong Win32 API – hàm đọc 1 file
■ Các tham s ố được truy n cho ReadFile()ề
● HANDLE file – file c n ầ đọc
● LPVOID buffer – buffer để ữ ệ đượ đọ d li u c c vào và ghi ra
● DWORD bytesToRead – s byte ố đượ đọc c vào buffer
● LPDWORD bytesRead – s byte ố đọ được c trong l n ầ đọc trước
● LPOVERLAPPED ovl – ch ra n u s d ng vào/ra ki u g i ch ng.ỉ ế ử ụ ể ố ồ
Trang 12Th c thi system call ự
■ Thường thì m t s ộ ố được g n v i m i system callắ ớ ỗ
● Giao di n system-call duy trì m t b ng ệ ộ ả đượ đc ánh ch s theo ỉ ố
nh ng s này.ữ ố
■ Giao di n system call g i system call mong mu n trong kernel H H ệ ọ ố Đ
và tr v tr ng thái c a nó và các giá tr tr v nào ó.ả ề ạ ủ ị ả ề đ
■ Ngườ ọi g i không c n bi t gì v system call ầ ế ề được th c thi nh th nàoự ư ế
Trang 13M i quan h API – System Call – H H ố ệ Đ
Trang 14Ví d th vi n C chu n ụ ư ệ ẩ
Ví d th vi n C chu n ụ ư ệ ẩ
■ Chương trình C g i l i g i th vi n printf(), mà g i t i system call ọ ờ ọ ư ệ ọ ớ
write()
Trang 15Truy n tham s cho System Call ề ố
■ Thường c n nhi u thông tin h n là ầ ề ơ đơn gi n ch xác ả ỉ định system call mong mu nố
● Ki u và lể ượng thông tin chính xác thay đổi theo H H và theo l i g iĐ ờ ọ
■ Ba phương th c t ng quát ứ ổ được s d ng ử ụ để truy n tham s ề ố cho H H.Đ
1. Đơn gi n nh t: Truy n tham s trong các thanh ghi.ả ấ ề ố
Trong m t s trộ ố ường h p: s tham s nhi u h n s thanh ghiợ ố ố ề ơ ố
2. Tham s ố được ch a trong m t b ng trong b nh , và a ch c a b ng ứ ộ ả ộ ớ đị ỉ ủ ả
c truy n nh m t tham s trong m t thanh ghi
đượ ề ư ộ ố ộ
Phương pháp này được s d ng b i Linux và Solarisử ụ ở
3. Đẩy (push, store) các tham s vào ố stack b ng chằ ương trình, và l y ra ấ
kh i stack (ỏ pop) b i H H.ở Đ
● Các phương pháp dùng b ng và stack không gi i h n s lả ớ ạ ố ượng hay
dài c a các tham s c truy n
độ ủ ố đượ ề
Trang 16Truy n tham s thông qua B ng ề ố ả
Trang 18Các lo i System Calls ạ
■ Qu n lý file ả (File management)
● t o file, xóa file ạ
● m , óng ở đ
● đọ c, ghi, nh v đị ị
● l y/ thi t l p thu c tính file ấ ế ậ ộ
■ Qu n lý thi t b ả ế ị (Device management)
● yêu c u thi t b , gi i phóng thi t b ầ ế ị ả ế ị
● đọ c, ghi, nh v đị ị
Trang 19Các lo i System Calls ạ
■ Duy trì thông tin (Information maintenance)
● truy n thông tin tr ng thái ề ạ
● g n k t, tháo g logic các thi t b xa (remote device) ắ ế ỡ ế ị ở
Trang 20MS-DOS
Trang 21UNIX
Trang 232.4 Các ch ươ ng trình h th ng ệ ố
■ Các chương trình h th ng cung c p m t môi trệ ố ấ ộ ường thu n ti n cho ậ ệ
vi c th c hi n và phát tri n chệ ự ệ ể ương trình Chúng có th ể được phân
lo i thành:ạ
● Thao tác v i file: t o, xóa, copy, ớ ạ đổi tên… các file và th m cư ụ
● Thông tin tr ng thái: ngày gi , dung lạ ờ ượng b nh tr ng, s user…ộ ớ ố ố
● S a ử đổi file: trình so n th o v n b n có th t o, s a n i dung file trên aạ ả ă ả ể ạ ử ộ đĩ
● H tr ngôn ng l p trình: trình biên d ch, trình thông d ch, trình g l i…ỗ ợ ữ ậ ị ị ỡ ỗ
● N p và th c hi n chạ ự ệ ương trình: n p CT ã ạ đ được biên d ch vào b nh ị ộ ớ để
th c hi n ự ệ
● Giao ti p: cung c p c ch t o k t n i o gi a các ti n trình, các user, các ế ấ ơ ế ạ ế ố ả ữ ế
máy tính để ử g i message, duy t web, g i email, truy n file… ệ ử ề
■ H u h t cách nhìn nh n c a ngầ ế ậ ủ ườ ử ụi s d ng v H H ề Đ được xác nh đị
b i các chở ương trình h th ng, không th c s b i các system call.ệ ố ự ự ở
Trang 242.5 Thi t k và th c thi H H ế ế ự Đ
2.5 Thi t k và th c thi H H ế ế ự Đ
■ Thi t k và th c thi H H không có gi i pháp hoàn h o, nh ng m t s ế ế ự Đ ả ả ư ộ ố
phương pháp ã ch ng minh thành côngđ ứ
■ C u trúc bên trong c a các H H khác nhau có th r t khác nhauấ ủ Đ ể ấ
■ B t ắ đầ ừ ệu t vi c xác nh các m c tiêu và đị ụ đặ đ ểc i m
■ B tác ị động b i s l a ch n ph n c ng, lo i H H: ở ự ự ọ ầ ứ ạ Đ chia s th i gian, ẻ ờ
n ng i dùng, a ng i dùng, phân tán, th i gian th c…
■ User goals và System goals
● User goals – H H c n d s d ng, d h c, áng tin c y, an toàn, Đ ầ ễ ử ụ ễ ọ đ ậ
nhanh
● System goals – H H c n d thi t k , th c thi và duy trì, c ng nh Đ ầ ễ ế ế ự ũ ư
Trang 25Thi t k và th c thi H H ế ế ự Đ
Thi t k và th c thi H H ế ế ự Đ (ti p) ế
■ Nguyên lý quan tr ng là s tách bi t:ọ ự ệ
Policy (chính sách): Cái gì s ẽ được làm? - What
Mechanism (c ch ):ơ ế Làm nó nh th nào ư ế ? - How
● S tách bi t chính sách v i c ch cho phép s linh ho t t i a n u ự ệ ớ ơ ế ự ạ ố đ ế
sau này các quy t nh chính sách ế đị được thay đổi
● VD: Các H H vi nhân (nh UNIX, Solaris) tách bi t c ch và Đ ư ệ ơ ế
chính sách b ng cách th c thi m t t p c b n các kh i t o d ng ằ ự ộ ậ ơ ả ố ạ ự
ban đầu, h u nh ầ ư độ ậc l p v i chính sách; cho phép các c ch và ớ ơ ế
chính sách tiên ti n h n có th ế ơ ể được thêm vào thông qua các
mô un kernel do ngđ ười s d ng t o ho c do chính chử ụ ạ ặ ương trình
c a ngủ ườ ử ụi s d ng Trong phiên b n m i nh t c a Solaris, tùy vào ả ớ ấ ủ
b ng nào ả được n p, h th ng có th là chia s th i gian, x lý theo ạ ệ ố ể ẻ ờ ử
lô, th i gian th c, chia s công b ng, hay d ng k t h p b t k ờ ự ẻ ằ ạ ế ợ ấ ỳ
Trang 26Th c thi h th ng ự ệ ố
Th c thi h th ng ự ệ ố
■ Tr ướ đ c ây, H H Đ đượ c vi t b ng ngôn ng assembly, ế ằ ữ
hi n nay có th vi t b ng nh ng ngôn ng b c cao ệ ể ế ằ ữ ữ ậ (UNIX, PS/2, Windows NT ch y u vi t b ng C) ủ ế ế ằ
■ Mã đượ c vi t b ng ngôn ng b c cao: ế ằ ữ ậ
Trang 28L p áy (layer 0) là ph n c ng; l p cao nh t ớ ở đ ầ ứ ớ ấ
(layer N) là user interface.
■ B ng cách chia thành các l p nh trên, m i l p ch ằ ớ ư ỗ ớ ỉ
s d ng các ch c n ng và d ch v c a các l p ử ụ ứ ă ị ụ ủ ớ
d ướ i.
Trang 29H H Đ đượ c phân l p ớ
Trang 30C u trúc H H UNIX ấ Đ
■ UNIX – là H H khác mà ban Đ đầ đ u ã b h n ch b i ị ạ ế ở
ch c n ng ph n c ng ứ ă ầ ứ
■ H H UNIX bao g m 2 ph n riêng bi t: Đ ồ ầ ệ
● Systems programs – các ch ươ ng trình h th ng ệ ố
● The kernel - nhân
Bao g m t t c các l p n m d ồ ấ ả ớ ằ ướ i giao di n system-call và ệ
n m trên physical hardware ằ
Trang 31C u trúc l p H H UNIX ấ ớ Đ
C u trúc l p H H UNIX ấ ớ Đ (ti p) ế
Trang 32■ S giao ti p di n ra gi a các module c a ngự ế ễ ữ ủ ười s d ng b ng ử ụ ằ
phương th c message passing.ứ
Trang 33C u trúc vi nhân lai c a Mac OS X ấ ủ
Trang 34d) Modules
■ H u h t các H H hi n ầ ế Đ ệ đại th c thi các kernel module:ự
● S d ng phử ụ ương pháp hướng đố ượi t ng
Trang 35C u trúc mô un c a H H Solaris ấ đ ủ Đ
Trang 362.7 Virtual Machines
■ M t ộ máy o ả (virtual machine) là m t chộ ương trình gi l p ph n c ng ả ậ ầ ứ
(hardware simulator) Ch y N b n copy c a chạ ả ủ ương trình gi l p này, ả ậ
Trang 37Các mô hình h th ng VM và non-VM ệ ố
Non-virtual Machine Virtual Machine
Trang 38Các l i i m c a Virtual Machine ợ đ ể ủ
■ Virtual-machine cung c p s b o v hoàn toàn các ấ ự ả ệ
tài nguyên h th ng vì m i máy o ệ ố ỗ ả đượ c tách bi t ệ
v i các máy o khác ớ ả
■ R t lý t ấ ưở ng cho vi c nghiên c u và phát tri n các ệ ứ ể
H H S phát tri n h th ng o không phá v s Đ ự ể ệ ố ả ỡ ự
ho t ạ độ ng c a h th ng th t ủ ệ ố ậ
Trang 39Các b t l i c a Virtual Machine ấ ợ ủ
■ Không chia s tr c ti p các tài nguyên.ẻ ự ế
■ Khó th c hi n ự ệ Để ă t ng hi u qu , chúng ta ch y l nh không ệ ả ạ ệ đặc quy n trên ph n c ng Nh ng i u gì x y ra n u…ề ầ ứ ư đ ề ả ế
● Chương trình người s d ng trong trình gi l p t o system call trong ử ụ ả ậ ạ
ch ế độ ự th c (real user mode), gây ra ng t th cắ ự
● H H th c trong ch Đ ự ở ế độ real kernel, thi t l p trình gi l p thành ch ế ậ ả ậ ế độ
simulated kernel, kh i ở độ ng l i s th c hi n trình gi l p trong ch ạ ự ự ệ ả ậ ế độ
real user
● Trình gi l p ch y l nh ả ậ ạ ệ đặc quy n (vd: I/O) trong ch ề ế độ real user, gây
ra real trap
● H H th c gi l p I/O trong ch Đ ự ả ậ ế độ real kernel, kh i ở độ ng l i trình gi l p ạ ả ậ
trong ch ế độ simulated kernel và real user.
■ N u i u này quá khó hi u, hãy tế đ ề ể ưởng tượng xem vi c vi t code x ệ ế ử
lý nó úng thì khó kh n nh th nào…đ ă ư ế
Trang 40Ki n trúc VMware ế
Trang 41Java Virtual Machine
■ Các chương trình Java sau khi biên d ch thành các t p bytecode có ị ệ
tính trung l p n n (platform-neutral bytecode, có tên m r ng ậ ề ở ộ .class),
và được th c hi n b i Java Virtual Machine (JVM).ự ệ ở
● mô un ph n m m thông d ch các bytecode ch 1 l n.đ ầ ề ị ỉ ầ
● Just-In-Time (JIT) compiler chuy n các bytecode thành ngôn ng ể ữ
máy t nhiên ự → làm t ng hi u n ng.ă ệ ă
Trang 42Java Virtual Machine
Trang 432.8 System Generation (SYSGEN)
■ Các H H Đ được thi t k ế ế ểđ ch y trên b t k lo i máy nào; sau ó h ạ ấ ỳ ạ đ ệ
th ng ph i ố ả được c u hình cho m i máy tính c th Ti n trình ó ấ ỗ ụ ể ế đ được
g i là System generation.ọ
■ H H thĐ ường được phân ph i trên các ố đĩa CD Để ạ t o ra 1 H H, Đ
chúng ta s d ng 1 chử ụ ương trình đặc bi t - SYSGEN.ệ
■ Chương trình SYSGEN xác định thông tin liên quan đến c u hình ấ
riêng c a h th ng ph n c ng t 1 file ho c yêu c u ngủ ệ ố ầ ứ ừ ặ ầ ườ ử ụi s d ng cung c p:ấ
● S d ng CPU nào? Dung lử ụ ượng b nh kh d ng?ộ ớ ả ụ
● Thông tin v các thi t b kh d ng?ề ế ị ả ụ
● Các l a ch n H H nào ự ọ Đ được yêu c u? Nh ng giá tr tham s nào ầ ữ ị ố được
ử ụ
Trang 44■ Sau khi h th ng ệ ố được sinh ra, nó ph i ả được ph n c ng s d ng ầ ứ ử ụ →
làm sao để ph n c ng bi t n i ch a nhân H H (kernel), n p nh th ầ ứ ế ơ ứ Đ ạ ư ế
nào?
■ Booting – quá trình kh i ở động máy tính b ng cách n p nhân ằ ạ
■ Bootstrap program – o n mã đ ạ được ch a trong ROM c a h u h t các ứ ủ ầ ế
h th ng máy tính ệ ố để có th xác nh v trí c a nhân, n p nó vào b ể đị ị ủ ạ ộ
nh , và b t ớ ắ đầu s th c hi n c a nó.ự ự ệ ủ