tailieunhanh - Hệ điều hành ( Vũ Đức Lung ) - Chương 5 phần 2
Đặt vấn đề (tại sao phải đồng bộ và giải quyết tranh chấp ?).Vấn đề Critical giải pháp phần mềm. Giải thuật Peterson, và giải thuật bakery. Đồng bộ bằng hardware. Khảo sát các process/thread thực thi đồng thời và chia sẻ dữ liệu. | Chương V - Phần II Đồng Bộ và Giải Quyết Tranh Chấp (Process Synchronization) Nội dung Đặt vấn đề (tại sao phải đồng bộ và giải quyết tranh chấp ?) Vấn đề Critical section Các giải pháp phần mềm Giải thuật Peterson, và giải thuật bakery Đồng bộ bằng hardware Semaphore Các bài toán đồng bộ Critical region Monitor Đặt vấn đề Khảo sát các process/thread thực thi đồng thời và chia sẻ dữ liệu (qua shared memory, file). Nếu không có sự kiểm soát khi truy cập các dữ liệu chia sẻ thì có thể đưa đến ra trường hợp không nhất quán dữ liệu (data inconsistency). Để duy trì sự nhất quán dữ liệu, hệ thống cần có cơ chế bảo đảm sự thực thi có trật tự của các process đồng thời. Q L p R Baøi toaùn Producer-Consumer Producer-Consumer P không được ghi dữ liệu vào buffer đã đầy C không được đọc dữ liệu từ buffer đang trống P và C không được thao tác trên buffer cùng lúc P C Buffer (N) Giới hạn, không giới hạn ??? Đặt vấn đề Xét bài toán Producer-Consumer với bounded buffer Bounded buffer, | Chương V - Phần II Đồng Bộ và Giải Quyết Tranh Chấp (Process Synchronization) Nội dung Đặt vấn đề (tại sao phải đồng bộ và giải quyết tranh chấp ?) Vấn đề Critical section Các giải pháp phần mềm Giải thuật Peterson, và giải thuật bakery Đồng bộ bằng hardware Semaphore Các bài toán đồng bộ Critical region Monitor Đặt vấn đề Khảo sát các process/thread thực thi đồng thời và chia sẻ dữ liệu (qua shared memory, file). Nếu không có sự kiểm soát khi truy cập các dữ liệu chia sẻ thì có thể đưa đến ra trường hợp không nhất quán dữ liệu (data inconsistency). Để duy trì sự nhất quán dữ liệu, hệ thống cần có cơ chế bảo đảm sự thực thi có trật tự của các process đồng thời. Q L p R Baøi toaùn Producer-Consumer Producer-Consumer P không được ghi dữ liệu vào buffer đã đầy C không được đọc dữ liệu từ buffer đang trống P và C không được thao tác trên buffer cùng lúc P C Buffer (N) Giới hạn, không giới hạn ??? Đặt vấn đề Xét bài toán Producer-Consumer với bounded buffer Bounded buffer, thêm biến đếm count #define BUFFER_SIZE 10 /* 10 buffers */ typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0, out = 0, count = 0; Bounded buffer (tt) Quá trình Producer item nextProduced; while(1) { while (count == BUFFER_SIZE); /* do nothing */ buffer[in] = nextProduced; count++; in = (in + 1) % BUFFER_SIZE; } Quá trình Consumer item nextConsumed; while(1) { while (count == 0); /* do nothing */ nextConsumed = buffer[out] ; count--; out = (out + 1) % BUFFER_SIZE; } biến count được chia sẻ giữa producer và consumer Bounded buffer (tt) Các lệnh tăng, giảm biến count tương đương trong ngôn ngữ máy là: (Producer) count++: register1 = count register1 = register1 + 1 count = register1 (Consumer) count--: register2 = count register2 = register2 - 1 count = register2 Trong đó, các registeri là các thanh ghi của CPU. Bounded buffer (tt) Mã máy của các lệnh tăng và giảm biến count có thể bị thực thi xen kẽ Giả sử count đang bằng 5. Chuỗi thực thi sau có thể xảy .
đang nạp các trang xem trước