Cây quá trình trong h th ng UNIX... • Quá trình cha đang thoát... • Remote Procedure Calls RPCs • Java’s Remote Method Invocation RMI... Giao ti p khách-ch 2Sockets tt.
Trang 2Ch ng 3: Quá trình (Process)
̇ Khái ni m v quá trình
̇ nh th i cho quá trình
̇ Các thao tác trên quá trình
̇ Giao ti p liên quá trình
Trang 4Khái ni m v quá trình (2)
Tr ng thái c a quá trình (Process state)
M t quá trình có th có m t trong các tr ng thái sau:
̇ new: quá trình đang đ c kh i t o.
̇ running: các ch th c a quá trình đang đ c th c thi.
̇ waiting: quá trình đang ch đ i m t s ki n nào đó xu t
hi n (hoàn thành xu t/nh p, ch đ i m t tín hi u).
̇ ready: quá trình đang đ i đ đ c s d ng CPU.
̇ terminated: quá trình đã k t thúc.
Trang 5Khái ni m v quá trình (3)
L u đ tr ng thái c a quá trình
Trang 6Khái ni m v quá trình (4)
Kh i đi u khi n quá trình (PCB - Process Control Block)
Là thông tin k t h p v i m i quá trình:
̇ Thông tin v chi phí
̇ Thông tin v tr ng thái nh p/xu t
Trang 8Khái ni m v quá trình (6)
Chuy n ng c nh (Context Switch)
̇ Khi CPU chuy n sang m t quá trình khác, h th ng ph i l u l i
tr ng thái c a quá trình c và n p tr ng thái đã l u tr c đây
c a quá trình Tác v này g i là context switch.
̇ Th i gian cho context switch là m t phí t n – h th ng th c
hi n công vi c vô ích.
̇ Th i gian này ph thu c vào h tr c a ph n c ng:
• T c đ chuy n ph thu c vào t c đ b nh , s l ng thanh ghi
Trang 10nh th i cho quá trình (2)
Hàng đ i s n sàng và nhi u hàng đ i thi t b
Trang 11̇ B đ nh th i ng n k (Short-term scheduler/CPU scheduler) –
ch n ra quá trình s đ c th c thi k ti p và c p CPU cho nó.
̇ B đ nh th i trung k (Medium-term scheduling) – th c hi n hoán v (swapping) các quá trình ra/vào b nh / đ a do c nh tranh CPU, b nh
Trang 12nh th i cho quá trình (4)
B đ nh th i trung k
Trang 14Các thao tác trên quá trình (1)
T o quá trình
Quá trình cha t o ra quá trình con, đ n l t quá trình con này l i
t o ra nh ng quá trình khác, t o nên cây quá trình.
Cây quá trình
trong h th ng
UNIX
Trang 15Các thao tác trên quá trình (2)
T o quá trình (tt)
̇ Chia s tài nguyên – có nhi u l a ch n:
• Quá trình cha và con chia s t t c tài nguyên
• Quá trình con chia s m t ph n tài nguyên c a quá trình cha
• Quá trình cha và con không chia s tài nguyên nào c
̇ D li u kh i t o:
• c chuy n theo t quá trình cha sang con
̇ Th c thi:
• Quá trình cha và con th c thi song song
• Quá trình cha đ i đ n khi quá trình con hoàn thành
̇ Không gian đ a ch :
• Quá trình con sao chép không gian đ a ch c a quá trình cha (cùng ch ng trình và d li u)
Trang 16Các thao tác trên quá trình (3)
T o quá trình (tt)
̇ UNIX:
• fork – là l i g i h th ng dùng t o quá trình m i
• execlp – là l i g i h th ng đ c s d ng sau fork b i m t trong 2
quá trình đ thay th không gian đ a ch c a quá trình đã g i execlp
b ng m t quá trình m i
̇ Windows NT: h tr c hai mô hình
• Quá trình con sao chép t quá trình cha
• Quá trình cha xác đ nh tên c a m t ch ng trình cho h đi u hành
n p vào không gian đ a ch c a quá trình m i
Trang 17Các thao tác trên quá trình (4)
Minh h a l nh fork trong UNIX
if (pid < 0) { /* error occurred */
fprintf(stderr, “Fork Failed”);
exit(-1);
} else if (pid ==0) { /* child process */
execlp(“/bin/ls”, “ls”, NULL);
{ else { /* parent process will wait for the child to complete */
wait(NULL);
printf(“Child complete”);
Trang 18Các thao tác trên quá trình (5)
K t thúc quá trình
̇ Quá trình th c hi n câu l nh cu i cùng và yêu c u H H xóa nó
(dùng exit).
• Xu t d li u t quá trình con lên quá trình cha (dùng wait).
• Tài nguyên c a quá trình b thu h i l i b i h đi u hành
̇ Quá trình cha có th k t thúc s th c thi c a quá trình con
(dùng abort).
• Quá trình con đã v t quá s tài nguyên đ c c p
• Công vi c giao cho quá trình con nay không còn c n thi t n a
• Quá trình cha đang thoát
X H đi u hành không cho phép quá trình con ti n hành khi quá trình cha c a nó k t thúc.
X S k t thúc hàng lo t các quá trình con (cascading termination).
Trang 19Các thao tác trên quá trình (6)
• Chia s thông tin
• Gia t ng t c đ tính toán (n u máy có nhi u CPU)
• Module hóa
• Ti n d ng
̇ Các bài toán h p tác quá trình: ng i s n xu t – ng i tiêu
th , b đ c – b ghi, …
Trang 20Giao ti p liên quá trình (1)
(IPC – Interprocess Communication)
̇ IPC cung c p c ch cho phép giao ti p và đ ng b h at đ ng
c a các quá trình không chia s cùng không gian đ a ch (có th
n m trên các máy khác nhau).
• H u ích cho môi tr ng phân tán (ví d chat trên www)
̇ IPC dùng h th ng chuy n thông đi p (Message Passing System).
̇ H th ng chuy n thông đi p có th đ c đ nh ngh a theo nhi u cách.
Trang 21Giao ti p liên quá trình (2)
H th ng chuy n thông đi p
̇ H th ng chuy n thông đi p cho phép các quá trình giao ti p
v i nhau mà không c n tham kh o đ n các bi n dùng chung.
̇ Cung c p ít nh t 2 thao tác (operation):
• send (message) – kích th c thông đi p c đ nh/bi n đ i
• receive(message)
̇ N u P và Q giao ti p v i nhau, chúng c n:
• Thi t l p n i k t giao ti p (communication link) gi a chúng;
• Trao đ i thông đi p thông qua send/receive
̇ Cài đ t n i k t giao ti p:
• Thu c tính v t lý: b nh chia s , bus ph n c ng, …
• Thu c tính lu n lý: giao ti p tr c hay gián ti p, đ i x ng hay
đ i x ng, b ng b n sao hay tham chi u, kích th c thông
Trang 22Giao ti p liên quá trình (3)
Giao ti p tr c ti p
̇ Các quá trình ph i đ c đ t tên rõ ràng:
• Send (P, message) – g i thông đi p t i quá trình P
• Receive(Q, message) – nh n thông đi p t quá trình Q
• i x ng trong vi c đánh đ a ch : 2 quá trình ph i bi t tên nhau đ giao ti p;
• Thay đ i đ th c hi n tính b t đ i x ng trong đánh đ a ch :
X Send (P, message) – g i thông đi p t i quá trình P
Trang 23Giao ti p liên quá trình (4)
Giao ti p gián ti p
̇ Các thông đi p đ c g i và nh n thông qua h p th (mailbox),
c ng đ c xem nh c ng (port)
• M i mailbox có m t đ nh danh (id) duy nh t;
• Các quá trình ch có th giao ti p n u chúng dùng chung mailbox
X Send (A, message) – g i thông đi p t i h p th A
X Receive(A, message) – nh n thông đi p t h p th A.
Trang 24Giao ti p liên quá trình (5)
• Cho phép m t n i k t k t h p v i nhi u nh t 2 quá trình
• Cho phép ch 1 quá trình th c hi n thao tác nh n t i m t th i đi m
Trang 25Giao ti p liên quá trình (6)
ng b hóa (Synchronization)
̇ Chuy n thông đi p có th ngh n ho c không ngh n (blocking/non-blocking).
̇ Ngh n đ c xem là đ ng b , không ngh n là không đ ng b
̇ Send và Receive có th là ngh n ho c không ngh n:
• Send ngh n: quá trình g i b ngh n đ n khi thông đi p đ c nh n
• Send không ngh n: quá trình g i g i thông đi p và ti p t c h at
Trang 26Giao ti p liên quá trình (7)
• S c ch a gi i h n (Bounded capacity): chi u dài gi i h n n thông
đi p Quá trình g i ngh n khi hàng đ i b đ y
• S c ch a không gi i h n (Unbounded capacity): chi u dài không
gi i h n Quá trình g i không bao gi ngh n
Trang 27Giao ti p khách-ch (1)
(Client-server communication)
̇ c dùng đ truy c p d li u trên các server.
̇ Các ph ng pháp shared memory và message passing c ng
có th đ c dùng cho giao ti p khách-ch
̇ Ba ph ng pháp khác th ng dùng cho giao ti p d ng này:
• Sockets
• Remote Procedure Calls (RPCs)
• Java’s Remote Method Invocation (RMI)
Trang 28Giao ti p khách-ch (1)
Sockets
̇ M t socket đ c đ nh ngh a nh m t đi m đ u cu i cho giao
ti p (endpoint for communication)
• M t c p quá trình giao ti p qua m ng dùng m t c p socket – m t cho m i quá trình
Trang 29Giao ti p khách-ch (2)
Sockets (tt)
Trang 30Giao ti p khách-ch (3)
Remote procedure Call (RPC)
̇ RPC tr u t ng hóa các l i g i th t c (procedure calls) gi a các quá trình trên h th ng m ng
• Nó cho phép m t client g i m t th t c trên m t máy xa nh nó
g i m t th t c c c b
• Message trao đ i trong giao ti p RPC đ c s p x p có c u trúc
và đ c chuy n đ n m t RPC daemon l ng nghe trên m t c ng
t i máy xa
̇ Stub: đ i di n phía client cho m t th t c th c trên server
• Khi client g i m t th tuc xa, h th ng RPC s g i stub t ng
ng, chuy n cho nó các tham s đ c cung c p t i th tuc xa
• Stub này s đ nh v c ng trên server và s p x p các tham s theo
m t đ nh dang (đóng gói) và g i nó đi b ng message passing
̇ M t stub t ng t trên server nh n message này, m gói các
Trang 31Giao ti p khách-ch (4)
Remote procedure Call (tt)
Th c thi
c a RPC
Trang 32Giao ti p khách-ch (5)
Remote Method Invocation (RMI)
̇ RMI là m t c ch Java t ng t RPC
̇ RMI cho phép m t ch ng trình Java trên m t máy g i th c
hi n m t method trên m t remote object
Trang 33cho remote object
trên phía client
̇ Skeleton đ i di n
cho remote object
phía server