Proses Kavramı, Proses Durumları ve Prosesin Durum(Bağlam) Değiştirme Olayı

Yazar:



Proses kelimesi ingilizcedeki process kelimesinden gelmektedir. Süreç, işlem gibi anlamlara gelmektedir. Bilgisayarımızın da merkezi işlem biriminde (CPU) çalışan işlemler yani prosesler vardır. Bu proseslerin kimisi işletim sisteminizi çalıştırmaya yararlar, kimiler ise kullandığınız diğer masaüstü programları çalıştırmaya yararlar. Tarayıcı, Media Player, ofis programları vs. gibi tüm programlar aslında birer prosestir ve kendi altında birden çok proses de bulundurabilirler.

  • Özet Bilgi : Karıştıranlar için şimdiden belirteyim. CPU, MiB ve İşlemci kelimeleri aynı şeylerdir. Bilgisayarın beynine verilen isimlerdir bunlar. Tüm veriler, programlar ve işlemler burada gerçekleşir. CPU, Central Unit Process anlamına gelir. MİB de bunun Türkçesi olan Merkezi İşlem Birimi anlamına gelir. Yazıyı okurken bu ifadeleri sık sık kullnacağım.

Bilgisayarda kullandığınız her program, bilgisayarın işlemcisindeki prosesler aracılığıyla çalışırlar. Örneğin siz müzik dinlemek için Windows Media Player'a tıklayıp açmak istediniz. Tıkladığınız sırada Windows Media Player'ın çalışmasına yarayan prosesler hemen devreye girerler ve bilgisayarın işlemcisine gelip işlem görürerler. Bilgisayar'da Media Player'ı açar. Bilgisayarlar o kadar hızlı çalışırlar ki bu işlemler milisaniyeler içinde meydana gelir.

Şimdide proseslere biraz daha somut olarak bakalım. Ctrl+Alt+Delete yapın ve görev yöneticisini açın. Üstteki sekmelerden "İşlemler" yazan kısma gelin. Bu kısımda gördükleriniz proseslerdir.


 
Alt kısımdaki "işlemler" yazan kısma dikkat edin. Benim bilgisayarımda şuanda aktif olarak çalışan 74 proses varmış.

Proses listesi açık iken masaüstünüzden herhangi bir program açıp kapatın. Açtığınız zaman o programa ait proses yada prosesler orada gözükeceketir. Kapattığınız zaman kaybolacaklardır. Bazı programlar için tek bir proses görülebilirken bazı programlar birden çok proses tarafından çalıştırılırlar. Örneğin yukarıdaki ekran görüntüsünde Google Chrome'un 4 farklı proses tarafından çalıştığını görebilirsiniz. Biraz daha alt kısımda yer alan Firefox'un tek bir proses tarafındna çalıştığını görebiliriz. Fakat sadece buna bakarak hangi programın daha iyi olduğuna karar vermeyiniz. Belkide içlerinde bulunan iplik sayıları farklıdır. İplik konusuna daha sonraki yazılarımda değineceğim.

Bir programı birden çok prosesin çalıştırmasının avantajları ve dezavantajları vardır. Avantajı; bir programın çalışması için birden çok proses çalıştığı için o program kısa sürede işleme girebilir. Yani bir binayı birden çok işçinin inşa etmesi gibi fakat; bunun şöyle bir dezavantajı var. Ne kadar çok proses olursa, bilgisayarın RAM'inde o kadar yer işgal edilecektir ve CPU bir program için birden fazla proses işleyeceği için bu bilgisayarı daha çok yoracaktır.

Şimdi proses durumlarını anlatayım. Neden işlemciyi daha çok yorduğunu ve ne demek Proseslerin Durum (Bağlam) Değiştirmesi kısmında daha iyi anlayacaksınız.

Proses Durumları

Prosesler hazır, bekleme ve çalışma durumlarında bulunabilirler.


Çalışma Durumu : Prosesin CPU'da işlem gördüğü durumdur.
Hazır Durumu     : Prosesin hazır olduğu ve çalışmak için (CPU'dan işlem görmek için) sırasının gelmesini beklediği durumdur.
Askıda Durumu   : Prosesin hazır duruma geçmek için bir olayın gerçekleşmesini beklediği durumdur.

Örneğin; hesap makinası programını açtınız. Açtığınız anda onu çalıştıran proses önce hazır kuyruğuna geçer, sonra işlemcide işlem görerek çalışma durumuna geçer ve program açılır. Tabi bunlar çok hızlı bir biçimde, milisaliseler içerisinde gerçekleşirler.  Daha sonrasında ise hesap makinesi programını çalıştıran proses, "Askıda Durumu"na geçer. Sizden rakam bekler. Siz rakam girip bir işlem yapmadığınız sürece o hep askıda kalır. Daha doğrusu askıda kuyruğuna geçer. Çünkü birden fazla proses askıda bekliyor olabilir. Bu sırada işlemcide başka bir program işlem görüyordur. Siz rakam girdiniz diyelim veya direkt olarak 3 + 2 yazdınız diyelim. (Tek tek uzun uzun anlatmamak için direkt olarak 3+2 dedim. Normalde 3 ve + ve 2 ayrı ayrı işlemlerdir.)
Program bu süre içerisinde yukarıda yazdığım işlemleri tekrar eder. Askıdan çıkar --> Hazır Kuyruğuna geçer --> Çalışır durumuna geçer. Çalışır durumunda size bir şey yansımaz ama o girdiğiniz ifadeleri bilgisayar kendi beyni olan CPU'da işler ve tekrar askıya geçer. Sizden tekrar bir işlem bekler. Askıda olduğu sürece işlem yapmaz. Siz eşittir yaptığınız sırada işlemler tekrar eder. Askıdan Kuyruğundan çıkar  --> Hazır Kuyruğuna geçer --> Hazır Kuyruğundan çıkıp --> Çalışır duruma geçer ve ekrana 5 sonucunu yazar.

Neden Hazır Kuyruğu veya Askıda Kuyruğu diyorum? Çünkü bilgisayarda birden çok proses vardır ve herbir proses işlemcide tek tek işlem görür. Yani uzun bir bilet kuyruğu düşünün. 1 tane gişe olduğunu düşünün. Gişe, işlemcidir. Kuyrukta hazır bekleyen insanlar ise birer proses olarak düşünülebilir. Tabi bu proseslerin kimisi askıda kuyruğundadır kimisi ise hazır kuyruğunda bekliyor olabilir. Kimisi ise işlem görüyordur.

Her Proses Kendi İle İlgili Olan Kuyruğa Girer!

Bu kısım önemli. Tüm programlar Merkezi İşlem Birimi'nde (MiB)'de yani CPU'da işlem görmeden önce, henüz askıda durumundayken, herhangi bir kuyruğa girmez. Kendi ile ilgili olan kuyruğa girer. Çünkü bazı programların çalışması daha uzun sürebilir bazı programların çalışması daha kısa sürebilir. Tüm prosesler aynı kuyruğa girerse, açılması daha kısa süren program, açılması daha geç olan programında arkasında sıraya girer ise, 1 saniyede açılacak olan program 10 saniyede açılabilir. İşletim sitemi geliştiriciler de bunun önüne geçebilmek için, benzer işlemleri yapan programları bilgisayar RAM'inde farklı farklı yerlerde kuyruğa girmesini sağlamışlardır.

Bakınız :



Bir Proses Neden Sürekli Çalışmayıp Askıda ve Bekleme Konumlarına Geçiyor?

Bilgisayarda hesap makinesi dışında onlarca çalışan program olduğunu Ctrl+Alt+Delelete yaparak  görmüştük. Her proses merkezi işlemci birimi olan CPU'yu yani bilgisayarın beynini işgal ederse ise sürekli, bilgisayar kitlenir. Bu sebeple işi biten proses işlemcide işlem gördükten sonra çıkmak zorundadır. Eğer proses tekrardan işlem görmek istiyorsan tekrardan hazır kuyruğuna geçer.


Prosesin Durum (Bağlam) Değiştirme Olayı

Proses Durum Değiştirirken Hangi İşlemler Gerçekleşir? Şimdi buna değinelim

Prosesler, içlerinde bir takım bilgiler barındırırlar.  Bu bilgiler Proses Kontrol Bloğu denen yerde tutulur. Bu proses kontrol bloğunda ise, şu bilgiler bulunur :



Proeses durum değiştirir iken... Yani; Hazır - Beklemede - Askıda durumları arası geçiş yaparken yukarıda sayılan PCB (proses kontrol bloğu) güncellenir. Tüm bu bilgilerin her durum değiştirme sırasında tekrardan güncellenmesi ise, işletim sistemi için zaman kaybıdır. PCB haricinde, durum değiştirme olayı sırasında proseslerde şu işlemler gerçekleşir :



Gördüğünüz gibi birden çok proses bir programı çalıştırırken o program için çalışma kolaylığı sağladığı gibi, dezavantaj olarak boş yere bilgisayar hafızasında yer kaplar ve işlemci daha çok işlem yapmak zorunda kalır. Bu da işlemcinin sırada bekleyen diğer işlemleri gerçekleştirmesi normalden daha uzun sürer.

FORK() Sistem Çağrısı

Bu çağrı yeni bir proses oluşturma çağrısıdır. Çalışan bir programa hizmet eden bir proses yerine birden çok prosesin hizmet etmesini sağlayabiliriz. Bu prosesler birnine paralel olarak çalışır. Örneğin çocuk proses başka bir prosesi çalıştırıp ona başka işlemler yaptırırken anne proses de kendi kendine başka işlemler yapabilir. Fork() olayı sayesinde oluşturacağımız proses ile aynı anda birbine paralel olarak çalışan birden çok işlem yapabiliyoruz. Fork sistem çağrısına bir sonaki yazımda ayrıntılı olarak değineceğim.

Konu ile ilgili aklınıza takılan tüm soruları aşağı kısma yorum olarak yazabilirsiniz. Size elimden geldiğince yardımcı olmaya çalışırım.

2 yorum:

  1. Fork işlemi sonrası paralel çalışma sağlanır demişsiniz. Paralele çalışmadan kastınız işi aynı anda yapmak mı?
    Single thread çalışan bir sistemde fork uyguladığımızda multithread çalışan bir sistem verimi alabilir miyiz?

    Teşekkür ederim.

    YanıtlaSil
    Yanıtlar
    1. Evet. Paralel çalışmadan kastım, işleri aynı anda yapmaktır.

      Evet. Yine işleri aynı anda yapabilirsiniz fakat; bu işletim sistemi için maliyetlidir. O yüzden çoklu proses çalıştırmak yerine multithread tercih edilir. Detaylı bilgi için şu linkteki yazımı okumanızı tavsiye ederim
      >> http://www.blogkafem.net/2014/08/proses-ile-thread-arasindaki-farklar-ve-ipliklerin-avantajlari.html

      Sil
Yorum Sayfası :


Yorum formuna konuyla ilgili görüş ve sorularınızı bırakabilirsiniz.

Yorumunuza mümkün olan en kısa sürede dönüş yapılacağından emin olabilirsiniz.


Eklenen yorumlar, moderatör onayından sonra yayınlanmaktadır.

BLOGKAFEM.NET © Copyright 2008-2023
Sitedeki yazıların her hakkı BLOGKAFEM.NET sitesine aittir.
Kopyalanması halinde lütfen kaynak gösteriniz.
DMCA.com Protection Status
Anasayfa | Hakkında | İletişim