• otel örneğiyle açıklanması yerindedir bence. otelin resepsiyoncusu semaphore'u odaları müşterilere vermek için kullanır. aklında otel tamamen boşken otelde kaç odanın müsait olduğunu tutar, ki bu otelin oda sayısıdır. müşteri geldikçe aklındaki bu oda sayısını düşürür, insanlar çıkış yaptığında bu sayıyı arttırır. bu rakam sıfıra ulaştığında boşta odasının olmadığnı ve isterlerse lobide beklemelerini söyler. bu bekleyenler sırayla alınırlar, tabi resepsiyoncu bu insanlara statü veya para gibi etkenlere bağlı öncelikler vermediyse.

    tabi bir de iki durumlu semaphore vardır. bunu da anlatmak için tek odalı teorik bir otel yaratmak istedim çünkü bu tip semaphore'u unutmuştum ben bu örneği uydururken. burada resepsiyoncunun işi daha kolaydır çünkü oda ya tutulmuştur ya da tutulmamıştır. yine aynı sistemle resepsiyoncu odayı tutmak isteyen müşterileri bu anlamsız tek odalı otelin lobisinde bekletir.
  • deadlock'a yol açma riski olduğundan dikkatli kullanılması gereken senkronizasyon edevatı.
    (bkz: dining philosophers problem)
    teorik olarak anlatılırken wait() yerine p(), signal() yerine v() kullanılır zira dijkstra babamız da böyle kullanmıştır.
    v , hollandaca'da "arttırmak" anlamına gelen "verhoog"dan, p ise "azaltmaya çalışmak" manasına gelen "probeer te verlagen"ın hibriti "prolaag"tan gelmekte imiş. bu da işin geyik kısmı.
  • lock ve mutex'in aksine senkronize erişimi tamamen bekletmek için değil sınırlandırmak için kullanılabilir denilebilir...sınırlı bir resource a sahipsiniz,aynı anda 3 thread'in bu kaynağa erişmesini istiyorsunuz daha fazlası sizin için bir sorun oluşturuyor..kodun o kısmını bütün thread'lerin kullanımına açmıyorsunuz,orada sayaca sahip bir lock kullanıyorsunuz..işte semaphore bu..
  • thread management'ta da shared memory space'inin kullanimina izin vermek icin kullanilan bir yontemdir. shared space'i maximum n adet thread'e limitlemek gerektigi zaman kullanilir. (bkz: mutex)
  • ispanyolca varyantı semáforo'dur ve trafik ışığı anlamına gelir. etimolojik olarak bakarsak,
    sema + phoro = işaret + tutan
    ingilizce'de el ve bayraklar kullanarak iletişim kurma yöntemi anlamına gelir.
  • aynı zamanda bir android kernelidir.
  • semaforun anlık değeri processin çalışma sırasını belirler.iki temel fonksiyonu vardır. signal() semaforu arttırır , wait() azaltır. multiprocessor sistemlerde semaforlar 0'dan düşük değerler alabilir.
  • integer ve özel bir değişkendir. critical sectiona girmek ne zaman uygundur, ne zaman uygun değildir buna karar verir. hiçbir zaman negatif değerle ilklendirilemez. wait ve signal işlemleri yapar.
  • en kafa karistirici yani fonksiyonlari icin kullanilan kisaltmalar v ve p'dir. dijkstra abimiz kendi dilinde anlattigi icin ingilizce karsilik vermemis terimlere. signal icin v, wait icin p kullanilir. benim gibi bir adamsaniz o v, p surekli kafanizi karistirir. onun icin en iyisi tanenbaum'un yaptigi gibi down ve up kullanmaktir. signal, wait, v, p hepsi yalan. down ve up diyince cokzel oturuyor kafaya.
  • (bkz: test-and-set)
hesabın var mı? giriş yap