Professional Documents
Culture Documents
NLHDH 02
NLHDH 02
1 2
5 6
…..
1
3/1/2015
Hàng chờ lập lịch Hàng chờ lập lịch tiến trình
z Thuật ngữ: Queue Hàng chờ sẵn
sàng thực hiện CPU
z Các tiến trình chưa được phân phối sử dụng
CPU sẽ được đưa vào hàng chờ (queue) Vào/ra Hàng chờ vào/ra Yêu cầu vào/ra
9
Ngắt xuất hiện Chờ ngắt 10
Phân loại các bộ lập lịch Minh họa bộ lập lịch trung hạn
z Bộ lập lịch dài hạn (long-term scheduler)
swap in Các tiến trình swap out
z Thường dùng trong các hệ xử lý theo lô đang thực hiện
z Đưa tiến trình từ spool vào bộ nhớ trong dở bị swap out
2
3/1/2015
15 16
3
3/1/2015
Minh họa tiến trình cha và con Kết thúc tiến trình
Tiến trình
cha gọi z Một tiến trình kết thúc khi:
create-process Tiến trình con z Thực hiện xong và gọi hàm hệ thống exit (kết
thúc bình thường)
z Gọi đến hàm abort hoặc kill (kết thúc bất thường
khi có lỗi hoặc có sự kiện)
z Bị hệ thống hoặc tiến trình cha áp dụng hàm
abort hoặc kill do:
Có thể gọi hoặc z Sử dụng quá quota tài nguyên
không gọi wait để Gọi exit để kết thúc
z Tiến trình con không còn cần thiết
chờ/không chờ
z Khi tiến trình cha đã kết thúc (trong một số HĐH)
tiến trình con kết thúc
19 20
Minh họa tiến trình trong UNIX Hợp tác giữa các tiến trình
#include <stdio.h>
main() z Các tiến trình có thể hoạt động độc lập hoặc
{ hợp tác với nhau
int pid=fork(); /* Tạo tiến trình mới bằng hàm fork() */
z Các tiến trình cần hợp tác khi:
if (pid<0) { perror(“Cannot create process”); return(-1); }
else if (pid==0) { /* Tiến trình con */ z Sử dụng chung thông tin
execlp(); z Thực hiện một số nhiệm vụ chung
} z Tăng tốc độ tính toán
else { /* Tiến trình cha */
wait(NULL); /* Nếu không có lệnh này tiến trình cha thực hiện z …
“song song” với tiến trình con */ z Để hợp tác các tiến trình, cần có các cơ chế
printf(“Child completed\n”); truyền thông/liên lạc giữa các tiến trình
return(0);
}
(Interprocess communication – IPC)
21 22
}
4
3/1/2015
Truyền thông trực tiếp Minh họa truyền thông trực tiếp
z Hai toán tử z Mỗi kết nối được thiết
z send(P, msg): Gửi msg đến tiến trình P lập cho một cặp tiến
P2
trình duy nhất P1
z receive(Q, msg): Nhận msg từ tiến trình Q P3
z Mỗi tiến trình chỉ cần
z Cải tiến: biết tên/số hiệu của tiến
z send(P, msg): Gửi msg đến tiến trình P trình kia là truyền thông
z receive(id, msg): Nhận msg từ bất kỳ tiến trình được P6
nào z Tồn tại duy nhất một
kết nối giữa một cặp P5 P4
tiến trình
25 26
Truyền thông gián tiếp Minh họa truyền thông gián tiếp
z Các thông điệp được gửi và nhận qua các z Hai tiến trình có kết nối
hộp thư (mailbox) hoặc qua các cổng (port) nếu sử dụng chung một
P2
hộp thư P1
z Hai toán tử: P3
z Một kết nối có thể sử
z send(A, msg): Gửi msg đến hộp thư A dụng cho nhiều tiến Hộp
thư
z receive(B, msg): Nhận msg từ hộp thư B trình (>=2) A Hộp
thư
z Minh họa: Topo mạng hình sao z Nhiều kết nối có thể tồn P6 B
tại giữa một cặp tiến
trình (nếu sử dụng các P5 P4
hộp thư khác nhau)
27 28
5
3/1/2015
31 32
Bài tập
z Hãy viết chương trình minh họa cho các cơ
chế truyền thông non-blocking, blocking
z Hãy viết chương trình minh họa các cơ chế
truyền thông điệp sử dụng buffer có độ dài n
trong hai trường hợp: n>0 và n=0
z Chú ý: Để làm hai bài tập trên cần sử dụng
hai tiến trình; có thể thực hiện bài tập với
UNIX/Linux hoặc Windows
35