Jump to content
  • entries
    16
  • comments
    0
  • views
    454

Round-Robin (RR) Planlayıcı Algoritması


Doğuhan ELMA

44 views

Round-Robin (RR) planlayıcısı, işletim sistemlerinde kullanılan bir zaman paylaşım algoritmasıdır. RR, işlerin veya iş parçacıklarının (threads) eşit ve adil bir şekilde zaman dilimlerine ayrılmasını sağlar. Her iş ya da iş parçacığı, sırayla belirli bir zaman dilimi (genellikle birkaç milisaniye kadar) boyunca CPU zamanına erişir.

Round-Robin algoritması aşağıdaki şekilde çalışır:

Zaman Dilimi Atama: Planlayıcı, her işe eşit bir zaman dilimi atar (örneğin, 10 milisaniye).

İşlerin Yürütülmesi: İlk iş, atanan zaman dilimi boyunca çalıştırılır. Eğer iş, zaman dilimi süresince tamamlanmazsa, sonraki işe geçilir.

Kuyruğa Ekleme: Yürütme sırası sona eren ancak tamamlanmamış işler, kuyruğun sonuna eklenir.

Sonraki İşi Seçme: Kuyruğun başındaki sonraki iş, yürütülmek üzere CPU'ya gönderilir.

Tamamlanmış İşlerin Kaldırılması: Bir iş tamamlandığında, kuyruktan çıkarılır.

Devam: Bu süreç, tüm işler tamamlanana kadar devam eder.

Avantajları ve Dezavantajları:

Avantajlar:

Adillik: Her iş eşit CPU zamanına sahip olduğundan, hiçbir iş diğerinden daha fazla zaman alamaz.

Öngörülebilirlik: İşler, varış sırasına göre yürütüldüğünden, kullanıcılar ne zaman işlerinin tamamlanacağını daha iyi tahmin edebilir.

Dezavantajlar:

İlgisiz Yükseklik: RR, işlerin önceliklerini veya iş yükünü dikkate almaz. Bu, önemli veya acil işlerin daha az önemli işlerle aynı tedaviyi görmesine neden olabilir.

Düşük Verimlilik: Küçük işler büyük işlerle aynı zaman dilimine sahip olduğundan, küçük işlerin hızla tamamlanmasını beklemek yerine, büyük işlerle aynı süreyi beklemek gerekebilir.

Round-Robin, dairesel bir kuyruk kullanarak uygulanabilir, bu da işlerin kuyruğun sonuna döndüğü anlamına gelir. Dairesel kuyruk yapısı, işlerin yürütülme sırasının sürekli bir döngü içinde devam etmesine yardımcı olur.

Bu basit ve adil planlama stratejisi, gerçek zamanlı sistemlerde, sunucu yük dengelemesinde ve diğer zaman hassas uygulamalarda yaygın olarak kullanılmaktadır.

İşte basit bir Round-Robin planlayıcısının bir örneği. Burada, her işin yürütülme süresini temsil eden bir liste kullanacağız. Zaman dilimi belirlenmiş, ve her iş yürütüldükçe zaman dilimi miktarı kadar işin yürütülme süresinden düşülecek.

from collections import deque

def round_robin(jobs, time_quantum):
    # İşlerin kuyruğu
    queue = deque(jobs)

    # Toplam bekleme süresini sıfırla
    total_waiting_time = 0

    # Kuyrukta iş olduğu sürece
    while queue:
        # İlk işi kuyruktan al
        job = queue.popleft()

        # İşin yürütülme süresi zaman diliminden daha uzunsa
        if job > time_quantum:
            # İşin yürütülme süresinden zaman dilimini çıkar
            remaining_time = job - time_quantum

            # Kalan süreyi kuyruğun sonuna ekle
            queue.append(remaining_time)

            # Toplam bekleme süresine zaman dilimini ekle
            total_waiting_time += time_quantum
        else:
            # İş tamamlandı, bekleme süresine işin yürütülme süresini ekle
            total_waiting_time += job

    print("Toplam Bekleme Süresi:", total_waiting_time)

# Örnek işler listesi ve zaman dilimi
jobs = [10, 20, 30, 40]
time_quantum = 10

# Round-Robin planlayıcısını çağır
round_robin(jobs, time_quantum)

Bu kod, belirtilen işler üzerinde bir Round-Robin planlayıcısı uygular. Her iş, belirlenen zaman dilimi (bu durumda 10) boyunca yürütülür. Eğer işin yürütülme süresi zaman diliminden daha uzunsa, kalan süre kuyruğun sonuna eklenir.

Bu örnek, işlerin yürütülme sürelerinin nasıl azaldığını ve her iş için toplam bekleme süresinin nasıl hesaplandığını gösterir.

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...