Vize Öncesi.

Slides:



Advertisements
Benzer bir sunumlar
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Advertisements

Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
SAYISAL DEVRELER BÖLÜM-2 Sayı Sistemleri ve Kodlar
Bağımsız Denetim ile Vergi Denetimi Arasındaki Geçişler
T.C. ORDU VALİLİĞİ İlköğretim Müfettişleri Başkanlığı TAM ÖĞRENME MODELİ TAM ÖĞRENME MODELİ.
BÖLÜM 1 TEMEL KAVRAMLAR. BÖLÜM 1 TEMEL KAVRAMLAR.
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Hopfield Ağı Ayrık zamanSürekli zaman Denge noktasının kararlılığı Lyapunov Anlamında kararlılık Lineer olmayan sistemin kararlılığı Tam Kararlılık Dinamik.
Arş.Gör.İrfan DOĞAN.  Bugün otizm tedavisinde en önemli yaklaşım, özel eğitim ve davranış tedavileridir.  Tedavi planı kişiden kişiye değişmektedir,
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
Öğretim  Öğrenci gelişimini amaçlayan, öğrenmenin başlatılması, sürdürülmesi ve gerçekleştirilmesi için düzenlenen planlı etkinliklerden oluşan bir süreçtir.
BSE 207 Mantık Devreleri Sayı sistemleri Sakarya Üniversitesi.
OLASILIK TEOREMLERİ Permütasyon
9. HAFTA 25 Nisan2016. Fonksiyon M-Dosyaları Fonksiyon dosyaları ilk satırda “function” kelimesi bulunan “.m” uzantısı bulunan dosyalardır. MATLAB içinde.
EQUIZSHOW.
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
ÇOK BOYUTLU SİNYAL İŞLEME
YÖNLENDİRME. Yönlendirme ● Statik ● Dinamik ● Kaynakta yönlendirme ● Hop by hop yönlendirme.
Bölüm 2 C Dilinin Temelleri
Açlığını Gider Detaylı Kullanım Kılavuzu
BİLGİSAYAR PROGRAMLAMA DERSİ
SAYILAR ve RAKAMLAR.
Excel 2007.
İndeksi Niçin Kullanırız?
C Programlama Dili Çağdaş Hakan Aladağ.
Algoritma ve Programlamaya Giriş
PROGRAMLI ÖĞRETİM Tanımı:
T- Testİ: ORTALAMALAR ARASI FARKLARIN TEST EDİLMESİ
Tüm ikililer arasında en kısa yollar
NOT VERME VE MEZUNİYET.
C Programlama Yrd.Doç.Dr. Ziynet PAMUK BMM211-H05
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı
BİLİŞİM SİSTEMLERİ GÜVENLİĞİ (2016)
VELİLER İÇİN ANKET GİRİŞİ
ZEE ZİHİN ENGELLİLERE BECERİ VE KAVRAM ÖĞRETİMİ
ÖZ GELİRLER.
Bilgisayar Mühendisliğine Giriş
Hayvancılık İşletmelerinde Yönetim Prensipleri
PARAMETRİK HİPOTEZ TESTLERİ
BİLGİSAYAR programlama II
İşletim Sistemleri (Operating Systems)
İleri Algoritma Analizi
Benzetim 11. Ders İmalat Yönetimde Benzetim.
Prof. Dr. Eşref ADALI Doç. Dr. Şule Gündüz Öğüdücü Sürüm-B
B+-Ağaçları.
TEKNOLOJİ VE TASARIM DERSİ 7.D.1. Özgün Ürünümü Tasarlıyorum.
Algoritmalar II Ders 12 DFS algoritması. Kirişlerin sınıflandırılması. Topolojik Sıralama.Kuvvetli bağlantılı bileşenler.
GÖRÜŞME İLKE VE TEKNİKLERİ Sağlık Bilimleri Fakültesi
Evren-Örneklem, Örnekleme Yöntemleri 2
Algoritmalar II Ders 13 Çizgelerde tüm ikililer arasında en kısa yollar.
Projenin sonlandırılması
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Koşullu Durumlar.
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
Değerler ve Değişkenler
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
İleri Algoritma Analizi
RASTGELE DEĞİŞKENLER Herhangi bir özellik bakımından birimlerin almış oldukları farklı değerlere değişken denir. Rastgele değişken ise tanım aralığında.
İnsan Kaynakları Yönetiminin
Çizge Algoritmalari 6. ders.
Bilimsel araştırma türleri (Deneysel Desenler)
Sunum transkripti:

Vize Öncesi

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)

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

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Ş

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Ş

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

İş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 <= 1 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 <= 10 1, 3, 6, 8, X, 10 X > 10 1, 3, 6, 8, 10, X

İş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 …

Çö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

Çö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

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) { 7. bitti = true; 8. for (int i = 0; i < ThreadRes.length; i++) { 9. if (!IplikBittiMi[i]) { 10. /* Eksik Kod */ ... }}} return (KalanIplikler == 0); /* Hiç iplik kalmadıysa GÜVENLİ */} 10. satırda belirtilen eksik kısmı tamamlayınız.

Çö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; }

İş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.

Çö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.

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"); }

Çö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.

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); }

Çö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.

İş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 2 0 0 1 4 2 1 2 3 3 2 1 P1 3 1 2 1 5 2 5 2 P2 2 1 0 3 2 3 1 6 P3 1 3 1 2 1 4 2 4 P4 1 4 3 2 3 6 6 5

Çözüm Her bir sürecin ihtiyaç duyduğu kaynaklara bakalım. Tahsis Edilen Kalan İhtiyaç Verilebilir A B C D P0 2 0 0 1 2 2 1 1 3 3 2 1 P1 3 1 2 1 2 1 3 1 P2 2 1 0 3 0 2 1 3 P3 1 3 1 2 0 1 1 2 P4 1 4 3 2 2 2 3 3 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.

Çözüm Tahsis Edilen Toplam İhtiyaç Verilebilir A B C D P0 2 0 0 1 4 2 1 2 2 2 2 1 P1 4 2 2 1 5 2 2 2 P2 2 1 0 3 2 3 1 6 P3 1 3 1 2 1 4 2 4 P4 1 4 3 2 3 6 6 5 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.

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.

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