Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

C# İle Multi Thread Programlama Temelleri

Merhaba,

Uzun zamandır farklı türevlerde asenkron mimari üzerine çalışmalar gerçekleştirmekteyim. Siz değerli okuyucularımızdan gelen bir çok istek üzerine bu konulara detaylı bir girizgah yapmak istedim. Öncelikle Multi Thread Programlamanın temellerini bu içeriğimizde oluşturacak, zamanla diğer makalelerimizde Multi Thread Programlama üzerine derinleşeceğiz.

Konuya başlamadan önce bilmenizi istiyorum ki, Multi Thread Programlamada temel kavramlarla birlikte teorik boyut, konunun hakimiyeti ve anlaşılabilmesi için oldukça önemlidir. O yüzden usanmadan bu tarz konuyla alakalı içeriklerimizi hatmetmenizi ve makalelerdeki kronolojiyi kararlı bir şekilde takip etmenizi öneriyorum. Hem Multi Thread ile ilgili gelen tüm içerikleri bu makale içerisinde refere edeceğimden dolayı rahat bir şekilde kronolojik yazıları takip edebileceksiniz.

Evet artık konuya giriş yapabiliriz.

Bir uygulama düşünün(siz yahut başkası yazmış olabilir), bu uygulamanın sabit diskte çalışmadan, yavan bir şekilde duran haline bizler “Program” diyoruz. Biliyorsunuz ki, bilgisayarda yapılan tüm işlemler geçici bellek dediğimiz RAM’de ceyran ettiğinden, o programı çalıştırıp RAM’e yüklendiği andan itibaren ki haline de “Proses(İşlem)” demekteyiz.

Bilgisayarın bir prosesi çalıştırmasını yarayan birimine CPU(Mikro İşlemci) diyoruz. Bir CPU, herhangi bir T anında sade ve sadece bir adet prosesi çalıştırabilir. İşte CPU’ların bu çalışma biçimine Single Processing(Tek İşlemli Çalışma) denmektedir. (Ek bilgi olarak; CPU’yu bu şekilde kullanarak çalışan işletim sistemlerine ise Single Processing(Tek İşlemli) İşletim Sistemi denmektedir.)

Günümüzde tek işlemli CPU’lar yerlerini Multi Processing(Çok İşlemli Çalışma) yahut Multi Tasking(Çok Görevli Çalışma) CPU’lara bırakmıştır.

C# İle Multi Thread Programlama Temelleri

Yukarıdaki ekran görüntüsüne bakarsanız eğer aynı anda(T anında) birden fazla process çalışmaktadır. İşte bunu yapabilen Multi Processing yahut Multi Tasking özelliklerdir.

Birden fazla processin aynı anda çalışıyormuş gibi gözükmesinin nedeni işletim sistemine ait özel bir mekanizmanın özelliğidir. Bu mekanizma, processleri belirli aralıklarla(milisaniye) periyodik olarak çalıştırmaktadır ve bu yönteme Zaman Paylaşımlı Çalışma denmektedir.

Bu mekanizma sayesinde birden fazla process CPU tarafından belirli bir süre ile sıralı olarak çalıştırılmaktadır. Çalışma süresi her sistem için farklılık gösteren bu süreye Quanta Süresi denmektedir.(Örn; Win32 sistemleri için quanta süresi 20 milisaniyedir.)

Yukarıdaki paragrafta birden fazla process CPU tarafından belirli bir süre ile sıralı olarak çalıştırılmaktadır dedik. İşte sırası gelen processin çalışmasınada “Prosessin Çizelgeye Girmesi” denmektedir.

İşletim sistemleri processleri sıralı olarka çalıştırabilmek adına Döngüsel Çizelgeleme isimli bir algoritma kullanır. Döngüsel Çizelgeleme ile bir processin durdurulup sıradaki processin çalıştırılması ise “Görevler Arası Geçiş(Task Switch)” olarak adlandırılır.

Sıralı bir şekilde çalıştırılacak processlerin önceliği bu mekanizmada önemlidir. Örneğin, Wind32 sistemleri processleri 0 – 31 aralığında farklı öncelik düzeyine göre sınıflandırmaktadır. Eğer ki farklı öncelik düzeylerine sahip prosesler bir arada çalışmak zorunda kalırlarsa, çalışma şekli ve algoritması farklı olacak, döngüsel çizelgeleme değil Öncelikli Döngüsel Çizelgeleme algoritması kullanılacaktır.

Evet, Multi Thread Programlamaya bu içeriğimiz ile bir temel atmış olduk. Sonraki yazılarımızda Thread Kavramı, Multi Thread Çalışma ve Multi Thread Çalışmanın Avantaj ve Dezavantajları ve bunların ardından da programatik kısmı ilgilendiren yapıları ele alacağız.

Şimdilik hoşçakalın…

İyi çalışmalar…

Multi Thread Programlama Yazı Dizisi

  1. C# İle Multi Thread Programlama Temelleri
  2. C# İle Multi Thread Programlamada “Thread” Kavramı
  3. Multi Thread Çalışmanın Avantaj ve Dezavantajları
  4. C# İle Multi Thread Programlamada System.Threading.Thread Sınıfı

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. hayati dedi ki:

    Quanta suresi icin
    threadler arasi gecis zamanini göz ardi edersek, thread ler sonsuz döngü icerdigini varsayarsak isletim sisteminin bir thread uzerinde kesintisiz 20ms durduğu anlamina gelir mi.

  1. 09 Temmuz 2016

    […] Önceki C# İle Multi Thread Programlama Temelleri başlıklı yazımda Multi Thread Programlamaya giriş yapmıştık. Şimdi ise Thread kavramını ele alacağız. […]

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir