Tổng hợp đáp án câu hỏi [chương VII]

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Tổng hợp đáp án câu hỏi [chương VII]

Bài gửi  LeNgocTung (I22A) on 13/4/2013, 16:46

CHƯƠNG 7:
Mục đích của đồng bộ hóa công việc
- Mục đích của đồng bộ hóa công việc các tiến trình là:
+ Đảm bảo tính nhất quán của tải nguyên dùng chung.
+ Tránh được hiện tượng Deadlock (Hiện tượng kẹt tiến trình).
- Ví dụ: Một trường học chỉ có 1 phòng lab (tài nguyên dùng chung), lớp có giờ
học trước thì được vào phòng lab học trước, các lớp còn lại phải chờ đến khi
lớp học trước đó hết giờ mới được vào phòng lab học.

Khái niệm đoạn tương tranh
Đoạn tương tranh là đoạn mã chương trình, điều
khiển công việc của tiến trình có tính chất, mà khi thể hiện đoạn mã đó tác
động tới tài nguyên dùng chung.

- Tính Loại trừ lẫn nhau hay Loại trừ tương hỗ (Mutual Exclusion) về phương
diện thời gian: Khi có 1 tiến trình đang ở trong ĐTT của nó thì không có tiến
trình nào khác trong nhóm cũng tại đoạn như vậy, nghĩa là: Mỗi thời điểm chỉ có
1 tiến trình được phép truy cập và/hoặc thay đổi tài nguyên chung.

- Các tiến trình tương tranh có cấu trúc mã bao gồm Entry Section (Đoạn Đăng
nhập), Critical Section (Đoạn Tương tranh), Exit Section (Đoạn Đăng xuất) và
các Remainder Section (Đoạn Còn lại).

Khái niệm đèn hiệu
Khái niệm đèn hiệu:
- Đèn hiệu là phương tiện đồng bộ hoá được E.W. Dijkstra đề xuất năm 1965.
- Đèn hiệu được mô tả bằng một biến kiểu nguyên với 2 tác nguyên là Wait (Chờ)
và Signal (Báo hiệu):

typedef int semaphore; // Định nghĩa kiểu Đèn hiệu
wait (semaphore S)
{
while ( S <= 0 ); // Chờ bận nếu S<=0
S --; // Giảm S đi 1
}

signal (semaphore S)
{
S ++; // Tăng S lên 1
}

- Việc kiểm tra S <= 0 và giảm S (trong Wait) hoặc tăng S (trong Signal)
phải được thực hiện trọn vẹn (không xảy ra ngắt trong thời gian thi hành), do
đó Wait và Signal được gọi là các tác nguyên (Atomic Operations).


Trình bày khái niệm đèn hiệu như một phương tiện đồng bộ hóa công việc các tiến trình.
Trình bày 2 ứng dụng của đèn hiệu.

Phương pháp đồng bộ hóa đèn hiệu được
E.W.Dijstra đề xuất năm 1965 và được trao tặng danh hiệu Turing do hiệp hội các
nhà tin học Mỹ lập ra và trao tặng . Một Semaphone S là một biến kiểu nguyên
(integer) được truy suất với hai thao tác nguyên là
+ Hàm Wait ( ) : là một hàm không chia được, có một biến truyền vào là biến S
kiểu đèn hiệu
+ Hàm Signal (báo hiệu) có tham số truyền vào là đèn hiệu hàm này không chờ,
chỉ tăng đèn hiệu lên.
typedef int semaphore; // Định nghĩa kiểu đèn hiệu
wait (semaphore S) {
while ( S <= 0 ); // Chờ bận nếu S<=0
S --; // Giảm S đi 1
}
signal (semaphore S) {
S ++; // Tăng S lên 1
}

Việc kiễm tra S<= 0 và giảm S ( tring Wait) hoặc tăng S (trong Signal) phải
được thực hiện trọn vẹn( không xảy ra ngắt trong thời gian thi hành) do đó Wait
và Signal được gọi là các tác nguyên (atomic Operationns)
Những sửa đổi đối với giá trị Integer của semaphore trong các thao tác Wait ( )
và Signal ( ) phải được thực thi không bị phân chia. Nghĩa là khi một tiến
trình sửa đổi giá trị semaphore , không có tiến trình nào cùng một lúc có thể
sửa đổi cùng biến semaphore đó. Ngoài ra , trong trường hợp của biến wait (s),
kiểm tra giá trị integer của S (Sδ0) và sửa đổi có thể của nó (S--) cũng phải
được thực thi mà không bị ngắt.
Trình bày 2 ứng dụng của đèn hiệu
+ Ứng dụng 1: Giải quyết vấn đề vùng tương tranh.
Mã của tiến trình Pi bây giờ có cấu trúc:
typedef int semaphore;
semaphore mutex=1; // Binary Semaphore
while (1) { // (Đèn hiệu nhị phân)
remainder section
wait (mutex);
critical section
signal (mutex);
remainder section
}

Đoạn tương tranh là mã khi thực hiện đoạn mã thì ảnh hưởng đến vùng tranh chấp,
các code trong mã khi sử dụng chugn ảnh hưởng đến miền, vùng tranh chấp.
Ví dụ : giả sử có một cây cầu ở đấu cầu có 1 đèn mutex ( có 2 trạng thái xanh
và đỏ) 2 ô tô tìm cách lên cầu nhưng trọng tải của cầu chỉ chịu được 1 ô tô khi
lên cầu và ô tô khác phải chờ, đoạn qua cầu thuộc đoạn tương tranh, cầu chính
là tài nguyên dùng chung, và lệnh qua cầu thuộc đoạn tương tranh.
Chúng ta có thể sử dụng semaphores để giải quyết vấn đề vùng tranh chấp với n
tiến trình. N tiến trình chia sẻ 1 biến semaphore, mutex được khởi tạo.
Ứng dụng 2 : Đảm bảo công việc trật tự của các tiến trình.
Chúng ta cũng có thể sử dụng Semaphores để giải quyết vấn đề đồng bộ khác nhau
Thí dụ ,để xem xét hai tiến trình đang thực thi đồng hành : P1 với câu lệnh S1
và P2 với câu lệnh S2. Chúng ta tổ chức sao cho S2 được thực thi chỉ sau khi S1
đã hoàn thành , thực hiện bằng cách P1 và P2 chia sẻ một semaphore chugn Synch
được khời tạo 0 và bằng cách chèn các câu lệnh Semaphore synch = 0;
Cấu trúc P1 Cấu trúc P2 :
S1 wait (synch);
signal (synch); S2

LeNgocTung (I22A)

Tổng số bài gửi : 35
Join date : 17/03/2013
Age : 27

Xem lý lịch thành viên

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết