Mutex ile semaphore arasındaki fark nedir?

Cevap

Her ikisi de paylaşılan kaynaklara eşzamanlı erişimi kontrol eden senkronizasyon araçlarıdır.

Mutex (mutual exclusion)

  • Kritik bölgeye aynı anda yalnızca bir thread girer.
  • Sahipliği vardır: kilidi alan thread bırakmalıdır.
  • Bazı implementasyonlar priority inheritance ve recursive kilitleme destekler.

Semaphore

  • Bir sayaç tutar. wait() (P, acquire) sayacı azaltır, sıfırsa bekletir; signal() (V, release) artırır.
  • Counting semaphore: N adet kaynağa aynı anda N erişim (ör. 10 bağlantılık havuz).
  • Binary semaphore: 0/1, mutex'e benzer ama sahiplik yoktur; başka bir thread signal verebilir. Bu yüzden olay bildirimi için de kullanılır.
MutexSemaphore
Eşzamanlı erişim1N
SahiplikVarYok
Tipik amaçKritik bölgeyi korumakSınırlı kaynak sayısını yönetmek, thread'ler arası sinyal
import threading

lock = threading.Lock()
counter = 0
def increment():
    global counter
    with lock:                 # mutex: tek thread
        counter += 1

db_slots = threading.Semaphore(5)
def query():
    with db_slots:             # aynı anda en fazla 5 thread
        run_query()

Benzer araçlar: read-write lock (çok okuyucu veya tek yazar), condition variable (bir koşul gerçekleşene kadar bekleme), spinlock (kısa bekleme için uyumadan döngüde bekleme).

  1. Concurrency ile parallelism arasındaki fark nedir?Kolayİşletim SistemleriYazılım Müh.
  2. Race condition nedir? Bir örnekle nasıl önleneceğini gösterin.Ortaİşletim SistemleriYazılım Müh.
  3. Context switch nedir? Neden maliyetlidir?Ortaİşletim SistemleriYazılım Müh.
  4. Virtual memory ve paging nasıl çalışır? Page fault nedir?Zorİşletim SistemleriYazılım Müh.
  5. Deadlock nedir? Oluşması için gereken dört koşul nelerdir ve nasıl önlenir?Zorİşletim SistemleriYazılım Müh.
  6. Process ile thread arasındaki fark nedir?Kolayİşletim SistemleriYazılım Müh.

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle