Professional Documents
Culture Documents
1 2
5 6
…..
1
Tại sao phải lập lịch?
Số lượng NSD, số lượng tiến trình luôn lớn
Lập lịch tiến trình z
hơn số lượng CPU của máy tính rất nhiều
z Tại một thời điểm, chỉ có duy nhất một tiến
trình được thực hiện trên một CPU
z Vấn đề:
z Số lượng yêu cầu sử dụng nhiều hơn số lượng tài
nguyên đang có (CPU)
z Do đó cần lập lịch để phân phối thời gian sử dụng
CPU cho các tiến trình của NSD và hệ thống
7 8
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
Hàng chờ lập lịch tiến trình Chuyển trạng thái
swap in Các tiến trình đang thực swap out
hiện dở bị swap out
z Thuật ngữ: Context switch
Hàng chờ sẵn
sàng thực hiện CPU
z Xảy ra khi một tiến trình A bị ngắt ra khỏi
CPU, tiến trình B bắt đầu được sử dụng CPU
Vào/ra Hàng chờ vào/ra Yêu cầu vào/ra
z Cách thực hiện:
Hết thời gian z Nhân HĐH ghi lại toàn bộ trạng thái của A, lấy từ
sử dụng CPU PCB (khối điều khiển tiến trình) của A
z Đưa A vào hàng chờ
Tiến trình con Tạo một tiến
thực hiện trình con z Nhân HĐH nạp trạng thái của B lấy từ PCB của B
z Thực hiện B
Ngắt xuất hiện Chờ ngắt 13 14
15 16
3
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
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
Vấn đề sử dụng vùng đệm Luồng (thread)
z Các thông điệp nằm trong hàng chờ tạm thời z Sinh viên tự tìm hiểu trong giáo trình trang
z Cỡ của hàng chờ:
z Chứa được 0 thông điệp: send blocking
z Chứa được n thông điệp: send non-blocking cho
đến khi hàng chờ có n thông điệp, sau đó send
blocking
z Vô hạn: send non-blocking
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