Tham khảo tài liệu 'giáo trình nguyên lý hệ điều hành_chương 5', công nghệ thông tin, hệ điều hành phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả | Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Hệ Điều Hành - ĐỒNG BỘ HOÁ QUÁ TRÌNH I Mục tiêu Sau khi học xong chương này người học nắm được những kiến thức sau Hiểu vấn đề vùng tương trục Hiểu cơ chế hoạt động hiệu báo Semaphores để đồng bộ hóa quá trình Hiểu cơ chế hoạt động của Monitors để đồng bộ hóa quá trình Vận dụng các giải pháp để giải quyết các bài toán đồng bộ hóa cơ bản II Giới thiệu Một quá trình hợp tác là một quá trình có thể gây ảnh hưởng hay bị ảnh hưởng tới quá trình khác đang thực thi trong hệ thống. Các quá trình hợp tác có thể chia sẻ trực tiếp không gian địa chỉ luận lý mã và dữ liệu hay được phép chia sẻ dữ liệu thông qua các tập tin. Trường hợp đầu đạt được thông qua việc sử dụng các quá trình có trọng lượng nhẹ hay luồng. Truy xuất đồng hành dữ liệu được chia sẻ có thể dẫn tới việc không đồng nhất dữ liệu. Trong chương này chúng ta sẽ thảo luận các cơ chế đảm bảo việc thực thi có thứ tự của các quá trình hợp tác chia sẻ không gian địa chỉ để tính đúng đắn của dữ liệu luôn được duy trì. III Tổng quan Trong chương trước chúng ta phát triển một mô hình hệ thống chứa số lượng quá trình hợp tác tuần tự tất cả chúng chạy bất đồng bộ và có thể chia sẻ dữ liệu. Chúng ta hiển thị mô hình này với cơ chế vùng đệm có kích thước giới hạn được đại diện cho hệ điều hành. Chúng ta xét giải pháp bộ nhớ được chia sẻ cho bài toán vùng đệm có kích thước giới hạn. Giải pháp này cho phép có nhiều nhất BUFFER_SIZE -1 sản phẩm trong vùng đệm tại cùng thời điểm. Giả sử rằng chúng ta muốn hiệu chỉnh giải thuật để giải quyết sự thiếu sót này. Một khả năng là thêm một biến đếm số nguyên counter được khởi tạo bằng 0. counter được tăng mỗi khi chúng ta thêm một sản phẩm tới vùng đệm và bị giảm mỗi khi chúng ta lấy một sản phẩm ra khỏi vùng đệm. Mã cho quá trình người sản xuất có thể được hiệu chỉnh như sau while 1 tạo sản phẩm trong nextProduced while counter BUFFER_SIZE không làm gì cả buffer in nextProduced in in 1 BUFFER_SIZE counter .