20 Temmuz 2014 Pazar

Multitasking ve Multithreading



Baktım da bu konu hakkında açıklayıcı ve anlaşılabilir yazı bulmak pek de kolay değil. Önceki bilgilerimi de katarak ufak bir araştırma yaptım ve bu yazıyı hazırladım.

Multitasking: Birden fazla işlemi(process) aynı anda yapabilmektir. Multitasking bir ihtiyaç olarak doğmuş. Çünkü bilgisayarda birden fazla programı çalıştıramamak kadar kötü ne olabilir? Yani webde gezinirken Visual Studio'yu açmak için illa internet tarayıcısını kapatmamız mı gerekir? Multitaskingden öncesinde evet kapatmamız şarttı ama multitaskinden sonra hayır. Programcılar bunu görüp işletim sistemlerini buna göre dizayn ettiler. Genel olarak birden fazla çekirdeğe sahip olan işlemciler veya birden fazla işlemciye sahip sistemlerde görülür. Peki tek çekirdekli işlemciler? Onlarda nasıl hem müzik dinleyip hem de webde gezinebiliyoruz? Bunu sağlayanda işletim sistemi. İşletim sistemi her bir işleme işlenmesi için bellir bir süre tanıyor sonra başka bir işleme süre tanıyor. Bu süre o kadar hızlıdır ki kullanıcı tarafından algılanamıyor, bir nevi sihirbazlık gibi. Kullanıcı aslında her şeyin aynı anda olduğunu zannediyor fakat aslında her zaman tek bir işlem çalışıyor. Yani aslında bilgisayar biraz müzik çalıp işlemi duraklatıyor sonra webde geziniyor sonra işlemi tekrar duraklatıp tekrar müzik çalıyor ve böylece sürüp gidiyor.  Mesela siz bu yazıyı okurken arkada Windows güncellemeleri kontrol ediyor, belki bir virüs sizin verilerinizi çalıyor.


Çok çekirdekli işlemcilerde ise gerçek anlamda multi tasking görülür. Herbir çekirdek birer mikro işlemci gibi davranır ve herbir işlem (çekirdek sayısı kadar) aynı zamanda işlenebilir. (Bir nevi çoklu işlemci gibi aslında ama çoklu işlemciye göre çekirdekler birbiriyle daha hızlı etkileşebilme avantajı var ama aynı veriyolunu kullanacağından performans düşüyor.)



Multithreading:  Thread; kelime anlamı olarak ipliktir, nasıl iplikleri birleştirince kıyafet oluşuyorsa threadleri birleştirince işlem(process) oluşur. Multithread da multitasking gibi ihtiyaçtan doğmuştur. İşletim sistemi işlemler arası geçiş yapabiliyor fakat ya bir işlem de farklı iki işi aynı anda yapmaya kalkarsa? İşte bu olunca programlarda hatalar oluşur. Bunun önüne geçmek için işlemler threadlere ayrılıyor. Örneğin oyun oynuyorsunuz ve oynamaya devam ederken oyun otomatik olarak sizin olduğunuz yeri kaydedecek. Bunun için oyun programlanırken kaydetme işi için ayrı bir thread oluşturulur böylece işlemler paralel olarak işletilebilir. 



Özetleyecek olursak multitasking birden fazla işlemin aynı anda işlenmesi, multithreading ise bir işlemdeki birden fazla iş parçacığının aynı anda işlenmesidir.


0 yorum:

Yorum Gönder