Bugün ki dersimizde, işletim sistemlerinde İşlemci Zamanlaması (CPU Scheduling) konusunu işleyeceğiz. Çeşitli algoritmalar göreceğiz. Umarım dersimizi beğenirsiniz. Evet… Dersimize başlayalım.
İşlemci Zamanlaması (CPU Scheduling), işlemciyi en iyi şekilde kullanmayı planlayan çeşitli algoritmaların kullanıldığı bir yapı diyebiliriz. İşlemcinin (CPU), yapılacak işlere göre planlı bir şekilde çalışmasını sağlar.
İki tür zamanlayıcı var diyebiliriz. Bunlardan daha önce de bahsetmiştik.
- Short-term scheduler : Hızlı cevap beklediğimiz, kullanıcı ile ilişkili, daha çok işlemciye yüklendiğimiz zamanlayıcıdır.
- Long-term scheduler : Daha uzun süreli işlemlerimizi planladığımız zamanlayıcıdır. Örneğin application server, backup hizmetleri gibi.. Kullanıcıların çok olmadığı durumlarda tercih edilir.
Başarılı bir zamanlama işlemi yapmak istiyorsak hangi kriterlere dikkat etmeliyiz?
- CPU Utilization : İşlemciyi ne kadar yoğun kullanırsak o kadar iyi
- Throughput : Birim zamanda ne kadar işlemin tamamlandığı
- Turnaround Time : İşlemlerin ne kadar sürede bittiği. Başlangıç ile bitiş arasındaki fark.
- Waiting Time : Kuyrukta ne kadar süre beklediği (ready queue)
- Response Time : İşlemlere ne kadar sıklıkla cevap verildiği
Üstteki durumların en iyi olması için çeşitli algoritmalar geliştirilmiştir. Fakat her algoritmanın avantajı ve dezavantajları bulunmaktadır. Şimdi bu algoritmaları inceleyelim.
CPU Scheduling (İşlemci Zamanlaması) Algoritmaları
1. First – Come, First-Served (FCFS) Scheduling (İlk Gelen, İlk Gider Algoritması)
Bu algoritmada gelme sıralarına göre çalışırlar.
Örnek : Üç tane Process (işlem) düşünelim.
P1 = 15 time (Burst Time, Çalışma Süresi)
P2 = 4 time (Burst Time, Çalışma Süresi)
P3 = 7 time (Burst Time, Çalışma Süresi)
Gelme sırasıda P2,P1,P3 olsun.
P2 ilk başlar. 0. saniyede başlamış olur. 4. saniyede biter. (Bekleme zamanı 0 )
P1 daha sonra devreye girer. 4. saniyede başlar 19. saniyede biter (Bekleme süresi 4 )
P3 en son çalışacak process’tir. 19. saniyede başlar 26. saniyede biter. (Bekleme süresi 19 )
Bekleme zamanları : 0 + 4 + 19 = 23
Ortalama Bekleme Zamanı : 23 / 3 = 7.6 dır.
Bu algoritmada ortalama bekleme süreleri gelme sırasına göre değişir.
2. Shortest Job Scheduling
P1 = 15 time (Burst Time, Çalışma Süresi)
P2 = 4 time (Burst Time, Çalışma Süresi)
P3 = 7 time (Burst Time, Çalışma Süresi)
Gelme sırasıda P2,P1,P3 olsun. (Bu sıralamanın önemi yoktur bu algoritmada)
Verilen sırayla değil, bekleme zamanlarına göre çalıştırır.
İlk önce P2 sonra P3 daha sonra P1 çalışır.
Amacı bekleme zamanı ortalamasını azaltmaktır.
Çalışan işlerin ne kadar sürede çalışacağını bilemediğimizden bu algoritmayı kullanarak uygulama yazmak imkansızdır.
3. Shortest Remainig Time First Scheduling
P1 = 15 (Burst Time, Çalışma Süresi), 0 (Arrival Time, Çalışmaya Başladığı Zaman)
P2 = 4 (Burst Time, Çalışma Süresi), 1 (Arrival Time, Çalışmaya Başladığı Zaman)
P3 = 7 (Burst Time, Çalışma Süresi), 3 (Arrival Time, Çalışmaya Başladığı Zaman)
Şimdi bu algoritmayı üstteki bilgiler ışığında çalıştıralım.
0. Zaman : P1 başlar. P2 ve P3 henüz başlamamıştır.
1. Zaman : P1’in 14 zamanlık işi kalmıştır. P2 başlamak için izin ister. Algoritmamız P2 ile P1 in kalan sürelerini kıyaslar. P2 4 zamanlık iş yapacağından, gel sen başla der. P1 duraklatılır ve P2 başlar.
Son Durum : P1 14, P2 4, P3 7
2. Zaman : P1 14, P2 3, P3 7
3. Zaman : P3 ben de başlayabilirim der. P1, P2 ve P3 arasında kıyaslamayı yapar algoritmamız. Kalan süresi en az olan P2 dir. Bu yüzden P3 ve P1’e siz bekleyin emri gelir :=)
Son Durum : P1 14, P2 2, P3 7
4. Zaman : P1 14, P2 1, P3 7
5. Zaman : P1 14, P2 0, P3 6
7. Zaman : P1 14, P3 5
8. Zaman : P1 14, P3 4
9. Zaman : P1 14, P3 3
10. Zaman : P1 14, P3 2
11. Zaman : P1 14, P3 1
12. Zaman : P1 14, P3 0
13. Zaman : P1 13
14. Zaman : P1 12
15. Zaman : P1 11
…
26. Zaman : P1, 0 P2 0, P3 0
Umarım anlamışsınızdır.
Planlamada Öncelik
Örneğin bir işlem yapıyoruz. Daha öncelikli bir işlem geldi. Bu durumda önceliğimiz değişmelidir. İşlemlere öncelik vererek bu durumdan faydalanabiliriz. Bu durumda da kullanabileceğimiz algoritmalar vardır. Şimdi bunlardan en önemlisini inceleyelim
1. Round Robin (RR) Algoritması
Örnek :
P1 = 24 (Burst Time, Çalışma Süresi)
P2 = 3 (Burst Time, Çalışma Süresi)
P3 = 3 (Burst Time, Çalışma Süresi)
Çalışma Zamanı : 4 verilsin… P1,P2,P3 sırasıyla çalışsınlar.
Çözüm :
P1 çalışmaya başlıyor. 4 saniyesini dolduruyor. (Kalan süre : 20 )
P2 ye geldi sıra. P2 de 4 saniye çalışacak. Fakat 3 saniyelik işi var. O yüzden 3 saniye çalışıyor.
Daha sonra 7. saniyede P3 çalışmaya başlıyor. 4 saniyeyi o da dolduramıyor ve 3 saniye çalışarak görevi tamamlıyor.
Kalan sürelerde tekrar sıra P1 e dönüyor ve süreci tamamlıyor.
Evet.. İşlemci Zamanlaması (CPU Scheduling) konusunu burada bitirmiş oluyoruz. Okuduğunuz için teşekkürler