1 Haziran 2013 Cumartesi

Windows Process Scheduling ?

          Merhaba arkadaşlar, sizlere Windows Process Scheluding hakkında bilgi vermeden önce bazı kavramlar neymiş kendi çapımda açıklamak istiyorum.
Scheluding nedir ? Tam anlamıyla zamanlama demektir. Ama bilgisayar bilimleri dilinde ise en basit anlatımda, bekleyen process (işlem)lerden hangisinin çalışacağına karar veren mekanizmadır. Tabi bu mekanizmanın işlemesini belirlemek için çeşitli algoritmalar mevcuttur. Bu kavramlara ek olarak preemptive ve non-preemptive kavramlarına bir açıklık getirmem gerekiyor. Preemptive algoritmalara kesintili algoritmalar, non-preemptive algoritmalara ise kesintisiz algoritmalar denir. Bu algoritmalar, saat kesmelerini nasıl kullandıklarına göre belirlenir. Preemptive algoritmada; bir süreç çalışması için seçilir. Kendi kodunda bulunan bir I/O isteği ile bloklanıncaya kadar ya da kendi isteği ile işlemciden çıkıncaya kadar çalışır.
Non-preemptive algoritmada ise; bir  süreç seçilir ve sabit, belirli bir maksimum süreye kadar çalıştırılır. Bu süre bittiğinde, süreç hala işlemcide çalışıyorsa askıya alınır ve zamanlayıcı (scheduler) başka bir süreci çalışması için seçer.
          Bu algoritmaların ise belirli amaçları vardır. Mesela algoritmalar tüm sistemlerde adil olmalı, belirlenen politikaya uymalı ve sistemi dengede tutmalıdır. Üretilen iş maksimum, dönüş süresi minimum ve işlemci kullanımı eşit ve yüksek olmalıdır. İsteklere hızlı cevap vermeli ve orantılı olmalıdır. Yani, kullanıcının beklediği cevabı vermelidir. Veri kaybından kaçınmalı ve nitelik bozulmamalıdır. Bu yüzden sistemlerde scheluding algoritmaları önemli yer almaktadır. Bu algoritmalar şöyle sıralanabilir :
1)First come first served: (İlk gelene ilk servis) Günlük hayatımızda herhangi bir mekana gittiğimizde yapılan müşteri sıralamasına benzer. Her gelen müşteri sipariş önceliğinde sonrakinden önce hakka sahip olur. Bu sistem kesintisiz ve en kolay zamanlama algoritmasıdır. İlk gelen süreç ilk hizmeti alır. Bu algoritmada süreçler istek sıralarına göre işlemcide çalışırlar. Basitçe hazır durumdaki süreçleri tutan bir kuyruk(queue) vardır. Kuyruktaki süreçler sırayla çalıştırılırlar. Çalışan süreç bloklanınca bekler. Bloklanmış süreç tekrar hazır durumuna geçtiğinde yeni bir süreç gibi davranılarak kuyruğun sonuna  eklenir. Mesela işlemci tasarımında papatya zinciri örnek olabilir.
2)Shortest Job First (En Kısa Süreli İş İlk): Kesintisiz (non-preemptive) çalışan algoritmadır. Süreçlerin toplam çalışma sürelerinin belirli olduğu düşünülür. Zamanlayıcı, kuyrukta bulunan süreçlerden en kısa sürede tamamlanacak olan süreci seçer.
3)Shortest Remaining Time Next(Çalışma süresi en az kalanı çalıştırma): En kısa süreli iş algoritmasının, bir kesintili uyarlamasıdır. Kalan çalışma süresi en az olan seçilir. Yeni bir iş geldiğinde, mevcut işin kalan süresi ile yeni sürecin kalan süresi karşılaştırılır; küçük olan tercih edilir.
4)Round-Robin Scheduling (Dönüşümlü Zamanlama): 
Her sürece, çalışabileceği maksimum süre atanır. Sürece verilen bu zaman aralığına quantum denilir. Eğer süreç, quantumunun sonunda hala çalışıyorsa askıya
alınır ve başka bir sürece geçilir. Sürecin quantumu bitmeden süreç bloklanırsa ya da çalışması sonlanırsa başka bir sürece geçilir. Bir listede çalışabilir süreçler tutulur. Süreç quantumunu
tükettiğinde listenin sonuna eklenir.
5)Priority Scheduling (Öncelik Zamanlama): Dönüşümlü zamanlama algoritması dolaylı olarak tüm süreçlerin eşit öncelikli olduğunu farzeder. Süreçler üzerindeki dış etkilerle süreçlerin farklı önceliklerde olması gerekir. Bu durumda öncelik zamanlama algoritması kullanılır. Her sürece bir öncelik(priority) değeri atanır ve çalışabilir süreçlerden yüksek öncelikli olanların çalışmasına izin verilir.

Şimdilik sizlerle paylaşacağım bilgiler bu kadardır. Herkese okuduğu için teşekkür ederim.

Hiç yorum yok:

Yorum Gönder