Bilmek istediğin her şeye ulaş

Ali Emre Çakmakoğlu,

Yazılım Mühendisi

If you are good at something, do not teach it free..

Nisan 2011

Ali Emre Çakmakoğlu

C++ veya diğer programlama dillerindeki Thread, Mutex ve Semaphore kavramları için kısa bir tanım yapabilir misiniz?

Semaphore, Thread ve Process kavramları sadece programlama dillerinin değil işletim sistemlerinin kavramlarıdır.

Semaphore kavramını tanımlamadan önce Process ve Thread kavramlarını bilmeliyiz:


Process

Process, bir bilgisayar programının çalıştırıldığındaki, yani RAM bellekte tutulup komutlarının (instruction) işlendiği halidir. Programın çalışan vaziyetine process diyebiliriz. Kendisine ait kod segmenti, yığın segmenti ve veri segmenti bulunur. Bir process en az bir threade sahiptir.

Thread

Thread'ler bir processe bağımlı halde çalışan kod parçalarıdır. Bir processin içinde birden fazla thread var olabilir. Kullanıcıya daha iyi yanıt süresi temin etmek için kullanılabilir. Okulda en çok duyduğum örneklerden biri olarak MS Word kullanırken bir yandan yazım denetleme yaparken bir yandan menülerle oynayabiliyoruz. Bunu sağlamak için menüleri yöneten farklı bir thread, yazım denetleme işini yapan farklı bir thread vardır. Processin kendisi de bir thread'dir.

Semaphore
Semaphore aynı kaynağa birden fazla process'in veya thread'in erişmesi gerektiği durumlarda mutual exclusion (mutex) sağlamak için kullanılır. En rahatından mutex tanımını burada gördüm: eksisozluk.com/show.asp?id=1522491

Semaphore şuna benzer. Bir toplulukta gece vakti ancak ve ancak bir kişi nöbet tutacaktır. Nöbet tutmak isteyen bir kişi nöbet süresince ayakta kalacak ve uyuyamayacaktır. Ortama gelen başka bir kişi ise uyumak zorundadır. Nöbetçi nöbet tutmak için sembolik bir obje olarak örneğin bir ışın kılıcına sahip olmalıdır. Gelen kişi öncelikle ışın kılıcının boşta olup olmadığına bakar. Eğer boşta ise nöbet tutan kimse yoktur ve nöbete başlar, değilse yatar uyur. Nöbeti biten nöbetçi ışın kılıcını aldığı yere koyar ve evdeki herkesi ( ya da sıradaki kişiyi ) uyandırır ve kendisi uyur.
Bu örnekteki nöbet, kaynağı, ışın kılıcı sayısı semaphore'ın başlatılma sayısını( yani kaç kişinin nöbet tutacağı veya kaynağa kaç processin erişebileceği ) tek kişinin nöbet tutması ise mutex'i temsil ediyor.

Benzer Kişiler