CPU zamanlama (scheduling) algoritmaları nelerdir? FCFS, SJF, Round Robin ve priority scheduling'i karşılaştırın.
Cevap
CPU scheduler, hazır kuyruğundaki (ready queue) process/thread'lerden hangisinin CPU'yu ne kadar süre kullanacağına karar verir. Hedefler birbiriyle çatışır: yüksek throughput, düşük bekleme süresi, düşük yanıt süresi (response time) ve adalet (fairness).
| Algoritma | Preemptive mi? | Avantaj | Dezavantaj |
|---|---|---|---|
| FCFS (First Come First Served) | Hayır | Basit, adil sıra | Convoy effect: uzun iş kısa işleri bekletir |
| SJF / SRTF | SJF hayır, SRTF evet | Ortalama bekleme süresi optimal | İş süresi önceden bilinmez; uzun işler aç kalabilir (starvation) |
| Round Robin | Evet (time quantum) | İnteraktif sistemler için iyi yanıt süresi | Quantum çok küçükse context switch maliyeti, çok büyükse FCFS'e döner |
| Priority | İkisi de olabilir | Kritik işler önce | Starvation; çözümü aging (bekledikçe öncelik artar) |
| Multilevel Feedback Queue | Evet | Davranışa göre öncelik ayarlar | Ayarlaması karmaşık |
Örnek: bekleme süresi hesabı
P1 = 24 ms, P2 = 3 ms, P3 = 3 ms aynı anda geliyor.
- FCFS (P1, P2, P3): bekleme süreleri 0, 24, 27 -> ortalama 17 ms.
- SJF (P2, P3, P1): bekleme süreleri 0, 3, 6 -> ortalama 3 ms.
Gerçek işletim sistemleri
- Linux: 2.6.23'ten beri CFS (Completely Fair Scheduler) kullanıyordu; kernel 6.6 (2023) ile yerini EEVDF (Earliest Eligible Virtual Deadline First) aldı. Her iki yaklaşım da thread'lere "sanal çalışma süresi" üzerinden adil pay vermeye çalışır. Gerçek zamanlı işler için ayrıca
SCHED_FIFOveSCHED_RRsınıfları vardır. - Windows: öncelik tabanlı, preemptive ve dinamik öncelik artırma (priority boost) kullanan bir zamanlayıcıdır.
Kavramlar
- Turnaround time: bitiş - geliş zamanı.
- Waiting time: turnaround - çalışma süresi.
- Response time: ilk kez CPU'ya alınana kadar geçen süre (interaktif sistemlerde en kritik metrik).
İlgili İşletim Sistemleri soruları
- Concurrency ile parallelism arasındaki fark nedir?
- Race condition nedir? Bir örnekle nasıl önleneceğini gösterin.
- Context switch nedir? Neden maliyetlidir?
- Virtual memory ve paging nasıl çalışır? Page fault nedir?
- Mutex ile semaphore arasındaki fark nedir?
- Deadlock nedir? Oluşması için gereken dört koşul nelerdir ve nasıl önlenir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.