TAILIEUCHUNG - Các vấn đề cổ điển của đồng bộ hóa

Vấn đề: hai tiến trình cùng chia sẻ một bộ đệm có kích thước giới hạn. Một trong hai tiến trình đóng vai trò người sản xuất – tạo ra dữ liệu và đặt dữ liệu vào bộ đệm- và tiến trình kia đóng vai trò người tiêu thụ – lấy dữ liệu từ bộ đệm ra để xử lý. | III. CÁC VấN Đề Cổ ĐIểN CủA ĐồNG Bộ HOÁ Nguồn . Vấn đề Người sản xuất - Người tiêu thụ Producer-Consumer vấn đề hai tiến trình cùng chia sẻ một bộ đệm có kích thước giới hạn. Một trong hai tiến trình đóng vai trò người sản xuất - tạo ra dữ liệu và đặt dữ liệu vào bộ đệm- và tiến trình kia đóng vai trò người tiêu thụ - lấy dữ liệu từ bộ đệm ra để xử lý. Hình Producer và Consumer Để đồng bộ hóa hoạt động của hai tiến trình sản xuất tiêu thụ cần tuân thủ các quy định sau Tiến trình sản xuất producer không được ghi dữ liệu vào bộ đệm đã đầy. synchronisation Tiến trình tiêu thụ consumer không được đọc dữ liệu từ bộ đệm đang trống. synchronisation Hai tiến trình sản xuất và tiêu thụ không được thao tác trên bộ đệm cùng lúc . exclusion mutuelle Giải pháp . Semaphore Sử dụng ba semaphore full đếm số chỗ đã có dữ liệu trong bộ đệm empty đếm số chỗ còn trống trong bộ đệm và mutex kiểm tra việc Producer và Consumer không truy xuất đồng thời đến bộ đệm. Buffersize 3 số chỗ trong bộ đệm semaphore mutex 1 kiểm soát truy xuất độc quyền semaphore empty Buffersize số chỗ trống semaphore full 0 số chỗ đầy Producer int item while TRUE produce_item item down empty down mutex enter_item item up mutex up full tạo dữ liệu mới giảm số chỗ trống báo hiệu vào miền găng đặt dữ liệu vào bộ đệm ra khỏi miền găng tăng số chỗ đầy Consumer int item while TRUE down full giảm số chỗ đầy down mutex báo hiệu vào miền găng remove_item item lấy dữ liệu từ bộ đệm up mutex ra khỏi miền găng up empty consume_item item tăng số chỗ trống xử lý dữ liệu . Monitor Định nghĩa một monitor ProducerConsumer với hai thủ tục enter và remove thao tác trên bộ đệm. Xử lý của các thủ tục này phụ thuộc vào các biến điều kiện full và empty. monitor Producerconsumer condition full empty int count procedure enter if count N wait full nếu bộ đệm đầy phải chờ enter_item item đặt dữ liệu vào bộ đệm count tăng số chỗ đầy if count 1 nếu bộ đệm không trống signal empty procedure remove if count

TỪ KHÓA LIÊN QUAN
TÀI LIỆU HOT