Tải bản đầy đủ (.pdf) (44 trang)

Bài Giảng Hệ Điều Hành-Chương 2: Quá trình pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (583.4 KB, 44 trang )

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ử

×