Logo vi.removalsclassifieds.com

Sự khác biệt giữa Mutex và Semaphore (Với Bảng)

Mục lục:

Anonim

Quản lý tính toàn vẹn của thông tin được chia sẻ chủ yếu dựa vào đồng bộ hóa quy trình. Để xử lý các sự cố phần quan trọng, cả giải pháp phần mềm và phần cứng đều có sẵn. Mặt khác, các giải pháp phần cứng cho vấn đề phần quan trọng là cực kỳ khó thực hiện. Chúng ta hãy kiểm tra và đối chiếu Mutex và Semaphore, hai giải pháp ứng dụng để xử lý các vấn đề nghiêm trọng của phần.

Mutex vs Semaphore

Sự khác biệt giữa mutex và Semaphore là semaphore là một quá trình báo hiệu, có nghĩa là các quá trình sử dụng wait () và signal () để biểu thị liệu chúng đang lấy hoặc sắp giải phóng tài nguyên, trong khi mutex là một phương thức có thể khóa, có nghĩa là nếu một hoạt động muốn lấy được tài nguyên, thì trước tiên nó phải có được khóa trên đối tượng mutex.

Mutex là viết tắt của Mutual Exclusive Object. Đó là một loại semaphore nhị phân được sử dụng để hạn chế quyền truy cập vào tài nguyên được chia sẻ. Để ngăn chặn những lo ngại về đảo ngược ưu tiên kéo dài, nó có cơ chế kế thừa ưu tiên. Nó cho phép các công việc hiện có mức độ ưu tiên cao hơn bị chặn trong khoảng thời gian ít nhất có thể. Mặt khác, kế thừa ưu tiên không cố định sự đảo ngược ưu tiên; thay vào đó, nó làm giảm tác động của nó.

Semaphore là một biến không âm được duy trì giữa các luồng. Semaphore là một cơ chế báo hiệu, và một luồng khác có thể báo hiệu một luồng đang đợi semaphore. Để đồng bộ hóa quá trình, nó sử dụng hai thủ tục nguyên tử: () chờ và () tín hiệu. Tùy thuộc vào cách nó được thiết lập, một semaphore có thể cho phép hoặc ngăn chặn quyền truy cập vào tài nguyên.

Bảng so sánh giữa Mutex và Semaphore

Các thông số so sánh

Mutex

Semaphore

Cơ chế

Đó là một hệ thống khóa. Đó là một hệ thống tín hiệu của một số loại.
Mục đích

Chủ đề được đại diện bởi mutex. Các quy trình được đại diện bởi semaphore.
Thiên nhiên

Mutex thường là nguyên tử và số ít. Semaphore về bản chất là nguyên tử, nhưng không phải là số ít.
Loại dữ liệu

Mutex không hơn gì một phần mềm. Semaphore là một biến có giá trị nguyên.
Các loại

Mutex không có bất kỳ kiểu phụ nào. Semaphores đếm và nhị phân là hai loại semaphores.
Sửa đổi

Chỉ quy trình có thể yêu cầu hoặc giải phóng tài nguyên mới có thể sửa đổi nó. Một semaphore có thể được sửa đổi bằng cách sử dụng các hàm chờ và báo hiệu.

Mutex là gì?

Loại trừ lẫn nhau là một thuật ngữ được sử dụng để mô tả một tình huống Mutex là tên viết tắt của đối tượng. Chúng ta có thể suy ra từ loại trừ lẫn nhau rằng chỉ một chương trình tại một thời điểm có quyền truy cập vào một tài nguyên cụ thể. Đối tượng mutex cho phép nhiều luồng ứng dụng truy cập cùng một tài nguyên tại cùng một thời điểm, chỉ một luồng tại một thời điểm.

Bất cứ khi nào một chương trình yêu cầu hệ thống cung cấp tài nguyên, hệ thống sẽ tạo ra một đối tượng mutex với một danh tính hoặc ID duy nhất. Do đó, bất cứ lúc nào chương trình muốn sử dụng tài nguyên đó, nó sẽ có một khóa đối tượng. Sau đó, chương trình sử dụng tài nguyên trước khi giải phóng đối tượng mutex. Đối tượng mutex sau đó có thể được tạo và sử dụng bởi các chương trình khác theo cách tương tự.

Bằng cách khóa đối tượng, tài nguyên cụ thể đó được gán cho quy trình cụ thể đó và không quy trình nào khác có thể sử dụng nó. Do đó, không có chương trình nào khác được phép sử dụng tài nguyên hệ thống trong khu vực quan trọng. Một đối tượng mutex có thể được sử dụng để thực hiện đồng bộ hóa quy trình theo cách này.

Một mutex cho phép loại trừ lẫn nhau; với tư cách là nhà sản xuất hoặc người tiêu dùng có thể có khóa (mutex) và tiếp tục làm việc. Người tiêu dùng phải đợi cho đến khi bộ đệm của nhà sản xuất được lấp đầy và ngược lại.

Semaphore là gì?

Semaphore là một biến số nguyên S được sử dụng để đồng bộ hóa quy trình và được khởi tạo với số lượng tài nguyên trong hệ thống. Để sửa đổi giá trị của S, nó sử dụng hai hàm chính: wait () và signal (). Cả hai hàm này đều được sử dụng để thay đổi giá trị của semaphore, nhưng chúng chỉ cho phép một chương trình thực hiện điều đó tại một thời điểm, do đó không có hai phương thức nào có thể thay đổi giá trị của semaphore cùng một lúc. Đếm semaphores và Binary semaphores là hai loại semaphores.

Biến semaphore được khởi tạo đầu tiên với số lượng tài nguyên có sẵn trong khi đếm semaphore. Phương thức wait () sau đó được thực thi bất cứ lúc nào một tiến trình yêu cầu tài nguyên và giá trị của biến semaphore bị giảm đi một. Sau đó, tiến trình sử dụng tài nguyên, sau đó nó gọi phương thức signal (), làm tăng giá trị của biến semaphore lên một. Bất cứ khi nào giá trị của biến semaphore bằng 0, tức là khi chương trình đã sử dụng hết tài nguyên và không còn tài nguyên nào để sử dụng, Sau đó, nếu một tiến trình khác cần sử dụng tài nguyên, nó sẽ phải đợi thời gian của nó. Chúng tôi thiết lập đồng bộ hóa quy trình theo cách này.

Trong Binary Semaphores, giá trị của biến semaphore là 0 hoặc 1. Khi một quá trình muốn sử dụng một tài nguyên, phương thức wait () được gọi và giá trị của semaphore được điều chỉnh thành 0 từ 1. Sau đó, quá trình sẽ thực hiện sử dụng tài nguyên và sau khi hoàn tất, phương thức signal () được gọi và giá trị của biến semaphore được đặt thành 1. Nếu giá trị của biến semaphore là 0 tại một thời điểm nhất định và chương trình khác muốn để truy cập cùng một tài nguyên, nó phải đợi chương trình trước giải phóng các tài nguyên. Quá trình đồng bộ hóa có thể được thực hiện theo cách này. Nó có thể so sánh với mutex, nhưng nó không khóa bất cứ thứ gì.

Sự khác biệt chính giữa Mutex và Semaphore

Sự kết luận

Nếu có một số trường hợp tài nguyên có sẵn, Semaphore là một lựa chọn thay thế tốt hơn. Mutex là một lựa chọn tốt hơn khi chỉ có một tài nguyên được chia sẻ. Semaphore cho phép nhiều luồng truy cập vào vùng quan trọng. Máy móc không ảnh hưởng đến semaphores. Semaphores được xử lý trong mã độc lập với máy của kênh vi mô. Không bao giờ lãng phí thời gian xử lý hoặc tài nguyên vì luôn có sự chờ đợi bận rộn trong semaphore. Chúng cũng cho phép quản lý tài nguyên linh hoạt trong khi Mutexes không hơn gì những ổ khóa đơn giản phải có trước khi đến một khu vực quan trọng và sau đó được giải phóng nhưng Trong Mutex, phương pháp tiêu chuẩn có thể dẫn đến trạng thái chờ đợi bận rộn, lãng phí thời gian của CPU. Ngoài ra, nó không thể bị khóa hoặc mở khóa từ một ngữ cảnh khác với bối cảnh mà nó đã được lấy.

Người giới thiệu

Sự khác biệt giữa Mutex và Semaphore (Với Bảng)