İşletim Sistemleri 01.2 – İşlemler ve Zamanlayıcı

Bu yazı [ İşletim Sistemleri ] kategorisi altında yazılmıştır

Tekrar merhaba, bu yazımızda sırasıyla:

  • Context Switching (İçerik Değiştirme)
  • Zamanlayıcı Çeşitleri
  • Zamanlama Algoritmaları

kavramlarına değineceğiz.

Context Switching (İçerik Değiştirme):

Preemption: Genel amaçlı modern işletim sistemlerinde bulunan bir yapı olan preemption mekanizması, bir işlemci üzerinde bir işleme t kadar bir zaman aralığı verilmesini sağlar. Eğer bir işlem t sürede tamamlanır ve “çalışıyor” durumundan “sonlandırıldı” durumuna geçerse, herhangi bir sorun olmaz, “hazır” kuyruğunda bekleyen sıradaki uygulama “çalışıyor” durumuna geçer. Fakat bir işlem t zaman aralığında sonlanmazsa “preemption” mekanizması devreye girer ve bu işlemi işlemciden (“çalışıyor” durumundan) alarak “hazır” kuyruğuna gönderir.

Context Swtichin (İçerik değiştirme) ise t zaman aralığında bitmemiş işlemin “hazır” kuyruğuna gönderilmesi sırasında gerçekleşen tüm olayları kapsar. Bu işlem sırasında gerçekleşen olaylar ise şu şekildedir.

  • Çalışan işleme ait PCB (Process Control Block, İşlem Kontrol Bloğu) veri yapısı belleğe yazılır.
  • Zamanlayıcının belirli algoritmalara dayanarak seçtiği yeni işleme ait PCB işlemciye gönderilir.
  • İşlemci PCB verilerine göre durumunu değiştirir. (Registerlar, program counter vs)
  • İşlemi çalıştırır.
  • t kadar süre geçtikten sonra durumunu belleğe gönderir, yeni işlemin gelmesini bekler.

Burada görüldüğü üzere bir işlem sonlanmadan, diğer bir işleme geçiş yapılmaktadır. Bu olaya Context Switching denir.

Context Switching’in yararları:

  • Çok işlemli işletim sistemlerinin tasarımını sağlar. Aynı anda birden fazla uygulama çalıştırılabilir.
  • Çok kullanıcılı işletim sistemlerinin tasarımını sağlar. Birden fazla kullanıcı sisteme bağlanabilir.
  • Bir işlem çalışırken, diğer işlemlerin de devam etmesini sağlar.
  • Herhangi bir uygulama çalışırken işletim sistemi de çalışmakta olduğundan işletim sistemi kontrolü sürekli elinde tutar.
  • Deadlock (daha sonra ayrıntılı olarak ele alınacaktır, bir uygulamanın kilitlenmesi olarak düşünebilirsiniz.) durumunda, sadece deadlock olmuş uygulamanın sonlandırılmasını sağlar.

Zamanlayıcı ve Çeşitleri:

Sıradaki işlemlerden hangisinin işlemcide çalıştırılacağını belirleyen mekanizmadır. Bu işlemi gerçekleştirmek için farklı algoritmalar kullanabilir.

Uzun Dönemli Zamanlayıcı (Long Term Scheduler):

  • İşlemleri iş kuyruğundan seçer.
  • Seçilen işlemleri çalıştırılmak üzere belleğe yükler.
  • Hazır kuyruğunu günceller.
  • Çokluprogramlamanın derecesini kontrol eder. (Ana bellekte kaç adet işlem olacağı)
  • Kısa dönemli zamanlayıcıdan daha seyrek çalışır.
  • Seçtiği işlemlerin işlemci kullanımı ve girdi/çıktı miktarı arasında bir oran oluşturmaya çalışır. Örnek olarak sürekli g/ç yapan işlemleri seçmez bunun yerine 1 adet g/ç, 1 adet hesaplama yapan işlem çalıştırır.
  • Bazı işletim sistemlerinde bulunmayabilir.

Kısa Dönemli Zamanlayıcı (Short Term Scheduler):

  • İşlemleri “hazır” kuyruğundan seçer.
  • İşlemciyi seçilen işlem için hazır duruma getirir (kaynak ayırır.)
  • İşlemi, işlemciye gönderir.
  • Çok kısa aralıklarla tekrar tekrar çalışır. (bir kaç milisaniyede bir)
  • Çok hızlı karar vermek zorundadır.

İyi Bir Zamanlayıcının Özellikleri:

  • Adalet: Her bir işlem, işlemciyi adil bir şekilde paylaşmalıdır.
  • Verimlilik: İşlemci yükü %100′e yakın olmalıdır, unutmayın ki kullanılmayan işlemcinin kimseye yararı yoktur.
  • Tepki Zamanı: İnteraktif kullanıcılar yaptıkları işlemlerin etkilerini çok kısa sürede görebilmelidirler. Kimse yazı yazmaya başladıktan belirli bir süre sonra ekranda harflerin belirmesinden hoşnut olmaz.
  • Geri Dönüş Süresi: Bir işlemin çıktı verene kadar geçen süresini minimuma indirmelidir.
  • Çıkış: 1 saat içinde yapılan işlem sayısını maksimize etmelidir.

Zamanlama Türleri:

1. Preemptive:

  • Süren bir işlemi kısa zaman aralıklarında çalıştırır, çalışmadığı zamanlarda işlemci’de çalışacağı zamanı bekler.
  • İşlemcideki kayıp zaman non-preemptive’e göre fazladır.
  • Interrupt (bir olayın sonucuna bağlı olarak), trap (hata veya exception’a bağlı olarak), Supervisor Call (kernel’den özel bir çağrıya bağlı olarak) nedeniyle işlem, duraklatılabilir.

2. Non-Preemptive

  • İşlem sonlanana kadar işletim sistemi işleme müdahale etmez.

Zamanlama Algoritmaları:

  • İlk Giren İlk Çıkar: Bu algoritmada işlemlerin işlemciye geliş sırasına göre işlemci bunları çalıştırır. En basit zamanlama algoritmasıdır. Uygulaması kolay olduğundan ve bazı sistemlerde gelen olaya göre sıralı tepki verilmesi gerektiğinde kullanılır. Ortalama bekleme süresi uzundur. Günümüz kullanım alanı genellikle gömülü sistemlerdedir. Preemptive değildir.
  • Son Giren İlk Çıkar: Bu algoritmada, ilk örneğin tersidir. Son gelen işi ilk sıraya alır. Pek fazla kullanım alanı yoktur. Preemptive değildir.
  • En Kısa İşlem Önceliği: Bu algoritmada sıradaki en kısa iş en önce yapılır. Böylece birim sayıda yapılan işlem sayısı artırılarak tepki zamanı düşürülmeye çalışılır. Genelde toplu işlemlerin yapılmasında kullanılır. (Bankadaki haftalık hesapların arkaplanda yapılması gibi) Preemptive değildir.
  • En Uzun İşlem Önceliği: Burada en uzun işlem ilk önce yapılarak işlemcideki iş yükünün sürekli yüksek olması amaçlanır. Böylece işlemciden daha çok verim alınabilir. Yüksek performanslı bilgisayarlarda sıkça kullanılmaktadır. Preemptive bir algoritmadır.
  • En Az İşlem Zamanı Kalan İşlem Önceliği: Bu algoritma en kısa işlem önceliği algoritmasının preemptive halidir. Bir işlemin ne kadar süre daha çalıştırılacağını belirleyip kalan zamanı en az olan işlemi çalıştırır. Günümüzde genel amaçlı bazı bilgisayarlarda kullanılmaktadır. Amacı tepki zamanını azaltmaktır. Preemptive bir algoritmadır.
  • Round Robin: En adil algoritmadır. Tüm işlemlerin önceliği aynıdır ve eşit zaman aralıklarında çalışırlar. Süresi dolan işlem preemtive edilir. bir sonraki işlem çalışır. Hazır kuyruğu olarak dairesel kuyruk veri yapısını kullanır. Preemptive bir algoritmadır.
  • Çok Kademeli Geri Beslemeli Zamanlama: Bu algoritma günümüzde genel amaçlı bilgisayarlarda en fazla kullanılan algoritmadır. Bu algoritmada Context Switch’den kaybedilen zamanı azaltmak için çalışan işlemlerden geri besleme alınır ve zaman aralığı artırılabilir. Ayrılan zamanı arttırmak CPU yükünü yüksek tutacağı gibi boş geçen zamanı düşürür bu da performans artışı sağlar. Tabii ki diğer taraftan starvation (bir işlemin yeterli kaynağı bulamaması durumunda kilitlenmesi) ihtimaline karşı önlem alınır ve belirli bir zaman periyodundan sonra context switching gerçekleşir.

Gelecek Bölüm:

  • İşlem akrabalıkları
  • İşlemler arası iletişim
Bu yazıya yapılan yorumları RSS 2.0 ile takip edin. You can kendi siteniz üzerinden, or trackback ile cevap verin.

One Comment on “İşletim Sistemleri 01.2 – İşlemler ve Zamanlayıcı”

  • bir dost
    18 Ocak, 2010, 8:44

    fazlasın buralara saol dostum

Leave a Comment