Bölüm 5: CPU Çizelgeleme
Çoktan Seçmeli · Temel Kavramlar
Soru 1: Çizelgeleyici ve Görev Dağıtıcı
Kısa vadeli çizelgeleyici ile görev dağıtıcı (dispatcher) arasındaki iş bölümü için hangisi doğrudur?
C: Karar (politika) çizelgeleyicinin, devir (mekanizma) dağıtıcının işidir. Dağıtıcı her geçişte çalıştığı için hızlı olmalıdır; harcadığı süre dağıtım gecikmesidir. A rolleri ters çevirir; B bellek ve G/Ç yönetimini çizelgelemeyle karıştırır.
Çoktan Seçmeli · Temel Kavramlar
Soru 2: Yalnızca Kesmeli Çizelgelemede
Aşağıdaki durum geçişlerinden hangisinde çizelgeleme kararını yalnızca kesmeli bir çizelgeleyici verir?
D: Uyanan süreç hazır olur ama CPU zaten başka bir süreçtedir; çalışanı bırakıp uyananı seçmek ancak kesmeli çizelgelemede yapılır. Saat kesmesiyle çalışıyor → hazır geçişi de böyledir. A, B ve C'de CPU boşalır; seçim her çizelgeleyici için zorunludur.
Çıktı Sorusu · Temel Kavramlar
Soru 3: Gantt Şemasından Ölçütler
P1 (geliş 0, CPU 5), P2 (geliş 1, CPU 4) ve P3 (geliş 2, CPU 2) şekildeki gibi çizelgelendi. Üç sürecin dönüş, bekleme ve tepki sürelerini bulun.
Cevabı göster
| Süreç | Bitiş | Dönüş | Bekleme | Tepki |
|---|---|---|---|---|
| P1 | 11 | 11 | 6 | 0 |
| P2 | 10 | 9 | 5 | 1 |
| P3 | 6 | 4 | 2 | 2 |
| Ort. | 8 | 4,33 | 1 |
Dönüş = bitiş − geliş; bekleme = dönüş − CPU süresi; tepki = ilk çalışma − geliş.
P1 hemen başladı (tepki 0) ama iki kez kuyrukta bekledi: 2–6 ve 8–10 → 4 + 2 = 6. P2'nin beklemeleri 1–2 ve 4–8 → 5. Tepki süresi ilk beklemeyi, bekleme süresi tüm beklemeleri ölçer.
Çıktı Sorusu · Temel Algoritmalar
Soru 4: FCFS ve SJF
P1 (geliş 0, CPU 6), P2 (1, 3), P3 (2, 8), P4 (4, 2). FCFS ve kesmesiz SJF için Gantt şemasını çizin, ortalama bekleme ve dönüş sürelerini bulun.
Cevabı göster
| P1 | P2 | P3 | P4 | Ort. bekleme | Ort. dönüş | |
|---|---|---|---|---|---|---|
| FCFS bekleme | 0 | 5 | 7 | 13 | 6,25 | 11 |
| SJF bekleme | 0 | 7 | 9 | 2 | 4,5 | 9,25 |
SJF t = 6'da üç aday arasından en kısa P4'ü (2) öne alır. Toplam bitiş zamanı (19) değişmez, değişen sıradır; kısa işi öne almak uzun işe eklediğinden fazlasını kısa işten kazandırır.
Çıktı Sorusu · Temel Algoritmalar
Soru 5: Üstel Ortalama
Sonraki CPU patlaması τn+1 = α · tn + (1 − α) · τn ile tahmin ediliyor; α = 0,5 ve ilk tahmin τ0 = 12 ms. Ölçülen ilk üç patlama sırasıyla 8, 6 ve 10 ms. τ1, τ2 ve τ3 nedir? α = 1 olsaydı τ3 kaç olurdu?
Cevabı göster
- τ1 = 0,5 · 8 + 0,5 · 12 = 10
- τ2 = 0,5 · 6 + 0,5 · 10 = 8
- τ3 = 0,5 · 10 + 0,5 · 8 = 9 ms
α = 1 ise yalnızca son ölçüm sayılır: τ3 = t2 = 10. α = 0 olsaydı tahmin hiç değişmez, 12 kalırdı. Eski ölçümlerin ağırlığı her adımda (1 − α) ile çarpılarak üstel azalır.
Adım Adım Çalıştırma · Temel Algoritmalar
Soru 6: SRTF İzleme
P1 (geliş 0, CPU 7), P2 (2, 4), P3 (4, 1), P4 (5, 4) SRTF ile çizelgeleniyor. Gantt şeması ve ortalama bekleme süresi nedir?
t = 0'da yalnız P1 hazır. SRTF her gelişte ve her bitişte kalan süreleri karşılaştırır; gerekirse çalışanı keser.
P1 0–2 çalıştı. t = 2'de P2 gelir: 4 < P1'in kalanı 5 → P1 kesilir, P2 çalışır.
P2 2–4 çalıştı (kalan 2). t = 4'te P3 gelir: 1 < 2 → P2 kesilir, P3 çalışır.
P3 4–5'te bitti; aynı anda P4 (4) geldi. Kalanlar P1 5, P2 2, P4 4 → P2 devam eder.
P2 5–7'de bitti. Kalanlar P1 5, P4 4 → P4.
P4 7–11'de bitti. Geriye yalnız P1 kaldı; 2. ms'den beri bekliyor.
P1 11–16. Bekleme: P1 16 − 0 − 7 = 9, P2 7 − 2 − 4 = 1, P3 0, P4 11 − 5 − 4 = 2 → ortalama 12 / 4 = 3 ms.
t = 0; while (bitmeyen süreç var) { gelenleri hazır kümesine ekle(t); p = kalan süresi en küçük hazır süreç; p'yi 1 ms çalıştır; kalan[p]--; t++; if (kalan[p] == 0) bitis[p] = t; } for (her i) bekleme[i] = bitis[i] - gelis[i] - cpu[i];
Çıktı Sorusu · Temel Algoritmalar
Soru 7: Kesmeli Öncelik
Küçük sayı yüksek öncelik. P1 (geliş 0, CPU 5, öncelik 3), P2 (2, 4, 1), P3 (3, 2, 4), P4 (5, 3, 2), P5 (6, 1, 5). Kesmeli öncelik çizelgelemesinde Gantt şeması, ortalama bekleme ve ortalama dönüş süresi nedir?
Cevabı göster
| P1 | P2 | P3 | P4 | P5 | |
|---|---|---|---|---|---|
| Bitiş | 12 | 6 | 14 | 9 | 15 |
| Dönüş | 12 | 4 | 11 | 4 | 9 |
| Bekleme | 7 | 0 | 9 | 1 | 8 |
Ortalama bekleme 25 / 5 = 5 ms, dönüş 40 / 5 = 8 ms. t = 2'de gelen P2 (öncelik 1) P1'i keser; P3 ve P4 P2'yi kesemez. P2 bitince sıra öncelik değerine göredir: P4, P1, P3, P5.
Kesmesiz öncelikte ortalama bekleme 4,8 ms çıkar: kesme her zaman ortalamayı iyileştirmez, yüksek öncelikli işi bekletmemeyi sağlar.
Çoktan Seçmeli · Temel Algoritmalar
Soru 8: Yaşlanma Süresi
Öncelikler 0 (en yüksek) ile 63 (en düşük) arasında. Yaşlanma uygulanıyor: hazır kuyruğunda bekleyen her sürecin öncelik sayısı her 10 saniyede 1 azaltılıyor. Önceliği 63 olan bir süreç, hiç çalışmasa bile en geç kaç saniyede 0 önceliğine ulaşır?
B: 63'ten 0'a 63 adım vardır: 63 × 10 s = 630 s (10,5 dakika). C, 0 ile 63 arasındaki 64 değeri sayıp bir adım fazla alır. Yaşlanma açlığı ortadan kaldırmaz ama beklemeye sonlu bir üst sınır koyar.
Adım Adım Çalıştırma · Round Robin
Soru 9: RR İzleme: q = 3
P1 (geliş 0, CPU 5), P2 (1, 3), P3 (2, 6), P4 (4, 2); q = 3 ms. Aynı anda gelen yeni süreç, dilimi biten süreçten önce kuyruğa girer. Gantt şeması, ortalama bekleme ve ortalama tepki süresi nedir?
Kuyrukta yalnız P1 var. Her süreç en fazla q = 3 ms çalışıp kuyruğun sonuna döner.
P1 0–3 çalıştı (kalan 2). Arada gelen P2 ve P3 kuyruğa P1'den önce girdi.
P2 3–6'da dilim dolarken bitti. t = 4'te gelen P4 kuyruğun sonunda.
P3 6–9 çalıştı (kalan 3) ve sona döndü.
P1 kalan 2 ms'yi 9–11'de kullanıp bitti: dilim dolmadan CPU'yu bırakır.
P4 11–13'te bitti; ilk kez CPU'ya çıkması 11'de oldu (tepki 11 − 4 = 7).
P3 13–16. Ortalama bekleme 23 / 4 = 5,75, ortalama tepki 13 / 4 = 3,25 ms; 5 bağlam değiştirme.
kuyruk = [ilk gelen]; while (kuyruk boş değil) { p = kuyruk.cikar(); calis = min(q, kalan[p]); p'yi calis ms çalıştır; t += calis; bu sürede gelenleri kuyruğa ekle; kalan[p] -= calis; if (kalan[p] > 0) kuyruk.ekle(p); else bitis[p] = t; }
Çoktan Seçmeli · Round Robin
Soru 10: Bağlam Değiştirme Kaybı
RR'de zaman dilimi q = 4 ms, her bağlam değiştirme s = 1 ms sürüyor ve süreçler dilimlerini hep sonuna kadar kullanıyor. CPU zamanının yüzde kaçı bağlam değiştirmeye gider?
B: Her turda 4 ms iş ve 1 ms geçiş vardır: s / (q + s) = 1 / 5 = %20. C, s / q oranıdır (geçiş süresini toplama katmaz); D yararlı işin payıdır. q küçüldükçe kayıp artar; q çok büyürse RR FCFS'ye döner.
Çıktı Sorusu · Round Robin
Soru 11: Eşit İşlerde RR
A, B, C, D t = 0'da bu sırayla geliyor; her biri 4 ms CPU istiyor. FCFS ve q = 1 ms'lik RR için ortalama dönüş ve ortalama tepki süresini bulun. Hangi ölçütte hangisi daha iyidir?
Cevabı göster
- FCFS: bitişler 4, 8, 12, 16 → dönüş 10; tepki (0 + 4 + 8 + 12) / 4 = 6 ms.
- RR: bitişler 13, 14, 15, 16 → dönüş 14,5; tepki (0 + 1 + 2 + 3) / 4 = 1,5 ms.
Eşit uzunluktaki işlerde RR tepkide en iyi, dönüşte en kötü seçeneklerdendir: herkes sona kadar bekletilir. Ayrıca RR 15 bağlam değiştirme yapar, FCFS 3.
Adım Adım Çalıştırma · Çok Düzeyli Kuyruklar
Soru 12: MLFQ İzleme
Üç kuyruk: Q0 (q = 4), Q1 (q = 8), Q2 (FCFS). İşler: A (geliş 0, CPU 14), B (1, 3), C (3, 9), D (16, 2). Kesilen iş kuyruğunun başına döner ve dilimini tamamlar. İşler ne zaman biter?
A gelir ve Q0'a girer. Yeni her iş önce kısa sayılır, en üst kuyruktan başlar.
A 4 ms'lik dilimini doldurdu → Q1'e iner. Q0'da B ve C bekliyordu; B çalışır.
B 3 ms'de, dilimi dolmadan bitti (tepki 4 − 1 = 3). Sıra Q0'daki C'de.
C de dilimini doldurup Q1'e iner. Q0 boş → Q1'in başındaki A 8 ms'lik dilimle çalışır.
t = 16'da D gelir ve Q0'a girer: A kesilir (dilimin 5 ms'sini kullandı), Q1'in başına döner.
D 16–18'de bitti (tepki 0). A, Q1 dilimini tamamlamak için kalan 3 ms'yi kullanır.
A Q1 dilimini de doldurdu (4 + 8 = 12 ms) → Q2. C Q1'de çalışır; kalan 5 ms dilime sığar.
C 26'da bitti. Q0 ve Q1 boş; A Q2'de FCFS ile kalan 2 ms'yi çalışır.
Bitişler: B 7, D 18, C 26, A 28. Kısa B ve D üst kuyrukta hızla biter; uzun A aşağı süzülür.
yeni iş → Q0; while (iş var) { p = en üst dolu kuyruğun başı; p'yi en çok dilimi kadar çalıştır; if (üst kuyruğa iş geldi) p kesilir → kendi kuyruğunun başına; else if (p bitti) bitis[p] = t; else p bir alt kuyruğa iner; }
Çoktan Seçmeli · Çok Düzeyli Kuyruklar
Soru 13: MLFQ'yu Kandırmak
Bir iş, Q0'daki 10 ms'lik dilimin hep 9 ms'sini kullanıp kısa bir G/Ç yapıyor; böylece hiç alt kuyruğa inmeden CPU'nun büyük bölümünü alıyor. Bu oyunu bozan kural hangisidir?
A: Hak (allotment) düzeydeki toplam kullanım olarak tutulursa CPU'yu kaç kez bıraktığının önemi kalmaz; 10 ms dolunca iş aşağı iner. B açlığı önler, oyunu bozmaz. C gerçekten etkileşimli işleri cezalandırır; D yalnızca eşiği kaydırır.
Çıktı Sorusu · Orantılı Pay
Soru 14: Stride Sırası
Stride çizelgelemede A'nın 50, B'nin 100, C'nin 25 bileti var; adım = 10 000 / bilet. Her dilimde pass değeri en küçük süreç çalışır ve pass değerine adımını ekler; eşitlikte A, B, C sırası. İlk 7 dilimde çalışma sırası nedir? Her süreç kaç dilim alır?
Cevabı göster
Adımlar: A 200, B 100, C 400.
| Dilim | pass A | pass B | pass C | Çalışan |
|---|---|---|---|---|
| 1 | 0 | 0 | 0 | A |
| 2 | 200 | 0 | 0 | B |
| 3 | 200 | 100 | 0 | C |
| 4 | 200 | 100 | 400 | B |
| 5 | 200 | 200 | 400 | A |
| 6 | 400 | 200 | 400 | B |
| 7 | 400 | 300 | 400 | B |
Sıra A, B, C, B, A, B, B; A 2, B 4, C 1 dilim. 7 dilimde oran tam olarak 2 : 4 : 1 = 50 : 100 : 25. Sonda üç pass değeri de 400'dür. Piyangoda aynı oran ancak uzun vadede ve yaklaşık olarak tutar.
Çoktan Seçmeli · Orantılı Pay
Soru 15: Piyango Payı
Piyango çizelgelemede A'nın 50, B'nin 30, C'nin 20 bileti var. C'ye 20 bilet daha verilirse 240 dilimde C'nin beklenen dilim sayısı kaçtır?
C: Toplam 120 bilet olur; C'nin payı 40 / 120 = 1/3 → 240 / 3 = 80. A eski payla (%20) hesaplar; D toplamı 100 sanıp %40 alır. Piyango olasılıksaldır: 80 beklenen değerdir, kısa vadede sapma görülür.
Çoktan Seçmeli · Çok İşlemcili Çizelgeleme
Soru 16: Boşta Kalan CPU
Çekirdek başına hazır kuyruğu olan bir sistemde CPU2'nin kuyruğu boşalıyor; CPU2 en yüklü kuyruktan bir iş alıp çalıştırıyor. Bu mekanizmanın adı ve bedeli nedir?
D: Boşta kalan CPU'nun iş çekmesi çekme göçüdür (pull); periyodik dengeleyicinin aşırı yüklü CPU'dan iş itmesi itme göçüdür (push). Linux ikisini de kullanır. Göç dengeyi sağlar ama işlemci afinitesini bozar: önbellek ve NUMA yerelliği kaybolur.
Çıktı Sorusu · Gerçek Zamanlı Çizelgeleme
Soru 17: RM ve EDF
İki periyodik görev: T1 (çalışma 2, periyot 5), T2 (çalışma 4, periyot 7); son tarih periyot sonu. Toplam kullanım U nedir? RM ve EDF ile ilk son tarihler karşılanır mı?
Cevabı göster
U = 2/5 + 4/7 = 34/35 ≈ 0,97. RM için n = 2 sınırı ≈ 0,828 aşılıyor: garanti yok. EDF için U ≤ 1 yeterli.
RM'de t = 5'te gelen T1 statik önceliğiyle T2'yi keser. EDF'de t = 5'te T1'in son tarihi 10, T2'ninki 7: T2 devam eder ve 6'da biter. 35 ms'lik hiperperiyot boyunca EDF hiç son tarih kaçırmaz.
Çoktan Seçmeli · İşletim Sistemi Örnekleri
Soru 18: CFS'de CPU Payı
Linux CFS'de CPU'ya bağlı iki görev var: A nice 0 (ağırlık 1024), B nice 5 (ağırlık 335). CPU'yu yaklaşık hangi oranda paylaşırlar (A : B)?
A: Pay ağırlıkla orantılıdır: 1024 / (1024 + 335) ≈ %75, B ≈ %25. vruntime += Δ × 1024 / ağırlık olduğundan B'nin sanal süresi yaklaşık 3 kat hızlı artar ve daha seyrek seçilir. D, nice farkını doğrudan oran sanar; her nice adımı yaklaşık 1,25 kat ağırlık farkıdır.
Çoktan Seçmeli · Değerlendirme
Soru 19: Little Yasası
Bir sunucuya saniyede ortalama λ = 6 istek geliyor ve sistemde ortalama n = 18 istek bulunuyor. Little yasasına göre bir istek sistemde ortalama ne kadar kalır?
B: n = λ × W → W = 18 / 6 = 3 s. D çarpımdır (λ × n); A ve C fark ve toplamdır. Little yasası geliş ve hizmet dağılımından bağımsızdır; kuyruk modellerinin temel aracıdır.