CHƯƠNG
CHƯƠNG
3: QU
3: QU
Á
Á
TRÌNH
TRÌNH
3.2
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
N
N
Ộ
Ộ
I DUNG
I DUNG
Khái niệm quá trình
Lậplịch biểu quá trình
Các hoạt động trên quá trình
Hợp tác các quá trình
Liên lạcgiữa các quá trình
Liên lạctrongcáchệ Client-Server
3.3
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
KH
KH
Á
Á
I NI
I NI
Ệ
Ệ
M QU
M QU
Á
Á
TRÌNH
TRÌNH
HĐH thựchiện nhiềukiểuchương trình:
z Hệ thống bó – jobs
z Các hệ thống chia sẻ thờigian–cácchương trình
người dùng/ các nhiệmvụ
Công việc (job) = quá trình (process)
Quá trình là mộtchương trình trong sự thựchiện; sự thực
hiện quá trình phảitiếntriển theo kiểucáchtuầntự
Một quá trình bao gồm:
z Bộđếmchương trình
z Stack
z Phầndữ liệu
3.4
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
Process in Memory
Process in Memory
3.5
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
TR
TR
Ạ
Ạ
NG TH
NG TH
Á
Á
I QU
I QU
Á
Á
TRÌNH
TRÌNH
Khi quá trình thựchiện nó thay đổitrạng thái
z new: Quá trình đang đượckhởitạo
z running: các chỉ thịđang đượcthựchiện
z waiting: Quá trình đang chờđợimộtbiếncố xảyra
z ready: Quá trình đang chờ đượccấp processor
z terminated: Quá trình kết thúc sự thựchiện
3.6
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
BI
BI
Ể
Ể
U Đ
U Đ
Ồ
Ồ
TR
TR
Ạ
Ạ
NG TH
NG TH
Á
Á
I QU
I QU
Á
Á
TRÌNH
TRÌNH
3.7
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
KH
KH
Ố
Ố
I ĐI
I Đ
I
Ề
Ề
U KHI
U KHI
Ể
Ể
N QU
N QU
Á
Á
TRÌNH
TRÌNH
Process Control Block (PCB)
Process Control Block (PCB)
Thông tin kếthợpvớimỗi quá trình
Trạng thái quá trình
Bộđếmchương trình
Các thanh ghi CPU
Thông tin lậplịch biểuCPU
Thông tin quảntrị bộ nhớ
Thông tin kiểm toán
Thông tin trạng thái I/O
3.8
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
KH
KH
Ố
Ố
I ĐI
I Đ
I
Ề
Ề
U KHI
U KHI
Ể
Ể
N QU
N QU
Á
Á
TRÌNH (PCB)
TRÌNH (PCB)
3.9
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
S
S
Ự
Ự
CHUY
CHUY
Ể
Ể
N CPU QUA L
N CPU QUA L
Ạ
Ạ
I GI
I GI
Ữ
Ữ
A C
A C
Á
Á
C QU
C QU
Á
Á
TRÌNH
TRÌNH
3.10
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
C
C
Á
Á
C H
C H
À
À
NG Đ
NG Đ
Ợ
Ợ
I L
I L
Ậ
Ậ
P L
P L
Ị
Ị
CH BI
CH BI
Ể
Ể
U QU
U QU
Á
Á
TRÌNH
TRÌNH
Hàng đợicôngviệc (Job Queue) –tậptấtcả các quá trình
trong hệ thống
Hàng đợisẵn sàng (Ready Queue) –tập các quá trình nằm
trong bộ nhớ sẵnsàngvàchờđợithựchiện
Các hàng đợithiếtbị (Device Queues) –tập các quá trình
chờđợimộtthiếtbị I/O
Các quá trình di trú giữa các hàng đợi
3.11
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
H
H
À
À
NG Đ
NG Đ
Ợ
Ợ
I S
I S
Ẵ
Ẵ
N S
N S
À
À
NG & C
NG & C
Á
Á
C H
C H
À
À
NG Đ
NG Đ
Ợ
Ợ
I
I
THI
THI
Ế
Ế
T B
T B
Ị
Ị
I/O
I/O
3.12
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
SƠ Đ
SƠ Đ
Ồ
Ồ
L
L
Ậ
Ậ
P L
P L
Ị
Ị
CH BI
CH BI
Ể
Ể
U QU
U QU
Á
Á
TRÌNH
TRÌNH
3.13
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
C
C
Á
Á
C B
C B
Ộ
Ộ
L
L
Ậ
Ậ
P L
P L
Ị
Ị
CH BI
CH BI
Ể
Ể
U
U
Bộ lậplịch biểudàihạn (Long-term scheduler / job
scheduler) –chọn các quá trình để chuyển sang hàng
đợisẵn sàng
Bộ lậplịch biểungắnhạn (Short-term scheduler /
CPU scheduler) –chọn quá trình sẽđượcthựchiệnkế
tiếpvàcấpphátCPU chonó
3.14
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
B
B
Ổ
Ổ
XUNG L
XUNG L
Ậ
Ậ
P L
P L
Ị
Ị
CH BI
CH BI
Ể
Ể
U TRUNG H
U TRUNG H
Ạ
Ạ
N
N
3.15
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
C
C
Á
Á
C B
C B
Ộ
Ộ
L
L
Ậ
Ậ
P L
P L
Ị
Ị
CH BI
CH BI
Ể
Ể
U (Cont.)
U (Cont.)
Bộ lậplịch biểungắnhạn đượcviệndẫnthường xuyên (ms) ⇒
nhanh
Bộ lậplịch biểu dài hạn đượcviệndẫnítthường xuyên (seconds,
minutes) ⇒ có thể chậm
Bộ lậplịch biểu dài hạn điềukhiểnbậc đachương
Các quá trình được phân thành:
z Quá trình I/O-bound –tiêunhiềuthời gian cho hoạt động I/O
hơn cho tính toán, gồm nhiều CPU bursts ngắn
z Quá trình CPU-bound –tiêunhiềuthờigianhơn cho tính
toán; gồmmộtsố ít CPU bursts rất dài
3.16
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
CHUY
CHUY
Ể
Ể
N NG
N NG
Ữ
Ữ
C
C
Ả
Ả
NH
NH
Khi CPU chuyển cho quá trình khác, hệ thống phảilưulạitrạng
thái của quá trình cũ và nạptrạng thái của quá trình mới
Thờigianchuyểnngữ cảnh là một “phí”; hệ thống không làm việc
“hữu ích” khi chuyểnngữ cảnh
Thờigianchuyểnngữ cảnh phụ thuộcvàohỗ trợ phầncứng
3.17
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
T
T
Ạ
Ạ
O QU
O QU
Á
Á
TRÌNH
TRÌNH
Quá trình cha tạo ra các quá trình con, các quá trình con lạicóthể
tạo ra các quá trình con củanó, tạoramột cây các quá trình
Chia sẻ tài nguyên
z Cha và con chia sẻ tấtcả các tài nguyên
z Các con chia sẻ mộttập con các tài nguyên củacha
z Cha và con không chia sẻ tài nguyên
Sự thựchiện
z Cha và các con thựchiện đồng thời
z Cha chờđếntận khi con kết thúc
3.18
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
T
T
Ạ
Ạ
O QU
O QU
Á
Á
TRÌNH (Cont.)
TRÌNH (Cont.)
Không gian địachỉ
z Con sao lạicủacha
z Con có mộtchương trình đượcnạpvàotrongnó
Ví dụ: UNIX
z Fork: lờigọihệ thống tạo quá trình mới
z Exec: lờigọihệ thống được dùng sau fork để thay thế không
gian bộ nhớ của quá trình vớichương trình mới
3.19
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
T
T
Ạ
Ạ
O QU
O QU
Á
Á
TRÌNH
TRÌNH
3.20
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
CHƯƠNG TRÌNH C PHÂN NH
CHƯƠNG TRÌNH C PHÂN NH
Á
Á
NH QU
NH QU
Á
Á
TRÌNH
TRÌNH
int main()
{
pid_t pid;
/* fork another process */
pid = fork();
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 */
/* parent will wait for the child to complete */
wait (NULL);
printf ("Child Complete");
exit(0);
}
}
3.21
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
CÂY QU
CÂY QU
Á
Á
TRÌNH TRONG Solaris
TRÌNH TRONG Solaris
3.22
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
K
K
Ế
Ế
T TH
T TH
Ú
Ú
C QU
C QU
Á
Á
TRÌNH
TRÌNH
Quá trình thựchiện xong chỉ thị saucùngvàyêucầu HĐH xóa nó
(exit)
z Xuấtdữ liệutừ con đến cha (thông qua wait)
z Các tài nguyên của quá trình đượcthuhồibởi HĐH
Cha có thể kết thúc sự thựchiệncủa các quá trình con (abort)
z Con vượt quá các tài nguyên đượccấpphát
z Nhiệmvụ của con không còn đượccầnthiếtnữa
z Nếucha đang thoát
Mộtsố HĐH không cho phép con tiếptụcnếucha kết thúc
– Tấtcả các con bị kết thúc – Kết thúc hàng loạt
(cascading termination)
3.23
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
C
C
Á
Á
C QU
C QU
Á
Á
TRÌNH H
TRÌNH H
Ợ
Ợ
P T
P T
Á
Á
C
C
Quá trình độclập không ảnh hưởng và không bịảnh hưởng bởi
sự thựchiệncủa quá trình khác
Quá trình hợptáccó thểảnh hưởng và bịảnh hưởng bởisự thực
hiệncủa quá trình khác
Các lợithế củasự hợp tác quá trình
z Chia sẻ thông tin
z Tăng tốc độ tính toán
z Module hóa
z Tiệnlợi
3.24
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
V
V
Ấ
Ấ
N Đ
N Đ
Ề
Ề
PRODUCER
PRODUCER
-
-
CONSUMER
CONSUMER
Kiểumẫu cho các quá trình hợp tác, quá trình producer sản
suất thông tin đượctiêuthụ bởi quá trình consumer
z Buffer không giớinội (unbounded-buffer) không bị giới
hạnvề kích cỡ buffer
z Buffer giớinội (bounded-buffer) buffer có kích cỡ cốđịnh
3.25
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts - 7
th
Edition, Feb 7, 2006
BUFFER GI
BUFFER GI
Ớ
Ớ
I N
I N
Ộ
Ộ
I
I
–
–
GI
GI
Ả
Ả
I PH
I PH
Á
Á
P B
P B
Ộ
Ộ
NH
NH
Ớ
Ớ
CHIA
CHIA
S
S
Ẻ
Ẻ
Dữ liệu chia sẻ
#define BUFFER_SIZE 10
typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
Giảiphápđúng nhưng chỉ sử dụng được BUFFER_SIZE-1 phần
tử