Bài giảng Hệ điều hành - Chương 3: Quá trình

„ 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

pdf44 trang | Chuyên mục: Hệ Điều Hành | Chia sẻ: dkS00TYs | Lượt xem: 2110 | Lượt tải: 1download
Tóm tắt nội dung Bài giảng Hệ điều hành - Chương 3: Quá trình, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
t CPU bursts rất dài
3.16 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
CHUYỂN NGỮ CẢNH
„ Khi CPU chuyển cho quá trình khác, hệ thống phải lưu lại trạng
thái của quá trình cũ và nạp trạng thái của quá trình mới
„ Thời gian chuyển ngữ cảnh là một “phí”; hệ thống không làm việc
“hữu ích” khi chuyển ngữ cảnh
„ Thời gian chuyển ngữ cảnh phụ thuộc vào hỗ trợ phần cứng
3.17 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
TẠO QUÁ TRÌNH
„ Quá trình cha tạo ra các quá trình con, các quá trình con lại có thể
tạo ra các quá trình con của nó, tạo ra một cây các quá trình
„ Chia sẻ tài nguyên
z Cha và con chia sẻ tất cả các tài nguyên
z Các con chia sẻ một tập con các tài nguyên của cha
z Cha và con không chia sẻ tài nguyên
„ Sự thực hiện
z Cha và các con thực hiện đồng thời
z Cha chờ đến tận khi con kết thúc
3.18 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
TẠO QUÁ TRÌNH (Cont.)
„ Không gian địa chỉ
z Con sao lại của cha
z Con có một chương trình được nạp vào trong nó
„ Ví dụ: UNIX
z Fork: lời gọi hệ thống tạo quá trình mới
z Exec: lời gọi hệ thống được dùng sau fork để thay thế không
gian bộ nhớ của quá trình với chương trình mới
3.19 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
TẠO QUÁ TRÌNH
3.20 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
CHƯƠNG TRÌNH C PHÂN NHÁNH QUÁ 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 ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
CÂY QUÁ TRÌNH TRONG Solaris
3.22 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
KẾT THÚC QUÁ TRÌNH
„ Quá trình thực hiện xong chỉ thị sau cùng và yêu cầu HĐH xóa nó
(exit)
z Xuất dữ liệu từ con đến cha (thông qua wait)
z Các tài nguyên của quá trình được thu hồi bởi HĐH
„ Cha có thể kết thúc sự thực hiện của các quá trình con (abort)
z Con vượt quá các tài nguyên được cấp phát
z Nhiệm vụ của con không còn được cần thiết nữa
z Nếu cha đang thoát
Một số HĐH không cho phép con tiếp tục nếu cha kết thúc
– Tất cả các con bị kết thúc – Kết thúc hàng loạt
(cascading termination)
3.23 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
CÁC QUÁ TRÌNH HỢP TÁC
„ Quá trình độc lập không ảnh hưởng và không bị ảnh hưởng bởi
sự thực hiện của quá trình khác
„ Quá trình hợp tác có thể ảnh hưởng và bị ảnh hưởng bởi sự thực
hiện của quá trình khác
„ Các lợi thế của sự 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ện lợi
3.24 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
VẤN ĐỀ PRODUCER-CONSUMER
„ Kiểu mẫu cho các quá trình hợp tác, quá trình producer sản
suất thông tin được tiêu thụ bởi quá trình consumer
z Buffer không giới nội (unbounded-buffer) không bị giới
hạn về kích cỡ buffer
z Buffer giới nội (bounded-buffer) buffer có kích cỡ cố định
3.25 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
BUFFER GIỚI NỘI – GIẢI PHÁP BỘ NHỚ CHIA 
SẺ
„ Dữ liệu chia sẻ
#define BUFFER_SIZE 10
typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
„ Giải pháp đúng nhưng chỉ sử dụng được BUFFER_SIZE-1 phần
tử
3.26 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
BUFFER GIỚI NỘI – PHƯƠNG PHÁP Insert()
while (true) {
/* Produce an item */
while (((in = (in + 1) % BUFFER SIZE count) == out)
; /* do nothing -- no free buffers */
buffer[in] = item;
in = (in + 1) % BUFFER SIZE;
}
3.27 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
BUFFER GIỚI NỘI – PHƯƠNG PHÁP Remove()
while (true) {
while (in == out)
; // do nothing -- nothing to consume
// remove an item from the buffer
item = buffer[out];
out = (out + 1) % BUFFER SIZE;
return item;
}
3.28 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
LIÊN LẠC GIỮA CÁC QUÁ TRÌNH (IPC)
„ Cơ chế cho sự liên lạc giữa các quá trình và đồng bộ hóa các hành
động của chúng
„ Hệ thống thông điệp – các quá trình liên lạc với nhau không sử
dụng đến các biến chia sẻ
„ IPC cung cấp hai hoạt động:
z send(message) – message kích cỡ cố định/thay đổi
z receive(message)
„ Nếu P và Q muốn liên lạc, chúng cần phải:
z Thiết lập một nối kết liên lạc
z Trao đổi các thông điệp (messages) dùng send/receive
„ Thực thi nối kết liên lạc:
z Vật lý (bộ nhớ chia sẻ, hardware bus)
z logic (Các tính chất logic)
3.29 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
MỘT SỐ VẤN ĐỀ THỰC THI
„ Các nối kết được thiết lập như thế nào?
„ Một nối kết có thể kết hợp với hơn hai quá trình?
„ Có thể có bao nhiêu nối kết giữa mỗi cặp quá trình liên lạc?
„ Khả năng của một nối kết?
„ Kích cỡ thông điệp mà nối kết chịu đựng được là cố định / thay
đổi?
„ Một nối kết là đơn hướng hay lưỡng hướng?
3.30 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
CÁC MÔ HÌNH LIÊN LẠC
3.31 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
LIÊN LẠC TRỰC TIẾP
„ Các quá trình phải định tên tường minh mỗi quá trình khác:
z send (P, message) – gửi một message cho quá trình P
z receive(Q, message) – nhận một message từ quá trình Q
„ Các tính chất của một nối kết liên lạc
z Các nối kết được thiết lập tự động
z Một nối kết được kết hợp với đúng một cặp quá trình liên lạc
z Giũa mỗi cặp có đúng một nối kết
z Nối kết có thể đơn hướng, nhưng thông thường là lưỡng
hướng
3.32 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
LIÊN LẠC GIÁN TIẾP
„ Các thông điệp được gửi và nhận từ mailboxes (cũng được
tham khảo như các ports)
z Mỗi mailbox có một id duy nhất
z Các quá trình có thể liên lạc nếu chúng chia sẻ một mailbox
„ Các tính chất của nối kết liên lạc
z Nối kết chỉ được thiết lập nếu các quá trình chia sẻ một
mailbox chung
z Một nối kết có thể được kết hợp với nhiều quá trình
z Mỗi cặp quá trình có thể chia sẻ một vài nối kết liên lạc
z Nối kết có thể đơn hướng hoặc lưỡng hướng
3.33 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
LIÊN LẠC GIÁN TIẾP
„ Các hoạt động
z Tạo một mailbox mới
z Gửi và nhận messages qua mailbox
z Phá hủy mailbox
„ Các nguyên thủy:
send(A, message) – gửi một message đến mailbox A
receive(A, message) – nhận một message từ mailbox A
3.34 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
LIÊN LẠC GIÁN TIẾP
„ Chia sẻ mailbox
z P1, P2, và P3 chia sẻ mailbox A
z P1, gủi; P2 và P3 nhận
z Ai nhận message?
„ Các giải pháp
z Cho phép một nối kết kết hợp với nhiều nhất hai quá trình
z Chỉ cho phép một quá trình tại một thời điểm thực hiện hoạt
động nhận
z Cho phép hệ thống chọn tùy ý người nhận. Người gửi báo ai
sẽ nhận.
3.35 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
ĐỒNG BỘ HÓA
„ Truyền Message có thể là blocking / non-blocking
„ Blocking được xét là đồng bộ (synchronous)
z Gửi Blocking: người gửi bị ngăn đến tận khi message được
nhận
z Nhận Blocking: người nhận bị ngăn đến tận khi một message 
là sẵn có
„ Non-blocking được xét là phi đồng bộ (asynchronous)
z Gửi Non-blocking: Người gửi gửi message và tiếp tục
z Nhận Non-blocking: người nhận nhận một message hợp lệ / 
vô hiệu
3.36 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
BUFFER
„ Hàng đợi các messages gắn với nối kết; được thực thi bởi một
trong ba cách
1. Sức chứa Zero – 0 messages
Người gửi phải chờ người nhận (hẹ hò)
2. Sức chứa giới nội – n messages
Người gửi phải chờ nếu nối kết đầy
3. Sức chứa không giới hạn
Người gửi không phải chờ
3.37 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
LIÊN LẠC Client-Server
„ Sockets
„ Remote Procedure Calls - RPC
„ Remote Method Invocation (Java) -RMI
3.38 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
Sockets
„ Một socket được định nghĩa như điểm cuối của một liên lạc
„ Nối địa chỉ IP và port
„ Socket 161.25.19.8:1625 tham khảo port 1625 trên host 
161.25.19.8
„ Liên lạc gồm một cặp sockets
3.39 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
LIÊN LẠC Socket
3.40 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
GỌI THỦ TỤC TỪ XA 
Remote Procedure Calls - RPC
„ Remote procedure call (RPC): gọi thủ tục giữ các quá trình trên
các hệ thống mạng.
„ Stubs – proxy phía client cho thủ tục trên server.
„ Stub phía client định vị server và sắp xếp theo thứ tự (marshal) các
tham số.
„ Stub phía server nhận message này, tháo các tham số được, và
thực hiện thủ tục trên server.
3.41 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
SỰ THỰC HIỆN RPC
3.42 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
Remote Method Invocation - RMI
„ Remote Method Invocation (RMI) là một cơ chế Java tương tự
RPC.
„ RMI cho phép một chương trình Java program trên một máy gọi
một phương pháp trên một đối tượng ở xa.
3.43 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006
CÁC THAM SỐ ĐƯỢC SẮP THEO THỨ TỰ
End of Chapter 3

File đính kèm:

  • pdfBài giảng Hệ điều hành - Chương 3 Quá trình.pdf