Bài t p l n h đi u hành L p MT2000
I T P L N H ĐI U HÀNH
Quy đ nh :
Ngôn ng l p trình s d ng trong các bài t p là C, C++ ho c Java.
Các bài t p vi t trên UNIX ph i vi t trên n n Linux. ế ế
Sinh viên chia nhóm t 3-4 ng i. M i nhóm ch n 2 bài t p thu c 2 ch đ l p trình ườ
1 bài t p ph n tìm hi u h th ng.
Các nhóm sinh viên th đăng ký đ trình bày tr c l p v đ tài c a nhóm mình. Các nhóm ướ
đăng ph i chu n b slide ho c bài vi t đ trình bày tr c l p trong các bu i h c cu i cùng ế ướ
c a môn h c.
Sinh viên có tham gia thuy t trình s đ c c ng thêm đi m vào bài t p l nế ượ
L p tr ng đánh máy in ra danh sách các nhóm (h tên, s sinh viên), tên bài t p ưở
thông tin đăng ký thuy t trình c a các sinh viên và g i cho GVHD qua email.ế
I T P L P TNH
Ch đ 1: Mô ph ng
1. Tài li u tham kh o
-Bài gi ng H đi u hành , Vũ Lê Hùng
-An Introduction To Operating System, H.M. Deitel
2. Ngôn ng l p trình s d ng: C, C++, Java trên UNIX ho c Windows
Bài 1.1: Vi t ch ng trình ph ng gi i thu t nhà băng c a Dijsktra đ tránh deadlock. Sế ươ
l ng các ngu n tài nguyên, các yêu c u c a h th ng đ c t o ng u nhiên. Hãy hi n th c cáchượ ượ
xét tr ng thái hi n th i c a h th ng an toàn hay không an toàn. N u tr ng thái an toàn, ế
ch ng trình ph i ch ra cách đ thu h i tài nguyên h th ng. V i m i yêu c u cung c p tàiươ
nguyên, hãy hi n th ra màn hình cách c p phát, thu h i t ng ng. ươ
Bài 1.2: Vi t ch ng trình ph ng các gi i thu t đ nh th i đã h c: FIFO, SJF, SRT, RR,ế ươ
HRRN, MLFQ. Đ u vào c a gi i thu t: s quá trình, đ dài các CPU burst, I/O burst… đ c t o ượ
ng u nhiên. Tính toán các thông s và đánh giá đ hi u qu c a t ng gi i thu t.
Bài 1.3: Vi t ch ng trình ph ng các gi i thu t thay th trang đã h c: OPT, FIFO, LRU,ế ươ ế
LFU, NUR, Second Chance. Đ u vào c a gi i thu t: s khung trang, chu i tham kh o trang, yêu
c u thay th trang…đ c t o ng u nhiên. Đánh giá đ hi u qu (so sánh s page fault) c a t ng ế ượ
gi i thu t.
Ch đ 2: Đ ng b gi a các qtrình
1. Tài li u tham kh o
-UNIX network programming.
-Tài li u h ng d n th c hành H đi u hành ướ , H Qu c Thu n.
2. Tìm hi u cách t o quá trình trong UNIX: hàm fork( ).
3. Tìm hi u các cách đ ng b gi a các quá trình trong UNIX: semaphore, lock file.
4. Ngôn ng l p trình s d ng: C trên UNIX
Bài 2.1 : (Semaphore)
Vi t ch ng trình t o ra m t quá trình con. Quá trình cha s nh n chu i s nguyên t bànế ươ
phím do ng i dùng nh p ghi vào file tên input. Quá trình con s đ c d li u t file này, s pườ
x p chúng theo th t tăng d n và ghi vào m t file khác tên là sorted. ế
Bài 2.2 : (Semaphore)
Vi t ch ng trình producer-consumer v i bounded buffer. ế ươ
Bài 2.3 : (Semaphore)
Trang 1/6
Bài t p l n h đi u hành L p MT2000
Vi t ch ng trình gi i quy t bài toán 5 tri t gia ăn t i. Ch ng trình ph i t o ra 5 quá trìnhế ươ ế ế ươ
con ph ng ho t đ ng c a 5 tri t gia. Dùng semaphore đ đ ng b ho t đ ng c a 5 tri t gia ế ế
này.
Bài 2.4 : (Lock file)
Vi t ch ng trình gi i quy t bài toán reader/writer d ng t ng quát. Ch ng trình ph i t o raế ươ ế ươ
5 quá trình đ ng th i v i ho t đ ng đ c/ghi file b t kỳ đ th nghi m gi i thu t.
Ch đ 3: Qu n lý b nh
1. Tài li u tham kh o
-The Design of the UNIX Operating System- Andrew S. Tanenbaum, Ch ng 7ươ
-Interprocess Communications in UNIX-The Nooks and Crannies.
-Tài li u h ng d n th c hành H đi u hành ướ , H Qu c Thu n.
2. Tìm hi u các hàm truy c p b nh :
- Tìm hi u cách t o quá trình trong UNIX dùng hàm fork( ).
- Tìm hi u cách c p phát b nh cho quá trình trong h đi u hành UNIX.
- Tìm hi u các hàm cho phép l y các thông tin v vùng nh c p cho quá trình cũng nh ư
cho phép thay đ i các vùng nh đó.
3. Ngôn ng l p trình s d ng: C trên UNIX
Bài 3.1 :
Vi t ch ng trình có khai báo 4 bi n nh sau:ế ươ ế ư
-global là bi n nguyên toàn c c không kh i đ ng tr .ế
-local là bi n nguyên khai báo c c b trong hàm ế doNoth( ) (hàm này không làm gì c )
-intarray là m t con tr đ n bi n ki u nguyên. ế ế
Trong hàm main(), hãy gán global=1, sau đó in đ a ch các segment c a quá trình ra màn hình. Cho
bi t đ a ch các bi n ế ế global, local intarray (1). Ti p theo, hãy dùng hàm ếfork() t o ra m t quá
trình con. Cho bi t giá tr các đ a ch trên trong quá trình con (2). Hãy gán ế global=2 trong quá
trình con và cho bi t giá tr m i c a bi n global trong quá trình con và quá trình cha.ế ế
Trong quá trình cha, sau khi dùng fork(), hãy g i hàm doNoth(), sau đó dùng malloc() đ xin m t
vùng nh cho m t m ng 10 s nguyên và gán đ a ch đ u m ng vào bi n ế intarray.
Tr l i các câu h i sau:
-Bi n ếglobal là bi n chung hay bi n riêng c a t ng quá trình?ế ế
-Bi n ếintarray c a quá trình cha n m trên stack hay trên heap?
-Bi n ếlocal c a quá trình cha n m trên stack hay trên heap?
- Các đ a ch (1) và (2) có khác nhau không? Gi i thích?
Bài 3.2 :
Vi t các hàm ếmymalloc() và myfree() d a trên các hàm cung c p s n brk() và sbrk().
Ch đ 4: Thread
1. Tài li u tham kh o
-UNIX Internal, ph n Thread and Lightweight Processes
-Multithread Programming Guide.
-Interprocess Communications in UNIX.
-MSDN CDROM
-Java How to Program, ph n Threads
2. Tìm hi u thread :
- Tìm hi u khái ni m thread.
- Phân bi t gi a mô hình x lý dùng multithread và dùng nhi u process.
- Tìm hi u cách đ ng b gi a các thread trong Java và trong Linux.
3. Ngôn ng l p trình s d ng có th là C, C++, Java trên UNIX ho c Windows.
Bài 4.1 :
Trang 2/6
Bài t p l n h đi u hành L p MT2000
ng d ng multithread trong bài toán nhân ma tr n. Đ c vào 2 ma tr n A & B t file, sau đó
dùng nhi u thread đ th c hi n vi c nhân 2 ma tr n này. Ghi ma tr n k t qu ra m t file khác. ế
Bài 4.2 :
ng d ng multithread trong bài toán x nh. Đ c vào m t ma tr n A t file, sau đó dùng
nhi u thread đ th c hi n x lý trên ma tr n này nh sau : m t ph n t trên ma tr n là trung bình ư
c ng c a các ph n t chung quanh nó. Ghi ma tr n k t qu ra m t file khác. ế
Bài 4.3 :
ng d ng multithread trong bài toán sau : Đ c vào m t ma tr n A t file và nh p vào m t s
k, sau đó dùng n thread đ th c hi n tìm ki m trên các ma tr n y xem bao nhiêu ph n t ế
gi ng k. M i l n tìm th y ph n t gi ng k thì tăng bi n chung ế number (kh i đ ng là 0) lên 1.
Bài 4.4 :
ng d ng multithread trong bài toán sau : Đ c vào m t dãy A t file, dùng n thread đ s p
x p dãy theo th t tăng d n nh sau:ế ư
M i thread l y m t ph n dãy a và s p theo th t tăng d n
Sau đó, 1 thread tr n các dãy do n thread v a r i đã s p x p thành dãy k t qu . ế ế
Bài 4.5 :
Cho ng i dùng nh p vào 2 s nguyên d ng a b, sau đó dùng n thread đ tìm ki m cácườ ươ ế
s nguyên t n m trong kho ng 2 s đã nh p. M i l n tìm đ c m t s thì s tăng bi n chung ượ ế
number (kh i đ ng là 0) lên 1.
Bài 4.6 :
Cho ng i dùng nh p vào 2 s nguyên d ng a b, sau đó dùng n thread đ tìm ki m cácườ ươ ế
s nguyên t n m trong kho ng 2 s đã nh p và ghi các s này ra file.
Bài 4.7:
Đ c vào m t ma tr n (kích th c N*N) t file, sau đó dùng n thread đ tính t ng c a t ng ướ
hàng trên ma tr n (1 thread n u tính t ng m t hàng xong th tính t ng c a m t hàng khác). ế
Dùng m t thread đ thu th p các k t qu c a các thread kia và ghi vào m t file k t qu . ế ế
Bài 4.8:
S d ng thread các ph ng th c đ ng b trên thread đ vi t ch ng trình producers- ươ ế ươ
consumers v i 1 bounded buffer trong tr ng h p có nhi u producer và nhi u consumer. ườ
Bài 4.9:
S d ng thread các ph ng th c đ ng b trên thread đ gi i quy t bài toán N tri t gia ăn ươ ế ế
t i.
Bài 4.10 :
S d ng thread các ph ng th c đ ng b trên thread đ vi t gi i quy t bài toán ươ ế ế
reader/writer d ng t ng quát.
Ch đ 5: Giao ti p gi a các quá trìnhế
1. Tài li u tham kh o
-UNIX network programming, ph n Interprocess Communications
-Interprocess Communication in UNIX
-Tài li u h ng d n th c hành H đi u hành ướ , H Qu c Thu n.
2. Tìm hi u các c ch giao ti p gi a các quá trình trong UNIX ơ ế ế
- Tìm hi u các c ch giao ti p gi a các quá trình trong UNIX dùng pipe, message ơ ế ế
queue, shared memory.
- u nh c đi m c a t ng ph ng pháp.Ư ượ ươ
3. Ngôn ng l p trình s d ng: C trên UNIX
Bài 5.1 :
T o ra 2 quá trình. Quá trình th nh t đ c t file nhi u chu i liên ti p, m i chu i g m các ế
phép toán +, -, *, / và hai toán h ng.
Ví d trong file s l u các chu i d ng nh sau : ư ư
2 + 3
1 - 2
4 * 6
Trang 3/6
Bài t p l n h đi u hành L p MT2000
15 / 3
Sau đó quá trình th nh t truy n các chu i d li u này cho quá trình th hai. Quá trình th
hai th c hi n tính toán tr chu i k t qu v l i cho quá trình đ u tiên đ ghi l i vào file nh ế ư
sau:
2 + 3 = 5
1 - 2 = -1
4 * 6 = 24
15 / 3 =5
Th c hi n bài toán dùng message queue đ giao ti p gi a 2 quá trình. ế
Bài 5.2 :
Vi t ch ng trình t ng t bài 5.1 nh ng dùng pipe đ giao ti p.ế ươ ươ ư ế
Bài 5.3 :
Vi t ch ng trình t ng t bài 5.1 nh ng dùng shared memory đ giao ti p.ế ươ ươ ư ế
Bài 5.4 :
Vi t ch ng trình g m 2 quá trình. Quá trình th nh t cho ng i dùng nh p vào t bànế ươ ườ
phím m t chu i bi u di n m t phép tính g m các ph n t +, -, (, ). Đ u tiên c a các phép tính ư
trong ngo c (c p d u ( & )) là cao nh t, phép + và – cùng đ u tiên. Ví d : ư
1+2+(2-3-4) –((3+4)-5)
(1+(-2)–((3+4)-5))
Sau đó truy n chu i d li u này cho quá trình th hai. Quá trình th hai th c hi n tính toán
trên và tr k t qu v cho quá trình th nh t đ hi n th cho ng i s d ng bi t. ế ườ ế
Th c hi n bài toán dùng message queue đ giao ti p gi a 2 quá trình. ế
Bài 5.5 :
Vi t ch ng trình t ng t bài 5.4 nh ng dùng pipe đ giao ti p.ế ươ ươ ư ế
Bài 5.6 :
Vi t ch ng trình t ng t bài 5.4 nh ng dùng shared memory đ giao ti p.ế ươ ươ ư ế
Bài 5.7 :
T o ra 2 quá trình P0 P1. Quá trình P0 đ c t file nhi u dãy s nguyên liên ti p (m i dãy ế
th s ph n t khác nhau). Sau đó quá trình này g i l n l t các dãy này cho quá trình P1. ượ
P1 th c hi n s p x p m i dãy theo th t tăng d n, đ ng th i tính t ng c a dãy đó g i dãy ế
k t qu cùng v i t ng tính đ c t ng ng cho m i y v l i quá trình P0. Khi này, P0 th cế ượ ươ
hi n ghi các dãy k t qu vào l i file sao cho: dãyt ng nh nh t s đ c ghi đ u tiên, dãy có ế ượ
t ng l n h n s đ c ghi sau. Th c hi n bài toán dùng message queue đ giao ti p gi a 2 quá ơ ượ ế
trình.
Bài 5.8 :
Vi t ch ng trình t ng t bài 5.7 nh ng dùng pipe đ giao ti p.ế ươ ươ ư ế
Bài 5.9 :
Vi t ch ng trình t ng t bài 5.7 nh ng dùng shared memory đ giao ti p.ế ươ ươ ư ế
Bài 5.10 :
T o ra 2 quá trình P0 P1. Quá trình P0 đ c t file m t ma tr n vuông c p N*N, sau đó g i
ma tr n này cho P1. Quá trình P1 s th c hi n ngh ch đ o ma tr n này và ghi k t qu xu ng m t ế
file khác. N u ma tr n không th ngh ch đ o đ c, P1 ghi vào file k t qu dòng thông báo t ngế ượ ế ươ
ng.
Th c hi n bài toán dùng message queue đ giao ti p gi a 2 quá trình. ế
Bài 5.11 :
Vi t ch ng trình t ng t bài 5.10 nh ng dùng pipe đ giao ti p.ế ươ ươ ư ế
Bài 5.12 :
Vi t ch ng trình t ng t bài 5.10 nh ng dùng shared memory đ giao ti p.ế ươ ươ ư ế
Ch đ 6: Socket
1. Tài li u tham kh o
-UNIX network programming, ph n Berkeley Sockets
-Interprocess Communication in UNIX
-Internetworking with TCP/IP volume III, ph n mô hình Client/Server.
Trang 4/6
Bài t p l n h đi u hành L p MT2000
-Internetworking with TCP/IP volume II (cho các bài v broadcast và multicast).
-MSDN CDROM
2. Tìm hi u socket và mô hình client/server
-Tìm hi u c ch làm vi c c a socket, ơ ế
-Các b c c n thi t trong vi c t o socket dùng TCP và UDP.ướ ế
- Mô hình client/server.
3. Ngôn ng l p trình s d ng: C trên UNIX, C++ trên Windows
Bài 6.1:
T o hai quá trình server client hai y khác nhau. Client nh n m t dãy s t ng i s ườ
d ng g i cho quá trình server. Server s p x p chu i này theo th t tăng d n g i tr l i ế
client đ hi n th cho ng i dùng bi t. ườ ế
Bài 6.2:
T o hai quá trình server client hai máy khác nhau. Client nh n m t s nguyên d ng t ươ
ng i s d ng g i cho quá trình server. Server phân tích s này thành th a s nguyên t ườ
g i tr l i client đ hi n th cho ng i dùng bi t. ườ ế
Bài 6.3:
Dùng socket đ vi t ch ng trình chat gi a hai quá trình trên hai máy khác nhau. ế ươ
G i ý : vi t 1 ch ng trình chat client ng i dùng s d ng) dùng m t ch ng trình ế ươ ườ ươ
chat server đ qu n lý các chat client đó.
Bài 6.4 :
T o hai quá trình server và client hai máy khác nhau. Client nh n m t chu i ký t do ng i ườ
s d ng nh p theo d ng m t s l nh thông d ng thông s , d nh chu i “mkdir ư
/temp/new” g i cho quá trình server. Server th c hi n l nh này g i thông báo thành công
hay không cho client đ hi n th cho ng i dùng bi t. ườ ế
Bài 6.5 :
Vi t 2 ch ng trình là server và admin. Cho th c thi ch ng trình server trên nhi u máy khácế ươ ươ
nhau. Sau đó s th c thi ch ng trình admin đ bi t đ c bao nhiêu ch ng trình server đang ươ ế ượ ươ
ch y trên m ng đó. Dùng c ch broadcast. ơ ế
Bài 6.6 :
T ng t bài 5.5 nh ng dùng c ch multicast.ươ ư ơ ế
Bài 6.7 :
Vi t 2 ch ng trình listen send. Ch ng trình listen dùng đ nh n thông tin t các ng iế ươ ươ ườ
khác g i đ n hi n th lên màn hình.Ch ng trình send cho phép g i thông tin đ n t t c các ế ươ ế
ng i ch y ch ng trình listen trên m ng. Dùng c ch broadcast.ườ ươ ơ ế
Bài 6.8 :
T ng t bài 5.7 nh ng dùng c ch multicast.ươ ư ơ ế
BÀI T P V M HI U H TH NG
Tài li u tham kh o
-ftp.dit.hcmut.edu.vn/pub/OS/books
- Sinh viên t tìm ki m trên Internet ế
Bài 1: Tìm hi u c ch boot cách cài đ t multiboot cho nhi u h đi u hành trên m t máy ơ ế
đ n.ơ
Bài 2: Tìm hi u ph n m m VMWare cách ch y nhi u h đi u hành trên cùng m t máy t i
m t th i đi m.
Bài 3: Tìm hi u và phân tích ki n trúc t ng quát c a h đi u hành Linux. ế
Bài 4: Tìm hi u và phân tích ki n trúc t ng quát c a h đi u hành WinNT/2000. ế
Bài 5: Tìm hi u c ch đ nh th i c a h đi u hành Solaris/Linux. ơ ế
Bài 6: Tìm hi u c ch đ nh th i c a h đi u hành WinNT /2000. ơ ế
Trang 5/6