İşletim Sistemleri (Operating Systems) Yrd. Doç. Dr. Hüseyin POLAT
Process Zamanlama (Process Scheduling)
Ardışık Process Yürütümü (Sequential Execution) Bir process temel olarak çalıştırılmakta olan bir programdır. Tek process’li işletim sistemlerinde process’ler ardışık yürütüm ile sırayla bir birleri ardından çalışırlar. Ana bellekte, sadece çalışmakta olan process ile ilgili bilgiler tutulur. Process 1 Process 2 Başlangıç Bitiş Process 3
Eşzamanlı Process Yürütümü (Concurrent Execution) Bir bilgisayar sisteminde paylaşılan kaynaklar arasında en önemli kaynak CPU’dur. Çok kullanıcılı (multi-user) ve çok programlı (multiprogramming) sistemlerde, aynı anda birden çok process işletilmesi zorunluluğu, CPU’nun bu processler arasında paylaştırılmasını gerektirir. Çoklu programlamada bellekte birden fazla process çalışmaya hazır beklerken, bu process’ler hangi sırayla çalıştırılacak?
Eşzamanlı Process Yürütümü (Concurrent Execution) Eğer bir bilgisayar çok programlı (multi programming) ise, sıklıkla birçok process aynı anda işlemciyi kullanmak için birbirleri ile yarışırlar. Bu durum aynı anda birden fazla process’in hazır(ready) durumunda gerçekleşir. İşletim sisteminde, birden fazla hazır durumda bulunan bu process’lerden hangisinin işlemciyi kullanacağına karar veren mekanizmaya zamanlayıcı(scheduler) denilir ve kullanılan algoritmaya da zamanlama algoritması (scheduling algorithm) denilir.
Process Zamanlama (Process Scheduling) Çok programlı sistemlerin amacı aynı anda yürütülen process sayısını artırarak CPU’yu maksimum etkinliğe ve üretkenliğe kavuşturmaktır. Tek işlemcili sistemlerde aynı anda sadece bir process yürütülebilir. Birden fazla process olduğunda, bunlar CPU’nun işinin bitmesi için bekleyeceklerdir. Process’lerin görüntüde eşzamanlı olarak CPU üzerinde çalışabilmeleri için zamanlamalarının sağlanması gerekir. İşlemci zamanlama algoritmalarına göre sırası gelen process bekleme sırasından(Hazır Kuyruk) alınarak görevlendirici (dispatcher) ismi verilen bir işlem tarafından CPU’ya gönderilir.
Process Zamanlama (Process Scheduling) CPU’nun bir process işletimini, devam etmek üzere bırakıp diğer bir process işletimine geçmesi anahtarlanma (switching) olarak adlandırılır. Process’lerin hangi sıra ve kurallar çerçevesinde anahtarlanacağını process yönetimi (process management) düzenler. CPU’nun, paralel işletimi sağlamak üzere bir process işletimini bırakıp diğer bir process işletimine geçmesi belirli önlemler alınmadan yapılamaz, işletimin yarım bırakıldığı andaki process durum bilgilerinin saklanması gerekir (contex switching). Bu nedenle, her process için işletim sistemi tarafından bir veri yapısı tutulur (process control block). Process’ler arasında geçiş işlemi son derece maliyetli bir işlemdir.
Process Zamanlama (Scheduling) Zamanlayıcı (Scheduler), bir process’i çalışması için seçer ve böylece process’in durumu hazırdan çalışıyor’a geçer. Zamanlayıcı (Scheduler), hazır durumda bulunan başka bir process’i seçer ve işlemcide çalışmasını sağlar. Çalışmakta olan process hazır durumuna geçirilir. Zamanlayıcı işlemciyi çok iyi kullanmalıdır ve işlemciden maksimum performans alınmasını sağlamalıdır. Bu yüzden İşlemci mümkün olduğunca meşgul tutulmalıdır. Birim zamanda çalıştırılan process sayısını arttırmak önemlidir. Bir process’in başlatılmasından bitirilmesine kadar geçen toplam bitirilme zamanı asgari sürede tutulmalıdır.
Process Zamanlama (Scheduling) Bir process I/O işlemi için bloklandığında başka bir process seçilmelidir. Bir I/O kesmesi geldiğinde bir zamanlama kararı yapılmalıdır. Eğer kesme bir I/O cihazından geliyorsa, bu I/O cihazından gelecek olan veriyi bekleyen process çalıştırılmalıdır. Zamanlamada temel fikir, I/O istekli process’lere hemen bir şans verilmeli ve kısa sürede I/O isteklerini yapmalarıdır.
Zamanlama Kriterleri Zamanlama algoritmaları aşağıdaki kriterlere dikkat etmektedirler: CPU yararı (CPU utilizitation): İşlemcinin verimli kullanımı. CPU mümkün olduğu kadar meşgul edilmeye çalışılır. CPU yararı 0’dan 100’e kadar değişebilmektedir. (Normal sistem-40, yoğun sistem-90) Yapılan İş (Throughput): Birim sürede sonlandırılan process sayısı. Birim sürede tamamlanan toplam process sayısı sistem başarısını gösteren bir kriterdir.
Zamanlama Kriterleri Dönüş Süresi (Turn-around time): Bir process’in yürütülmesi sırasında geçen süredir. Process’in dönüş süresi; belleğe yüklenirken, kuyrukta beklerken, CPU’da yürütülürken ve giriş/çıkış aygıtları tarafından tamamlanırken geçen sürelerin tamamıdır. Kısaca işletim ve bekleme sürelerinin toplamıdır. Bekleme Süresi (Waiting time): Process’in CPU tarafından yürütülene kadar, hazır durumdaki sırada geçirdiği süre bekleme süresi olarak adlandırılır. Bekleme süreci, process’lerin, ana işlem birimi (CPU) kullanımı dışındayken kaynak bekleyerek geçirdikleri sürenin toplamıdır.
Zamanlama Kriterleri Cevaplama Zamanı (Response time): Process’lerin, ana işlem birimi (CPU) kullanımı için process kuyruğuna geldikten sonra, işlemciyi ilk olarak kullanmaya başladığı zamana kadar geçen süredir. Örneğin; P1 process’i sisteme 0. zamanda ulaşmış ve 0. zamanda işlemcide ilk kez çalıştırılmaya başlamıştır. Bu durumda cevap süresi (response time ) 0. birimdir. P2 process’i sisteme 0. zamanda ulaşmış ve 2. zamanda işlemcide ilk kez çalıştırılmaya başlamıştır. Bu durumda cevap süresi (response time ) 2. birimdir.
Özetle : Zamanlama Kriterleri CPU kullanımı : CPU’yu mümkün olduğu kadar meşgul tutma, Verim : Bir zaman diliminde çalışması tamamlan process sayısı, Dönüş süresi : Bir process’in oluşturulmasından çalışmasının sonlanmasına kadar geçen süre, Bekleme süresi : Process’in hazır kuyruğundaki bekleme süresi, Cevap süresi : Process’in, kuyruğuna geldikten sonra, işlemciyi ilk olarak kullanmaya başladığı zamana kadar geçen süre.
Zamanlama Algoritma Türleri Hazır sırası ile işlemci arasında zamanlama ilişkisini kuran işlemci zamanlama algoritmaları (cpu scheduling algorithms) çalışma türlerine göre 2 grupta incelenebilir: a) Kesintisiz (non-preemptive) b) Kesintili (preemptive)
Zamanlama Algoritma Türleri Kesintisiz (non-preemptive) : Bu türdeki bir zamanlama algoritmasında bir process, işlemciyi kullanması için seçildikten sonra ancak kendi isteğiyle işlemciden çıkabilir. Process, bittiğinde veya kendi kodunda bulunan bir G/Ç isteği ile bloklanıncaya kadar işlemcide kalabilir. CPU’nun, process’in kendi isteği dışında başka bir process’e atanmadığı işletim şeklidir. Şayet çalışan process hiçbir kaynak talebi yapmadan sonsuz döngüye girerse, CPU’yu hiçbir zaman bırakmayacaktır. Ancak çalışan process’lerin kesmelere açık olması şartıyla bu durumun üstesinden gelinir.
Zamanlama Algoritma Türleri Kesintili (preemptive) : Bir process’in, kendi isteğinin dışında CPU’yu bırakmak durumunda kalabildiği durumdur. Bir process işlemcide çalışmaya başladıktan sonra belirli bir süreye kadar çalıştırılır. Bu süre bittiğinde, process halen işlemcide çalışıyorsa askıya alınır ve zamanlayıcı başka bir process’i çalışması için seçer. yürütülen process’in CPU’dan kaldırılması ve istenilen başka bir process’in CPU’da yürütülmesi sağlanabilir.
Farklı İşletim Sistemleri için Zamanlama CPU’yu kullanmak için birbiriyle yarışan process’lerin CPU’ya tahsisi, herbir process’e eşit zaman dilimleri verilerek yada process’lere öncelik düzeyi atanarak yapılabilir. Gerçek zamanlı (Real-time) sistemlerde bir işin belli bir zaman içerisinde gerçekleştirilmesi önemlidir, bu yüzden sürelerin iyi ayarlandığı kesintili zamanlama algoritmaları kullanılmalıdır. Son teslim süresine riayet etme: Veri kaybından sakınmalıdır. Çoklu ortam sistemlerinde nitelik bozulmasından sakınmalıdır.
Farklı İşletim Sistemleri için Zamanlama Zaman paylaşımlı (Time-sharing) sistemlerde CPU’nun process’lere veya kullanıcılara eşit olarak paylaştırılması, Her process işlemciyi adil kullanmalıdır. İnteraktif sistemler (Interactive systems) kullanıcının sürekli veri alıp verdiği sistemlerdir. Bu yüzden kullanıcının verdiği komutlara alınan cevap süresi önemlidir. Kesintili zamanlama zorunludur. Cevap Süresi: İsteklere hızlı şekilde cevap verilmelidir. Orantılı Olma: Kullanıcının beklentilerini karşılamalıdır.
Farklı İşletim Sistemleri için Zamanlama Toplu işlemler (Batch) ise bir işin tamamlanma süresi (çünkü kullanıcı ancak bu süre sonunda cevap alır) ön plandadır. Kullanıcılar acil olarak cevap beklemedikleri için uzun süreli kesintili ya da kesintisiz zamanlama algoritmaları kullanılabilir. Process değişimi az olduğu için performans artar. Üretilen İş: Saat başına üretilen iş maksimum olmalıdır. Dönüş Süresi:Sürecin sunumu ve sonlanması arasındaki sürenin minumum olmasıdır. İşlemci Kullanımı: İşlemci her zaman meşgul olmalıdır.
Zamanlama Algoritmaları İlk Gelen Önce (First Come First Served-FCFS) Zaman Dilimli (Round Robin-RR) En Kısa İş (Shortest Job First-SJF) En Kısa İşletim Süresi Kalan (Shortest Remaining Time-SRT) Öncelik Tabanlı (Priority)
İlk Gelen Önce (First Come First Served FCFS) Diğer bir adı ile de FIFO (First in- First out). En basit zamanlama algoritmasıdır. Bu sistemde CPU’ya ilk gelen process CPU’ya yerleştirilir. Process’ler geliş sıralarına göre bir sıra oluştururlar. Bir process, geldiğinde hazır durumdaki process sırasının en sonuna yerleştirilir. Kesintisiz (non-preemptive) türdeki bir zamanlama algoritmasıdır. Process’ler hazır kuyruğuna (ready queue) geliş sırasına göre işletilir. Kuyruktaki process’ler sırayla çalıştırılırlar. Çalışan process bloklanınca bekler. Bloklanmış process tekrar hazır durumuna geçtiğinde yeni bir process gibi davranılarak kuyruğun sonuna eklenir. Kısa süreli işler ve çoğunlukla veri alışverişi yapan process’ler için performansı çok kötüdür. Toplu işlemler (Batch) sistemlerde kullanılır.
İlk Gelen Önce (First Come First Served-FCFS) Örnek: t=0’da hazır kuyruğuna P1,P2,P3,P4 ve P5 sırasında gelen 5 process olsun ve bu process’lerin servis süreleri T ile gösterilsin. Her bir process’in bekleme ve tamamlanma sürelerini İlk Gelen Önce (First Come First Served FCFS) algoritmasına göre hesaplayınız. Process P1 P2 P3 P4 P5 Servis Süresi T(Pi) 200 110 300 150 50
Çözüm Her bir process’in bitiş süresi; Ttoplam(P1)=T(P0)=200 Ttoplam(P2)= Ttoplam(P1)+T(P2)=200+110=310 Ttoplam(P3)= Ttoplam(P2)+T(P3)=310+300=610 Ttoplam(P4)= Ttoplam(P3)+T(P4)=610+150=760 Ttoplam(P5)= Ttoplam(P4)+T(P5)=760+50=810 Ortalama bitiş süresi =Σ(Ttoplam(Pi))/5 = (200+310+610+760+810)/5=538 Herbir process’in bekleme süresi; Tbekleme(P1)=0 Tbekleme(P2)= Ttoplam(P1)=200 Tbekleme(P3)= Ttoplam(P2)=310 Tbekleme(P4)= Ttoplam(P3)=610 Tbekleme(P5)= Ttoplam(P4)=760 Ortalama bekleme süresi =Σ(Tbekleme(Pi))/5 = (0+200+310+610+760)/5=376 Process P1 P2 P3 P4 P5 Servis SüresiT(Pi) 200 110 300 150 50 200 310 610 760 810 P1 P2 P3 P4 P5
İlk Gelen Önce (First Come First Served FCFS) Örnek: Process’lerin, aşağıdaki tabloda verilen varış sürelerine göre hazır kuyruğuna katılacakları kabul edilirse, ilk gelen önce (First Come First Served-FCFS) algoritmasına göre process’lerin bekleme süreleri ve ortalama bekleme süresi ne olur? Process Varış süresi Servis süresi P1 0 ms 16 ms P2 1 ms 3 ms P3 2 ms 5 ms
Çözüm Cevap süreleri (başlangıç zamanı – varış zamanı): P1: 0-0= 0ms Ortalama cevap süresi (toplam cevap zamanı/process sayısı): Ortalama = (0 + 15 + 17)/3 = 10.7ms Process Varış süresi Servis süresi P1 0 ms 16 ms P2 1 ms 3 ms P3 2 ms 5 ms Gantt Chart çizelgesi
Zaman Dilimli (Round Robin) Kesintili (preemptive) türdeki bir zamanlama algoritmasıdır. Zaman Dilimli (Round Robin) algoritmasında process’ler eşit uzunluktaki zaman dilimlerinde işlemciye (CPU) sırayla anahtarlanırlar. İlk gelen önce algoritmasına göre process’ler kuyrukta dizilir. Çalışacak her process için quantum süresi (q) denilen sabit bir process süresi ayrılır ve CPU’ya gelen her process en çok bu süre kadar çalıştırılır. Eğer process, quantum süresinin sonunda hala çalışıyorsa bloke edilir ve başka bir process’e geçilir. Process’in quantum süresi bitmeden process bloklanırsa ya da çalışması sonlanırsa başka bir process’e geçilir. Bir listede çalışabilir process’ler tutulur. Process quantum süresini tükettiğinde listenin sonuna eklenir.
Zaman Dilimli (Round Robin) Zaman Dilimli (Round Robin) algoritmada en önemli konu quantum süresidir. Bir process’den başka bir process’e geçiş işlemide (contex switching) sistemde belirli bir süre almaktadır. Örneğin; Process’ler arası değişim işleminin 1ms aldığını varsayalım. Quantum süresi 4ms seçilirse, process değişimleride 1ms alır. Dolaysıyla İşlemcinin %20 si yönetimsel ek yük işlemleri için harcanır. İşlemci etkinliğini arttırmak için, quantum miktarını 100ms seçilirse, yönetimsel ek yük %1 olacaktır. Quantum süresini çok kısa tutmak işlemci etkinliğini azaltır, çok uzun tutmak isteklere verilen cevabı azaltır.
Zaman Dilimli (Round Robin-RR) Örnek: Process’lerin, aşağıdaki tabloda verilen varış sürelerine göre hazır kuyruğuna katılacakları kabul edilirse, quantum süresi 4ms (q=4) olan bir Zaman Dilimli (Round Robin) zamanlama algoritmasına göre process’lerin bekleme süreleri ve ortalama bekleme süresi ne olur? Process Varış süresi Servis süresi P1 0 ms 16 ms P2 1 ms 3 ms P3 2 ms 5 ms
Zaman Dilimli (Round Robin-RR) Cevap süreleri (başlangıç zamanı – varış zamanı): P1: 0-0= 0ms P2: 4-1= 3ms P3: 7-2= 5ms Ortalama cevap süresi (toplam cevap zamanı/process sayısı): Ortalama = (0 + 3 + 5)/3 = 2.7 ms Process Varış süresi Servis süresi P1 0 ms 16 ms P2 1 ms 3 ms P3 2 ms 5 ms Gantt Chart çizelgesi
En Kısa İş (Shortest Job First-SJF) Her bir proses, bir sonraki CPU kullanım süresinin uzunluğu ile ilişkilendirilir. Bu uzunluklar kullanılarak en kısa süreye ihtiyaç duyan process ilk hizmet görür. Process’lerin toplam çalışma sürelerinin belirli olduğu düşünülür. Zamanlayıcı, kuyrukta bulunan process’lerden en kısa sürede tamamlanacak olan process’i seçer. Ortalama bekleme süresi düşünüldüğünde SJF optimumdur. Verilmiş bir process serisi için en düşük bekleme sürelerini elde etmiştir. Zaman paylaşımlı sistemler için kullanılışlı değildir.
En Kısa İş (Shortest Job First-SJF) Preemptive çalışma : İşlemci bir process’e verildiğinde bu process’in işi tamamen bitinceye kadar işlemci başka bir process’e verilemez. non-Preemptive çalışma : O an için işlemciyi kullanan process’in kalan kullanım süresinden daha kısa süreye sahip bir process gelirse, işlemciyi kullanan process engellenir ve işlemci yeni process’e devredilir. En Kısa İş (Shortest Job First) algoritmasının kesintili (preemptive) bir uyarlaması, “Kalan süresi en kısa olan ilk hizmet görür” (Shortest-Remaining-Time-First –SRTF) olarak bilinir.
En Kısa İş (Shortest Job First) non-Preemptive Örnek: t=0’da hazır kuyruğuna P1,P2,P3,P4 ve P5 sırasında gelen 5 process olsun ve bu process’lerin servis süreleri T ile gösterilsin. Her bir process’in bekleme ve tamamlanma sürelerini En Kısa İş (Shortest Job First) algoritmasına göre hesaplayınız. Process P1 P2 P3 P4 P5 Servis Süresi T(Pi) 200 110 300 150 50
Çözüm : Her bir process’in bitiş süresi; Ttoplam(P1)=T(P1)+ T(P5)+ T(P2)+ T(P4)=200+50+110+150=510 Ttoplam(P2)= T(P2)+ T(P5)=110+50=160 Ttoplam(P3)= T(P3)+ T(P5)+ T(P2)+ T(P4)+ T(P1)=300+50+110+150+200=810 Ttoplam(P4)= T(P4)+ T(P5)+ T(P2)=150+50+110=310 Ttoplam(P5)= T(P5)=50 Ortalama bitiş süresi =Σ(Ttoplam(Pi))/5 = (510+160+810+310+50)/5=368 Her bir process’in bekleme süresi; Tbekleme(P1)= 310 Tbekleme(P2)= 50 Tbekleme(P3)= 510 Tbekleme(P4)= 160 Tbekleme(P5)= 0 Ortalama bekleme süresi = Σ(Tbekleme(Pi))/5 = (310+50+510+160+0)/5=206 Process 1 2 3 4 Servis Süresi T(Pi) 200 110 300 150 50 50 160 310 510 810 P5 P2 P4 P1 P3
En Kısa İş (Shortest Job First) Örnek: Process’lerin, aşağıdaki tabloda verilen varış sürelerine göre hazır kuyruğuna katılacakları kabul edilirse, En Kısa İş (Shortest Job First) zamanlama algoritmasına göre process’lerin bekleme süreleri ve ortalama bekleme süresi ne olur? Process Varış süresi Servis süresi P1 0 ms 16 ms P2 3 ms P3 5 ms
En Kısa İş (Shortest Job First) Cevap süreleri (başlangıç zamanı – varış zamanı): P1: 8-0= 8ms P2: 0-0= 0ms P3: 3-0= 3ms Ortalama cevap süresi (toplam cevap zamanı/process sayısı): Ortalama = (8 + 0 + 3)/3 = 3.7ms Process Varış süresi Servis süresi P1 0 ms 16 ms P2 3 ms P3 5 ms Gantt Chart çizelgesi
En Kısa İşletim Süresi Kalan (Shortest Remaining Time) En Kısa İş (Shortest Job First) algoritmasının kesintili (preemptive) bir uyarlamasıdır. Kalan çalışma süresi en az olan seçilir. Yeni bir process geldiğinde, mevcut process’in kalan süresi ile yeni process’in kalan süresi karşılaştırılır ve küçük olan tercih edilir. En kısa işletim süresi kalan process’e öncelik sağlanarak biran önce sistemden çıkması ve bu yolla en kısa ortalama bekleme süresinin elde edilmesi amaçlanır. Kalan işletim süresi tam olarak ölçülebilen bir değer değildir!
En Kısa İşletim Süresi Kalan (Shortest Remaining Time) Örnek: Process’lerin, aşağıdaki tabloda verilen varış sürelerine göre hazır kuyruğuna katılacakları kabul edilirse, En Kısa İşletim Süresi Kalan (Shortest Remaining Time) zamanlama algoritmasına göre process’lerin bekleme süreleri ve ortalama bekleme süresi ne olur? Process Varış süresi Servis süresi P1 0 ms 16 ms P2 1 ms 3 ms P3 2 ms 5 ms
En Kısa İşletim Süresi Kalan (Shortest Remaining Time) Cevap süreleri (başlangıç zamanı – varış zamanı): P1: 0-0= 0ms P2: 1-1= 0ms P3: 4-2= 2ms Ortalama cevap süresi (toplam cevap zamanı/process sayısı): Ortalama = (0 + 0 + 2)/3 = 0.7ms Process Varış süresi Servis süresi P1 0 ms 16 ms P2 1 ms 3 ms P3 2 ms 5 ms Gantt Chart çizelgesi
Öncelik Zamanlama (Priority Scheduling) Öncelik algoritmasını kullanan sistemlerde her process’in bir önceliği bulunur. Process öncelikleri, bir process’in ait olduğu kullanıcı grubunun özelliklerine göre belirlenir. CPU’yu kullanım süresi, ana bellek gereksinimi, G/Ç kanal kullanım sıklığı gibi görevin sistem kaynaklarına ilişkin ölçülebilir taleplerine öncelikleri belirler. Bu algoritmaya göre yeni bir process işlemcide çalışması için seçileceği zaman, en yüksek önceliğe sahip process seçilir.
Öncelik Zamanlama (Priority Scheduling) Her process’e bir öncelik(priority) değeri atanır ve çalışabilir process’lerden yüksek öncelikli olanların çalışmasına izin verilir. Örneğin, bir video filmi gösteren process ile arka planda email atan process aynı öncelikte olmaz. Düşük öncelik rakamı daha büyük önceliği ifade eder. Aksi belirtilmedikçe kesintili olarak uygulanır. Bu öncelik değeri Process Control Block içinde öncelik (priority) alt alanında tutulur.
Öncelik Zamanlama (Priority Scheduling) Yüksek öncelikli process’lerin sonsuza kadar çalışmasını engellemek için, her saat sinyalinde sürecin önceliği düşürülür. Bu işlem, process’in önceliğini en yakın rakibinin önceliğine getirdiğinde process’ler arasında geçiş işlemi yapılır. Alternatif olarak her process’e en yüksek öncelik değeri verilir. Quantum süresi bittiğinde önceliği azaltılır ve kendinden sonraki process’in çalışmasına izin verilir.
Öncelik Zamanlama (Priority Scheduling) Sistem tarafından belirli sistem hedeflerinin sağlanması amacıyla process öncelikleri değiştirilebilir. Örneğin, bazı process’ler yüksek şekilde I/O bağımlıysa ve I/O için bekliyorsa, bu process işlemcide çalışmak istediğinde hemen işlemcide çalışmalıdır. Yüksek I/O bağımlı process’lerin işlemcide fazla çalıştırılması gereksiz bellek kullanmalarını sağlar.
Öncelik Zamanlama (Priority Scheduling) I/O bağımlı process’lere basitçe 1/f öncelik değeri atanır. f, bir process’in kullandığı son quantum kesiridir. Öncelik :quantum x 1/f Bir process kendisine verilen 50 ms quantum süresinden 1 ms kullanmışsa, önceliği 50 dir. Bloklanmadan önce 25 ms çalışmışsa önceliği 2 dir. Tüm quantum süresini kullanmışsa önceliği 1 dir.
Öncelik Zamanlama (Priority Scheduling) Yaygın olarak, process’leri gruplayarak gruba öncelik sınıfı atanır. Yukarıdan aşağıya doğru dönüşümlü olarak çalıştırılırlar. Yukarıdaki grubun çalışması bitmeden aşağıdakiler çalışamaz.
Öncelik Zamanlama (Priority Scheduling) Örnek: 5 prosese ait servis süreleri ve öncelik düzeyleri aşağıdaki gibi olsun. Herbir prosesin bekleme ve tamamlanma sürelerini hesaplayınız (Tüm proseslerin t=0’da hazır kuyruğuna geldiği farzedilecektir). Process Varış süresi Servis süresi Öncelik P1 200 4 P2 110 1 P3 300 3 P4 150 5 P5 50 2
Çözüm : P1 prosesi en yüksek öncelikli olduğundan ilk önce işletilecektir. Daha sonra da sırasıyla P4,P2,P0 ve P3 işletilecektir. Her bir process’in bitiş süresi; Ttoplam(P1)=T(P1)+ T(P2)+ T(P5)+ T(P3)=200+110+50+300=660 Ttoplam(P2)=T(P2)=110 Ttoplam(P3)=T(P3)+ T(P2)+ T(P5)=300+110+50=460 Ttoplam(P4)=T(P4)+ T(P2)+ T(P5)+ T(P3)+ T(P1)=150+110+50+300+200=810 Ttoplam(P5)=T(P5)+ T(P2)=50+110=160 Ortalama bitiş süresi = Σ(Ttoplam(Pi))/5 = (660+110+460+810+160)/5= 440 Herbir process’in bekleme süresi; Tbekleme(P1)= 460 Tbekleme(P2)= 0 Tbekleme(P3)= 160 Tbekleme(P4)= 660 Tbekleme(P5)= 110 Ortalama bekleme süresi = Σ(Tbekleme(Pi))/5 = (460+0+160+660+110)/5=278 110 160 460 660 810 P2 P5 P3 P1 P4
Öncelik Zamanlama (Priority Scheduling) Örnek: Process’lerin, aşağıdaki tabloda verilen varış sürelerine göre hazır kuyruğuna katılacakları kabul edilirse, öncelik zamanlama algoritmasına göre process’lerin bekleme süreleri ve ortalama bekleme süresi ne olur? Process Varış süresi Servis süresi Öncelik P1 7 3 P2 10 1 P3 6 4 P4 15 2 P5
Çözüm Cevap süreleri (başlangıç zamanı – varış zamanı): P1: 31-0= 31ms Ortalama cevap süresi (toplam cevap zamanı/process sayısı): Ortalama = (31 + 6 + 38 + 16 + 0)/5 = 18.2ms Process Varış süresi Servis süresi Öncelik P1 7 3 P2 10 1 P3 6 4 P4 15 2 P5 Gantt Chart çizelgesi
Çok Kuyruklu Zamanlama (Multiple Queues) Zamanlayıcı, ilk olarak hangi öncelik düzeyinden seçim yapacağına daha sonrada seçimini yaptığı öncelik düzeyinden hangi process’in seçileceğine karar verir. Her bir aşamada farklı algoritmalar kullanılabilir. Sistem Process’leri Öncelik düzeyi artar İnteraktif Process’ler Kullanıcı Process’leri Üç seviyeli hazır kuyruğu
Çok Kuyruklu Zamanlama (Multiple Queues) Çok kuyruklu zamanlamada process’ler belli bir öncelik düzeyindeki kuyruğa atılır ve yeri değişmez. Çok kuyruklu geri beslemeli zamanlayıcı yapısında ise process’ler ilk olarak zaman dilimi az olan en yüksek öncelikli kuyruğa konur. Bu zaman diliminde process tamamlanmazsa zaman dilimi biraz daha fazla olan bir alt kuyruğa aktarılır.
Çok Kuyruklu Zamanlama (Multiple Queues) Şayet üç seviyeli bir kuyruk yapısı varsa ve alt kuyrukta da process’in işletimi tamamlanmamışsa en alt seviyedeki kuyruğa konur. Üst seviyedeki kuyruktaki process’ler öncelikle işletilir. Yani alt seviyedeki bir process işletilirken üst seviyedeki kuyruğa bir process geldiğinde process’in işletimi yarıda kesilir ve yeni gelen process işletime alınır.
Çok Kuyruklu Zamanlama (Multiple Queues) Örnek: Çok kuyruklu geri beslemeli zamanlama algoritmasının kullanıldığı bir sistemde, process’lerin kuyruğa geliş zamanları ve servis süreleri aşağıdaki gibidir. Process’lerin ne şekilde işletileceğini grafiksel olarak gösteriniz. (Not: Üst iki sevide, prosesler kuyruğa geldikleri sırada işletime alınmaktadır.)