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

Giao tiếp giữa các tiến trình - Một số khái niệm cơ bản

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 (361.38 KB, 28 trang )

Một số khái niệm cơ bản*
 Tiến trình độc lập không ảnh hưởng và không bị ảnh
hưởn
g bởi việc thực thi của các tiến trình khác.g
 Tiến trình hợp tác (không độc lập) có thể ảnh hưởng
và bị ảnh hưởng bởi việc thực thi của các tiến trình
khác.
 Ưu điểm của việc hợp tác tiến trình:

Chia sẻ thông tin

Tăng tốc tính toán (xử lý song song)
Tí h d l hó

Tính module hóa

Tiện lợi
2
Một số khái niệm cơ bản*
 Các tiến trình sử dụng và cập nhập dữ liệu chia sẻ
như các biến, file và cơ sở dữ liệu dùng chung.
ể Thao tác ghi phải độc lập từng đôi một để ngăn ngừa
tình trạng đụng độ, có thể dẫn đến tính không toàn
vẹndữ liệuvẹn dữ liệu.
 Các miền găng dùng để cung cấp sự toàn vẹn dữ liệu.

Mộttiếntrìnhđòi hỏimiềngăng phải không bị chờMột tiến trình đòi hỏi miền găng phải không bị chờ
mãi mãi: deadlock
3
Đụng độ (race condition)
 Race condition: tình huống mà nhiều tiến trình cùng


tru
y cập và thao tác dữ liệu chia sẻ một cách đồng y p g
thời. Dữ liệu cuối cùng phụ thuộc vào tiến trình cuối
cùng.
ể ế ồ Để ngăn ngừa đụng độ, các tiến trình đồng hành phải
được đồng bộ hóa.
4
Đụng độ (race condition)
5
Miền găng (critical section)
 n tiến trình đấu tranh với nhau để sử dụng một số dữ
liệu nào đó.
ế ề Mỗi tiến trình có một đoạn mã, gọi là miền găng
(critical section (CS)), tại đó dữ liệu chia sẻ được
truy cậptruy cập.
 Vấn đề: bảo đảm rằng khi một tiến trình đang thực
thi tron
g miền găng của nó, không có tiến trình nào g g g ,g
khác được quyền thực thi trong miền găng của nó.
6
Ngữ cảnh miền găng
 Khi một tiến trình thi hành đoạn mã thao tác trên dữ
liệu chia sẻ (hay tài nguyên), chúng ta nói rằng tiến
ìhđó đ iề ă ủ ótrình đó đang trong miền găng của nó.
 Việc thực thi các miền găng phải có tính duy nhất: tại
bấtkỳ thời điểm nào chỉ có duy nhấtmộttiếntrìnhbất kỳ thời điểm nào, chỉ có duy nhất một tiến trình
được quyền thực thi trong miền găng của nó (ngay cả
với nhiều bộ xử lý).
 Vì vậy mỗi tiến trình phải yêu cầu quyền trước khi
vào miền găng.

7
Ngữ cảnh miền găng
 Đoạn mã thể hiện yêu cầu này được gọi làEntry
Section
(ES).()
 Miền găng (CS) có thể theo sau là Leave/Exit
Section (LS).Section (LS).
 Phần đoạn mã còn lại là Remainder Section (RS).
 Vấn đề củamiềngăng là thiếtkế mộtgiaothứcmà Vấn đề của miền găng là thiết kế một giao thức mà
các tiến trình có thể sử dụng để hành động của chúng
sẽ không phụ thuộcvàothứ tự mà sự thi hành củasẽ không phụ thuộc vào thứ tự mà sự thi hành của
chúng được chen vào.
8
Giải pháp cho vấn đề miền găng
 Có 3 yêu cầu mà một giải pháp đúng cần phải thỏa
mãn:
ế1. Mutual Exclusion: không có 2 tiến trình cùng ở
trong miền găng một lúc
2 PMộttiế tìhbê ài iề ă2. Progress: Một tiến trình bên ngoài miền găng
không được ngăn cản các tiến trình khác vào
mi
ền găngg g
3. Bounded Waiting: không có tiến trình nào phải
chờ vô hạn để vào miền găng
 Chỉ cần một trong ba điều kiện trên sai thì giải
há đ là i
9
pháp đưa ra là sai.
Cấu trúc của các tiến trình
 Cấu trúc tổng quát của tiến trình P

i
(P
j
)
do
{{
entry section
critical section
leave section
remainder section
} hil (1)} while (1);
 Lưu ý: Các tiến trình có thể chia sẻ các biến dùng
chung để đồng bộ hóa hoạt động của chúngchung để đồng bộ hóa hoạt động của chúng.
10
Phân loại các giải pháp cho CS
 Giaûi phaùp busy-waiting

Alg. 1 & 2, Peterson, Dekker, Bakery, g y

TSL, Interrupt
 Giaûi phaùp sleep and wake-up

Semaphore

Monitor
11
Giải thuật 1
 Biến chia sẻ

int turn; /* khởi đầu turn = 0 */

á i đhùøii l i

nếu turn = i  P
i
được phép vào critical section
 Process P
i
do {do {
while (turn != i) ;
critical section
();()
turn = j;
remainder section();
i(1)} while (1);

Thoả mãn mutual exclusion (1)
12
Thoa man mutual exclusion (1)
 Progress (2) & bounded-waiting (3) ?

×