Sự khác biệt giữa Semaphore và Monitor

Sự khác biệt giữa Semaphore và Monitor
Sự khác biệt giữa Semaphore và Monitor

Video: Sự khác biệt giữa Semaphore và Monitor

Video: Sự khác biệt giữa Semaphore và Monitor
Video: Phân biệt BAR, PUB, CLUB và LOUNGE | Thành Ỉn | KHOA HỌC 2024, Tháng bảy
Anonim

Semaphore vs Monitor

Semaphore là một cấu trúc dữ liệu được sử dụng để đảm bảo rằng nhiều tiến trình không truy cập vào một tài nguyên chung hoặc một phần quan trọng cùng một lúc, trong môi trường lập trình song song. Semaphores được sử dụng để tránh các khóa chết và các điều kiện đua. Màn hình là một cấu trúc ngôn ngữ lập trình cũng được sử dụng để tránh nhiều quá trình truy cập vào một tài nguyên chung cùng một lúc, do đó đảm bảo loại trừ lẫn nhau. Màn hình sử dụng các biến có điều kiện để đạt được nhiệm vụ này.

Semaphore là gì?

Semaphore là một cấu trúc dữ liệu được sử dụng để loại trừ lẫn nhau cho các phần quan trọng. Semaphores chủ yếu hỗ trợ hai hoạt động được gọi là chờ (lịch sử được gọi là P) và tín hiệu (trong lịch sử được gọi là V). Thao tác chờ sẽ chặn một tiến trình cho đến khi semaphore được mở và thao tác tín hiệu cho phép một tiến trình (luồng) khác đi vào. Mỗi semaphore được liên kết với một hàng đợi các tiến trình đang chờ. Khi hoạt động chờ được gọi bởi một luồng, nếu semaphore đang mở, luồng có thể tiếp tục. Nếu semaphore bị đóng khi thao tác chờ được gọi bởi một luồng, luồng đó sẽ bị chặn và nó phải đợi trong hàng đợi. Hoạt động tín hiệu sẽ mở ra một semaphore và nếu đã có một luồng đang đợi trong hàng đợi, quá trình đó được phép tiếp tục và nếu không có luồng nào đang chờ trong hàng đợi thì tín hiệu sẽ được ghi nhớ cho các luồng tiếp theo. Có hai loại semaphores được gọi là semaphores mutex và semaphores đếm. Các semaphores Mutex cho phép một quyền truy cập duy nhất vào một tài nguyên và đếm các semaphores cho phép nhiều luồng truy cập vào một tài nguyên (có sẵn một số đơn vị).

Màn hình là gì?

Màn hình là một cấu trúc ngôn ngữ lập trình được sử dụng để kiểm soát quyền truy cập vào dữ liệu được chia sẻ. Màn hình đóng gói các cấu trúc dữ liệu được chia sẻ, các thủ tục (hoạt động trên các cấu trúc dữ liệu được chia sẻ) và đồng bộ hóa giữa các lệnh gọi thủ tục đồng thời. Màn hình đảm bảo rằng dữ liệu của nó không phải đối mặt với các truy cập không có cấu trúc và đảm bảo rằng các bước (truy cập dữ liệu của màn hình thông qua các quy trình của nó) tương tác theo cách hợp pháp. Một màn hình đảm bảo loại trừ lẫn nhau bằng cách chỉ cho phép một luồng thực hiện bất kỳ quy trình giám sát nào tại một thời điểm nhất định. Nếu một luồng khác cố gắng gọi một phương thức trong màn hình, trong khi một luồng đã thực hiện một thủ tục trong màn hình, thì thủ tục thứ hai sẽ bị chặn và nó phải đợi trong hàng đợi. Có hai loại màn hình được đặt tên là màn hình Hoare và màn hình Mesa. Chúng chủ yếu khác nhau về ngữ nghĩa lập lịch trình.

Sự khác biệt giữa Semaphore và Monitor là gì?

Mặc dù cả Semaphores và màn hình đều được sử dụng để loại trừ lẫn nhau trong môi trường lập trình song song, chúng khác nhau về các kỹ thuật được sử dụng để đạt được nhiệm vụ này. Trong các màn hình, mã được sử dụng để loại trừ lẫn nhau nằm ở một nơi duy nhất và có cấu trúc hơn, trong khi mã cho các semaphores được phân phối dưới dạng các lệnh gọi hàm chờ và báo hiệu. Ngoài ra, rất dễ mắc lỗi khi thực hiện các semaphores, trong khi có rất ít khả năng mắc lỗi khi thực hiện các màn hình. Hơn nữa, các màn hình sử dụng các biến điều kiện, trong khi các semaphores thì không.

Đề xuất: