1
1
Nguyên lý hệđiềuhành
NguyễnHải Châu
Khoa Công nghệ thông tin
Trường Đạihọc Công nghệ
2
Khái niệmtiếntrình
3
Tiếntrìnhlàgì?
z Thuật ngữ: Process
(tiến trình/quá trình)
z Là một chương trình
đang được thực hiện
z Đượcxemlàđơnvị
làm việc trong các HĐH
z Có hai loạitiến trình:
z Tiếntrìnhcủa HĐH
z TiếntrìnhcủaNSD
4
Tiếntrìnhgồmcó…
z Đoạnmãlệnh (code, có sách gọilàtext)
z Đoạndữ liệu
z Đoạnngănxếp và heap (stack/heap)
z Các hoạt động hiệntại đượcthể hiện qua
con đếmlệnh (IP) và nội dung các thanh ghi
(registers) củabộ xử lý
z Chú ý:
z Tiếntrìnhlàthựcthể chủđộng
z Chương trình là thựcthể bịđộng
5
Giớihạnbộ nhớ
Danh sách các tệp đang mở
…
Con trỏ Trạng thái tiếntrình
2
7
Lậplịch tiếntrình
8
Tạisaophảilậplịch?
z Số lượng NSD, số lượng tiến trình luôn lớn
hơnsố lượng CPU củamáytínhrất nhiều
z Tạimộtthời điểm, chỉ có duy nhấtmộttiến
trình đượcthựchiệntrênmộtCPU
z Vấn đề:
z Số lượng yêu cầusử dụng nhiềuhơnsố lượng tài
nguyên đangcó(CPU)
z Do đócầnlậplịch để phân phốithờigiansử dụng
CPU cho các tiếntrìnhcủa NSD và hệ thống
9
Hàng chờ lậplịch
z Thuậtngữ: Queue
z Các tiếntrìnhchưa được phân phốisử dụng
CPU sẽđược đưavàohàng chờ (queue)
z Có thể có nhiềuhàngchờ trong hệ thống:
Hàng chờ sử dụng CPU, hàng chờ sử dụng
máy in, hàng chờ sử dụng ổđĩa CD…
z Trong suốtthờigiantồntại, tiến trình phảidi
chuyểngiữa các hàng chờ
10
Hàng chờ lậplịch tiếntrình
Hàng chờ sẵn
sàng thựchiện
Các tiếntrình
đang thựchiện
dở bị swap out
Vào/ra
swap out
swap in
3
13
Hàng chờ lậplịch tiếntrình
Hàng chờ sẵn
sàng thựchiện
Hàng chờ vào/ra Yêu cầuvào/ra
Hếtthờigian
sử dụng CPU
Tạomộttiến
trình con
Chờ ngắt
CPU
Vào/ra
Tiến trình con
thựchiện
Ngắtxuấthiện
Các tiếntrìnhđang thực
hiệndở bị swap out
swap outswap in
14
Chuyểntrạng thái
z Thuậtngữ: Context switch
z Thựchiện “song song” vớitiến trình con
18
Cây tiếntrình
z Tiến trình cha có thể có
nhiềutiếntrìnhcon
z Mỗitiến trình con chỉ có
mộttiến trình cha
z Các tiếntrìnhcon có
thể tạoracáctiếntrình
con khác…
P
1
P
11
P
12
P
121
P
122
P
111
P
1111
P
1112
4
19
Minh họatiến trình cha và con
create-process
else { /* Tiếntrìnhcha */
wait(NULL); /* Nếu không có lệnh này tiến trình cha thựchiện
“song song” vớitiến trình con */
printf(“Child completed\n”);
return(0);
}
}
22
Hợptácgiữacáctiếntrình
z Các tiếntrìnhcóthể hoạt động độclập hoặc
hợptácvớinhau
z Các tiếntrìnhcầnhợptáckhi:
z Sử dụng chung thông tin
z Thựchiệnmộtsố nhiệmvụ chung
z Tăng tốc độ tính toán
z …
z Để hợptáccáctiếntrình, cầncócáccơ chế
truyền thông/liên lạcgiữacáctiếntrình
(Interprocess communication – IPC)
23
Truyền thông giữacác
tiếntrình(IPC)
24
Các hệ thống truyền thông điệp
z Cho phép các tiếntrìnhtruyền thông với
nhau qua các toán tử send và receive
z Các tiếntrìnhcầncótên để tham chiếu
z Cầncómộtkếtnối(logic) giữatiếntrìnhP và
Q để truyền thông điệp
z Mộtsố loạitruyền thông:
3
P
6
P
5
P
4
27
Truyền thông gián tiếp
z Các thông điệp đượcgửivànhận qua các
hộpthư (mailbox) hoặc qua các cổng (port)
z Hai toán tử:
z send(A, msg): Gửi msg đếnhộpthư A
z receive(B, msg): Nhận msg từ hộpthư B
z Minh họa: Topo mạng hình sao
28
Minh họatruyềnthônggiántiếp
z Hai tiếntrìnhcókếtnối
nếusử dụng chung một
hộpthư
z Mộtkếtnốicóthể sử
dụng cho nhiềutiến
trình (>=2)
z Nhiềukếtnốicóthể tồn
tạigiữamộtcặptiến
trình (nếusử dụng các
hộpthư khác nhau)
P
1
P
phảichờ msg đến đích
để tiếptụcthựchiện
Non-blocking
Tiếntrìnhnhận
tạmdừng thực
hiệnchođếnkhi
msg đượcchuyển
tới
Tiếntrìnhtruyềnthông
điệpchờđếnkhimsg
đượcnhậnho
ặc msg
đượcphânphátđến
hộpthư
Blocking
receive(Q, msg)send(P, msg)
6
31
Vấn đề sử dụng vùng đệm
z Các thông điệpnằm trong hàng chờ tạmthời
z Cỡ củahàngchờ:
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
32
Luồng (thread)
z Sinh viên tự tìm hiểu trong giáo trình trang
33