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
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
Ố
Ố
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
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
Á
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
Ậ
Ậ
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
Ậ
Ậ
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
Ể
Ể
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
Á
Á
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 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
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
Ớ
Ớ
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ử