Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Vize Öncesi.

Benzer bir sunumlar


... konulu sunumlar: "Vize Öncesi."— Sunum transkripti:

1 Vize Öncesi

2 Kitabınızın 1. – 9. bölümleri arasındaki konular
Temel Kavramlar Sistem Çağrıları Süreçler ve Süreç Yönetimi Süreçler arası iletişim İplikler ve İplik Yönetimi İş Senkronizasyonu İş Zamanlama/Sıralama Klasik problemler Ölümcül Kilitlenme Kitabınızın 1. – 9. bölümleri arasındaki konular (1 ve 9 dahil)

3 Soru Türleri Doğru/yanlış (gerekçesiyle birlikte)
Kısa cevaplı tanım, boşluk doldurma. Algoritmayı açıklayınız, bir algoritma öneriniz vd. Hesaplama gerektiren sorular Verilen kodu inceleme, tamamlama

4 Doğru/Yanlış Soru Örnekleri
Çok iplikli bir süreçteki bir ipliği sonlandırmanın en iyi yolu exit(0) çağrısı yapmaktır. Bir tamsayı değerini arttırmak her zaman atomik olarak yapılabilir. Tek işlemcili bilgisayarlarda kilitler, kesmeler kullanılarak kodlanabilir. Bir ipliğin kendi yığıtındaki (stack) bir değişkene erişmek her zaman güvenlidir. (thread-safe) exit(0) süreçten çıkmaya sebep olur, süreçteki diğer bütün iplikler de sonlanır. DOĞRU YANLIŞ Arttırma araya girilebilen yükleme, ekleme ve kaydetme talimatları gerektirir. DOĞRU YANLIŞ DOĞRU YANLIŞ Kilitleri elde ederken ve serbest bırakırken kesmeleri iptal etmek yeterlidir. Değişkenin adres değeri, başka bir ipliğin kullanımına verilebilir. DOĞRU YANLIŞ

5 Doğru/Yanlış Soru Örnekleri
Bir programdaki semaforların işlemlerinin sırasını değiştirmek önemli değildir. Bir printf() çağrısı çekirdeğe daima stdout’ a çıktı vermek için girer. İki süreç paylaşımlı bir bağlı listeyi okuyarak/yazarak bilgi paylaşabilir. Ortalama tamamlanma süresini en aza indiren CPU zamanlama yöntemi aç kalmaya yol açabilir. Semafora 0 değeri verilmişse V() ile başlanamayacağından önce P() çağrısı yapmak gerekir. DOĞRU YANLIŞ printf() çıktısını kullanıcı düzeyinde tamponlar. Dolayısıyla çekirdeğe hiç uğramadan çıkabilir. DOĞRU YANLIŞ Paylaşımlı bellek iki sürecin adres uzayında aynı yere eşlenmişse, bu bellekte kayıtlı oldukları ve işaretçiler burayı gösterdikleri sürece işaretçileri kullanan veri yapılarını paylaşabilirler. DOĞRU YANLIŞ Sürekli çok kısa süreli işler gelirse uzun işlere sıra gelmeyeceğinden, en az kalan zaman yöntemi (SRTF) aç kalmaya yol açar. DOĞRU YANLIŞ

6 Tanım/Boşluk Doldurma
CPU yazmaçları, stack işaretçisi, öncelik ve program sayacı bilgileri içerisinde yer alır. İkili semafora aynı zamanda kilit de denir. Öncelik Bağışı: Önceliğin tersyüz olmasını önlemek için bloklanmış yüksek öncelikli ipliğin/sürecin ihtiyaç duyduğu kaynağa sahip düşük öncelikli ipliğe/sürece geçici olarak öncelik aktarılmasıdır. iplik denetim bloğu (TCB) kilit

7 İşlemli Soru Örnekleri
Altı iş çalışmayı beklemektedir. İşlerin tahmini çalışma zamanları 10, 8, 6, 3, 1, ve X olarak verilmektedir. Ortalama tamamlanma süresinin en az olması için bu işler hangi sırada çalıştırılmalıdır? (Cevabınız X’e bağlı olacaktır.) Kullanılması gereken zamanlama algoritmasını da belirtiniz. En kısa iş önce veya en az kalan berimleme zamanı X <= X, 1, 3, 6, 8, 10 1 < X <= 3 1, X, 3, 6, 8, 10 3 < X <= 6 1, 3, X, 6, 8, 10 6 < X <= 8 1, 3, 6, X, 8, 10 8 < X <= , 3, 6, 8, X, 10 X > , 3, 6, 8, 10, X

8 İşlemli Soru Örnekleri
Süreçler ve çalışma süreleri tabloda verilmektedir. Bütün süreçler başlangıçta nümerik sırayla işlemciye gelmektedir. Bu süreçlerin 3 yöntemle zamanlanmasını, kuyrukta bekleme ve tamamlanma sürelerini 0,5 değiştirme süresi hariç ve dahil olarak tabloda gösteriniz. FIFO/FCFS: İlk gelen ilk çıkar SRTF: En az kalan tamamlanma süresi RR: Quantum = 1 ile Çevrimsel sıralı (Round Robin) Süreç CPU Çalışma Zamanı Süreç 1 2 Süreç 2 6 Süreç 3 1 Süreç 4 4 Süreç 5 3 Zaman Dilimi FIFO SRTF RR 1 2 3

9 Çözüm (Zamanlama) Zaman Dilimi FIFO SRTF RR 1 3 2 5 4 6 7 8 9 10 11 12
1 3 2 5 4 6 7 8 9 10 11 12 Zaman Dilimi FIFO SRTF RR 13 5 2 4 14 15

10 Çözüm (Bekleme/Tamamlanma)
Zamanlayıcı Süreç 1 Süreç 2 Süreç 3 Süreç 4 Süreç 5 FIFO bekleme 2 8 9 13 FIFO tamamlanma 16 SRTF bekleme 1 10 6 3 SRTF tamamlanma RR bekleme 4 RR tamamlanma 14 12 Değişim Zamanı Hariç Zamanlayıcı Süreç 1 Süreç 2 Süreç 3 Süreç 4 Süreç 5 FIFO bekleme 2,5 9 10,5 15 FIFO tamamlanma 2 8,5 10 14,5 18 SRTF bekleme 1,5 12 7,5 4 SRTF tamamlanma 3,5 1 11,5 7 RR bekleme 6,5 17,5 3 16,5 RR tamamlanma 23,5 20,5 Değişim Zamanı Dahil

11 Kod Tamamlama Örneği Sistemin mevcut durumunu değerlendirip güvenli olup olmadığını belirtmek istenmektedir. Bunun için sistem kaynaklarını takip eden şu veri yapıları verilmektedir. class SerbestKaynaklar { int SerbestKayA, SerbestKayB; // Serbest kaynakların sayısı } /* İplik kaynakları sınıfı*/ class IplikKaynaklari { int MaxIhtiyacA, MaxIhtiyacB; // İhtiyaç duyulan max. kaynak kopya sayısı int MesKayA, MesKayB; // Meşgul edilen kaynak sayısı } IplikKaynaklari[] ThreadRes; Bu yapılara sistemin mevcut durumunu yansıtacak şekilde ilk değer verilmektedir. Güvenlik kontrolü için de şöyle bir fonksiyon tanımlıdır. 1. boolean GuvenliMi(SerbestKaynaklar SerbestKay, IplikKaynaklari[] ThreadRes) { 2. int FreeA = SerbestKay.SerbestKayA, FreeB = SerbestKay.SerbestKayB; 3. boolean[] IplikBittiMi = new boolean[ThreadRes.length]; 4. int KalanIplikler = ThreadRes.length; 5. boolean bitti = false; 6. while (!bitti) { bitti = true; for (int i = 0; i < ThreadRes.length; i++) { if (!IplikBittiMi[i]) { /* Eksik Kod */ }}} return (KalanIplikler == 0); /* Hiç iplik kalmadıysa GÜVENLİ */} 10. satırda belirtilen eksik kısmı tamamlayınız.

12 Çözüm if ((ThreadRes[i].MaxIhtiyacA – ThreadRes[i].MesKayA) <= FreeA)&& (ThreadRes[i].MaxIhtiyacB – ThreadRes[i].MesKayB) <= FreeB)){ IplikBittiMi[i] = true; bitti = false; FreeA += ThreadRes[i].MesKayA; FreeB += ThreadRes[i].MesKayB; KalanIplikler -= 1; }

13 İşlemli Soru Örneği P1, P2, P3 ve P4 şeklinde 4 süreç ve R1,R2 şeklinde iki kaynaklı bir sistem verilmektedir. Her kaynağın iki kopyası vardır. P1, R2’ nin bir kopyasını tahsis etmiş ve R1’ den bir kopya istemektedir. P2, R1’ in bir kopyasını tahsis etmiş ve başka kaynak istememektedir. P3, R1’ in bir kopyasını tahsis etmiş ve R2’ den bir kopya istemektedir. P4, R2’ nin bir kopyasını tahsis etmiş ve başka kaynak istememektedir. Kaynak tahsis çizgesini çiziniz, çizgede döngü varsa belirtiniz. Sistem kilitlenmişse sebebini belirtiniz, değilse her süreç tamamlandıktan sonra bir çalıştırma sırası veriniz.

14 Çözüm Döngü vardır. P2 ve P4 çalışmaktayken, P1 R1’i beklemekte, P3 de R2’yi beklemektedir. Sistemde kilitlenme yoktur, çünkü P2 bitince R1’i serbest bırakır. P4 bitince R2’yi serbest bırakır. P1 R1’i elde eder, işini bitirir ve kaynaklarını bırakır. P3 R2’yi elde eder ve işini bitirir.

15 Kod Sorusu Örneği Aşağıdaki program çalıştırıldığında ekrana kaç kez Merhaba yazacaktır? #include <stdio.h> #include <unistd.h> int main(void) { int i; for (i=0; i<3; i++) fork(); printf("Merhaba\n"); }

16 Çözüm Döngünün ilk iterasyonundaki fork() çağrısı yeni bir süreç oluşturur. Bir sonraki iterasyonda anne ve çocuk süreçler fork() çağrısıyla ayrı ayrı süreçler oluşturacak ve toplamda 4 süreç oluşacaktır. Son iterasyonda bu 4 sürecin her biri yine fork() çağıracak ve döngüden çıkıldığında toplam 8 süreç oluşacaktır. Her süreç printf() fonksiyonunu çağıracak ve ekrana 8 defa Merhaba yazılacaktır. Burada dikkat edilmesi gereken, süreçlerin oluşturulmasından sonra printf() fonksiyonunun çağrılmasıdır. Döngü içinde de printf() çağrılsaydı sonuç farklı olurdu.

17 Kod Sorusu Örneği Aşağıdaki program çalıştırıldığında ekrana kaç kez Merhaba yazacaktır? #include <stdio.h> #include <unistd.h> int main(void) { int i; for (i=0; i<3; i++){ execl("/bin/echo", "echo", "Merhaba", 0); }

18 Çözüm execl() çağrısı /bin/echo programını yükleyerek çalışan süreci bu programla değiştirecektir. /bin/echo farklı bir program olduğu için mevcut sürecin for döngüsünden çıkılacaktır. Dolayısıyla ekrana sadece 1 kez Merhaba yazılacaktır.

19 İşlemli Soru Örneği Bir sistemde çalışan 5 süreç ve 4 kaynağın kullanımına ilişkin bilgiler tabloda verilmektedir. Süreçlerin tamamlanabileceği bir durum göstererek sistemin güvenli durumda olduğunu gösteriniz. P1 sürecinin (1,1,0,0) şeklindeki kaynak talebi anında karşılanabilir mi? Tahsis Edilen Toplam İhtiyaç Verilebilir A B C D P0 P1 P2 P3 P4

20 Çözüm Her bir sürecin ihtiyaç duyduğu kaynaklara bakalım.
Tahsis Edilen Kalan İhtiyaç Verilebilir A B C D P0 P1 P2 P3 P4 Her bir sürecin ihtiyaç duyduğu kaynaklara bakalım. Kalan İhtiyaç = Toplam İhtiyaç – Tahsis Edilen Kalan ihtiyaç sütunu değerlendirildiğinde, P0 süreci verilebilir kaynaklarla sonlanabilir. P0 sonlandığında elindeki kaynaklar serbest kalacak ve verilebilir kaynaklar A=5 B=3 C=2 D=2 olacaktır. Ardından P3 süreci de verilebilir kaynaklarla sonlandırılabilir. Verilebilir kaynaklar A=9 B=7 C=5 D=5 olacaktır. Bu noktadan sonra kalan süreçler herhangi bir sırayla sonlandırılabilir. Dolayısıyla <P0, P3, P1, P2, P4> güvenli sırasıyla sistem güvenlidir.

21 Çözüm Tahsis Edilen Toplam İhtiyaç Verilebilir A B C D P0 P1 P2 P3 P4 P1 sürecinin (1,1,0,0) kaynak talebi karşılandığında P0 kalan kaynaklarla sonlandırılabilir. Ardından P1 serbest kalan kaynaklar ve verilebilir kaynaklarla sonlandırılabilir. Ardından P2 serbest kalan kaynaklar ve verilebilir kaynaklarla sonlandırılabilir. Ardından P3 serbest kalan kaynaklar ve verilebilir kaynaklarla sonlandırılabilir. Ardından P4 serbest kalan kaynaklar ve verilebilir kaynaklarla sonlandırılabilir. Sistem güvenli durumdan çıkmayacağı için P1’ in kaynak talebi anında karşılanabilir.

22 Kod Sorusu Örneği Senkronizasyon için bariyer oluşturmak sıklıkla kullanılan bir yöntemdir. Bir bariyer çağrılan ipliği N sayıda ipliğin hepsi bariyere ulaşana kadar bloklayan bir yapıdır. Böyle bir bariyeri monitör kullanarak kodlayınız.

23 Çözüm int count = 0; monitor void barrier(int processid) { if(++count != N) { Condition.Wait(HerkesBariyereUlasti); } else { Condition.Broadcast(HerkesBariyereUlasti); }


"Vize Öncesi." indir ppt

Benzer bir sunumlar


Google Reklamları