YZM 3102 İşletim Sistemleri

Benzer belgeler
YZM 3102 İşletim Sistemleri Uygulama

YZM 3102 İşletim Sistemleri

Bölüm 6: İşlem Senkronizasyonu (1) Operating System Concepts with Java 8 th Edition

Bölüm 5: Süreç Senkronizasyonu

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

YZM 3102 İşletim Sistemleri Uygulama

İşletim Sistemleri (Operating Systems)

Multicore/Multithread Programlama

Prosesler Arası Haberleşme ve Senkronizasyon

İşletim Sistemlerine Giriş

İŞLETİM SİSTEMLERİ DÖNEMİÇİ SINAVI

YZM 2116 Veri Yapıları

Bölüm 7: Kilitlenme (Deadlocks)

Dağıtık Sistemler CS5001

CENG/BILM 341 FINAL REVIEW. Dr. Esma Yıldırım

YZM 3102 İşletim Sistemleri

ALGORİTMA VE PROGRAMLAMA II

İş Parçacıkları Thread(s)

YZM 2116 Veri Yapıları

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

YZM 2116 Veri Yapıları

YZM 3102 İşletim Sistemleri

ALGORİTMA VE PROGRAMLAMA II

YZM 2116 Veri Yapıları

YZM 3215 İleri Web Programlama

ALGORİTMA VE PROGRAMLAMA II

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

YZM 2105 Nesneye Yönelik Programlama

Görsel Programlama DERS 11. Görsel Programlama - Ders11/ 1

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I

İş Parçacıkları (Threads)

İŞLETİM SİSTEMLERİ. (Operating Systems)

ALGORİTMA VE PROGRAMLAMA II

Bilgisayar İşletim Sistemleri BLG 312

İşletim Sistemleri (COMPE 431) Ders Detayları

YZM 2105 Nesneye Yönelik Programlama

ALGORİTMA VE PROGRAMLAMA II

YZM 3102 İşletim Sistemleri

YZM 2105 Nesneye Yönelik Programlama

ve Senkronizasyon Senkronizasyon Eş Zamanlılık Sorunlar Sorunlar Çözüm Örnek

İşletim Sistemleri-II

Bölüm 5: İşlemci Zamanlaması. Operating System Concepts with Java 8 th Edition

Giriş. İplik Modeli. geleneksel işletim sistemlerinde her prosesin özel adres uzayı ve tek akış kontrolü var.

Dağıtık Sistemler CS5001

Bölüm 6: İşlem Senkronizasyonu (2) Operating System Concepts with Java 8 th Edition

Giriş. geleneksel işletim sistemlerinde her prosesin. aynı adres uzayında birden fazla akış kontrolü gerekebilir

İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık İşletim Sistemleri

YZM 3215 İleri Web Programlama

YZM 2116 Veri Yapıları

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

İleri İşletim Sistemleri (COMPE 531) Ders Detayları

İleri İşletim Sistemleri (COMPE 531) Ders Detayları

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

YZM 2116 Veri Yapıları

BİL-142 Bilgisayar Programlama II

Bölüm 7: Kilitlenmeler. Operating System Concepts with Java 8 th Edition

KARADENİZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR AĞLARI LABORATUARI. Soket Programlama

İşletim Sistemlerine Giriş

Mühendislik ve Bilgisayar Bilimleri Fakültesi Elektrik-Elektronik Mühendisliði

İşletim Sistemleri (Operating Systems)

İşletim Sistemleri (Operating Systems)

YZM 2105 Nesneye Yönelik Programlama

ALGORİTMA VE PROGRAMLAMA II

YZM 3215 İleri Web Programlama

Multithreading & Asynchronous Programlama

ALGORİTMA VE PROGRAMLAMA I

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Nesne Yönelimli Programlama

Çok işlemli (multitasking) sistemlerde işlemler (process) kısıtlı kaynakları kullanmak zorundadırlar.

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Yapay Zekâ Dersi. Final Soruları A KİTAPÇIĞI. Güz,

YZM 3102 İşletim Sistemleri

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

KONTROL YAPILARI JAVADA UC TURLU KONTROL YAPISI VARDIR BUNLAR İF ELSE İF ELSE İF SWİTCH YAPILARIDIR. IF ELSE YAPISI if (deger) { }else {

Mühendislik ve Bilgisayar Bilimleri Fakültesi Bilgisayar Mühendisliði

Süreç 1 Kavramı ve Oluşturma Yöntemleri

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1

MOBIL UYGULAMA GELIŞTIRME

İşletim Sistemlerine Giriş

YZM 2108 Yazılım Mimarisi ve Tasarımı

Jval tipi. Genel veri yapılarını kullanacağımız zaman Jval den faydalanırız.önemli olanlar aşağıda mevcuttur:

Windows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir.

YZM 3215 İleri Web Programlama

Ölümcül Kilitlenme- Deadlock

İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık İşletim Sistemleri

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

void setup() fonksiyonu: Bu fonksiyon program ilk açıldığında bir kere çalışır ve gerekli kalibrasyon, setup komutlarını buraya yazarız.

ALGORİTMA VE PROGRAMLAMA I DERS#1

Bilgisayar İşletim Sistemleri BLG 312

ALGORİTMA VE PROGRAMLAMA I

Programlama Giriş. 17 Ekim 2015 Cumartesi Yrd. Doç. Dr. Mustafa YANARTAŞ 1

Montoya

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

Yazılım Mühendisliğine Giriş 2018 GÜZ

Ölümcül Kilitlenme. Ölümcül Kilitlenme Örneği - 1

Nesne Yönelimli Programlama

Transkript:

YZM 3102 İşletim Sistemleri Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği

BÖLÜM 6.2 Bu bölümde, Mutex ve Semafor Farkları Klasik Senkronizasyon Problemleri ve Çözümleri Producer/Consumer Reader/Writer Dining Philosopher Monitörler konularına değinilecektir. 2

Mutex ve Semafor Farkları Semaphore mutex'in aksine senkronize erişimi tamamen bekletmek değil (busy waiting), sınırlandırmak için kullanılır. Örneğin, sınırlı bir kaynağımız var, aynı anda 5 thread'in erişimi sistem için sorun olmuyor ama 5'ten fazla thread tarafından o kaynak kullanılmak istendiğinde performans sorunu yaşanıyor. Dolayısıyla kodun o bölümünü bütün thread'lerin erişimine açmak istemiyoruz. Bu durumda sayaçlı bir lock mekanizmasına ihtiyacımız var. İşte o mekanizmanın adı Semaphore. 3

Mutex ve Semafor Farkları (devam ) Mutex'i sadece kilitleyen thread/proses kilidi kaldırabiliyorken semaphore üzerindeki kilidi herhangi bir thread/proses kaldırabilir. Diğer bir deyişle semaphore'un sahibi yoktur. Semaphore lock etmiş herhangi bir thread tarafından da unlock edilebilir. Mutex ise sadece lock etmiş thread tarafından unlock edilebilir. 4

.NET Semafor Örneği Busy Waiting Kaynağımıza sadece iki thread/prosesin erişimine izin verecek kilit mekanizması oluşturalım. 5

.NET Semafor Örneği (devam ) Başlangıç değeri: 2 Maks. thread erişim değeri: 2 Semafor adı: «Semtest» Semafor değ. 1 azalt Semafor değ. 1 arttır 6

.NET Semafor Örneği (devam ) Sonuç 7

Klasik Senkronizasyon Problemleri Klasikleşmiş üç tane senkronizasyon problemi üzerinde çalışılacaktır. 1. The Producer-Consumer Problem 2. The Readers Writers Problem 3. The Dining-Philosophers Problem 8

Producer-Consumer Problemi Semafor kullanarak, problemi sınırlı buffer durumunda çözmeye çalışalım Üretici ve tüketici birer proses olarak yaratılmaktadır. Burada 3 önemli kısıtlama vardır: Buffer a aynı anda sadece bir proses erişebilir (mutual exclusion). Bu amaçla mutex isimli ikili semafor kullanılacaktır. Eğer Buffer boş ise tüketici, üreticinin Buffer a veri girmesini bekler. Üretici ve tüketici empty isimli semaforu senkronizasyon amacıyla kullanacaklardır. Eğer Buffer dolu ise üretici, tüketicin Buffer dan veri almasını bekler. Üretici ve tüketici full isimli semaforu senkronizasyon amacıyla kullanacaklardır. 9

Producer-Consumer Problemi (devam ) # define N 100 # define TRUE 1 typedef int semaphore; semaphore mutex = 1; semaphore empty = N; semaphore full = 0; producer() { int item; while (TRUE) { produce_item(&item); wait(empty); wait(mutex); enter_item(item); signal(mutex); signal(full); } / * Buffer daki eleman sayısı */ / * Semaforlar int bir tür olarak tanımlanıyor */ / * kritik kısmı karşılıklı dışlamak */ / * Buffer daki boş yer sayısı */ / * Buffer daki dolu yer sayısı */ / * yerel değişken */ / * Buffer a konulacak veri oluşturuluyor */ / * Buffer dolu ise bekle yoksa bos yer sayısını 1 azalt */ / * Kritik kısma girebilmek için vize al */ / * Veriyi Buffer a gir (Kritik Kısım) */ / * Kritik Kısımdan çıktığını belirt */ / * Bekleyen tüketici varsa uyandır yoksa Buffer daki */ / * dolu yer sayısını 1 arttır */ } consumer(){ int item; while (TRUE) { wait(full); wait(mutex); remove_item(&item); signal(mutex); signal(empty); } } consume_item(item); / * yerel değişken */ / * Buffer boş ise bekle yoksa dolu yer sayısını 1 azalt */ / * Kritik kısma girebilmek için vize al */ / * Veriyi Buffer dan al (Kritik Kısım) */ / * Kritik Kısımdan çıktığını belirt */ / * Bekleyen üretici varsa uyandır yoksa Buffer daki */ / * dolu boş sayısını 1 arttır */ / * Buffer dan alınan veriyi kullan */ 10

Producer-Consumer Problemi (devam ) Paylaşılan: semaforlar: mutex, empty, full; mutex = 1; /* for mutual exclusion*/ empty = N; /* number empty buf entries */ full = 0; /* number full buf entries */ Producer do {... // produce an item in nextp... wait(empty); wait(mutex);... // add nextp to buffer... signal(mutex); signal(full); } while (true); Consumer do { wait(full); wait(mutex);... // remove item to nextc... signal(mutex); signal(empty);... // consume item in nextc... } while (true); 11

Prod.-Cons. Problemi C Çözümü Global Tanımlar 12

Prod.-Cons. Problemi C Çözümü (devam ) main() 13

Prod.-Cons. Problemi C Çözümü (devam ) Producer 14

Prod.-Cons. Problemi C Çözümü (devam ) Consumer 15

Readers-Writers Problemi Bir veri tabanının birden fazla proses tarafından paylaşıldığını varsayalım. Bazı prosesler, verileri sadece okumak isterken, Diğerleri veriler üzerinde değişiklik yapmak isteyeceklerdir. (Readers ve Writes) İki işlem, aynı anda okuma yapmak isterse problem oluşmaz fakat, bir writer, reader ya da writer ile aynı anda veriye erişir ise problem oluşabilir. Bu problemin önüne geçmek için writer prosesler erişimde ayrıcalıklı olmalıdır. Bu senkronizasyon problemi Readers/Writers olarak adlandırılır. 16

Readers-Writers Problemi (devam ) Readers/Writers Problemi (2 problem): o Problem 1: reader proses beklemez iken, writer proses, veri üzerinde işlem yapmak için izin istemek zorundadır. o Problem 2: Eğer bir writer veriye erişmek için bekliyorsa, hiçbir yeni reader okuma işlemine başlayamaz. İki şekilde de reader ve writer işlemler beklemek (starvation) zorunda kalacaklardır. İlk problemde writer prosesler gecikebilir. İkinci problemde reader prosesler gecikebilir. 17

Readers-Writers Problemi (devam ) Writer Proses 18

Readers-Writers Problemi (devam ) do { Reader Proses wait(mutex) : reader mutex üzerinde bekliyor read_count++: okuma yapmak isteyen proc sayısı if (read_count==1) :ilk reader ise wait(rw_mutex); :1 reader bekliyor signal(mutex)... //okuma işlemini yap... wait(mutex) : n-1 reader mutex üzerinde bekliyor read_count--: 1 reader okuma işlemini bitirdi if (read_count==0 ) signal(rw_mutex) signal(mutex) }while (true); :son reader ise 19

Readers-Writers Problemi C Çözümü Global Tanımlar 20

Readers-Writers Problemi C Çözümü main() 21

Readers-Writers Problemi C Çözümü Writer Proses 22

Readers-Writers Problemi C Çözümü Reader Proses 23

The Dining-Philosophers Problem 5 filozof bulunmaktadır. İşleri düşünmek ve pirinç yemektir. 5 sandalye, 5 tabak ve 5 çubuk bulunmaktadır. 1 filozof 2 çubukla yemek yiyebilir. Filozoflar düşünürken birbirlerinden etkilenmezler. 24

The Dining-Philosophers Problem (devam ) 1 filozof yerken, en az bir komşusunun çubuğunu kullanır. O arada komşusu düşünmek zorundadır. İki çubuğu ele geçiren filozof ara vermeden yemeğini yer, çubukları bırakır ve düşünmeye devam eder. Basit çözümde her çubuk semafor ile temsil edilir. Bir filozof çubuk üzerinde wait operasyonunu işleterek çubuğu yani semaforu ele geçirir. Aynı şekilde çubukları signal operasyonu ile bırakır. Hepsi aynı anda sol ellerine sol taraftaki çubukları alırlarsa hepsi sonsuza dek aç kalır. Çözüm için : Aynı anda en fazla 2 filozofun masaya oturmasına izin verilebilir. Bir filozofun yemek yemeye başlamasına sadece her iki çubuk da boş mu diye bakılır. Boşsa izin verilebilir. Tek filozoflara yemek yedirilir. Çiftlere yedirilmez gibi çözümler türetilebilir. 25

The Dining-Philosophers Problem (devam ) Senkronizasyon olmadan genel sözde kod. 26

The Dining-Philosophers Problem (devam ) Semafor çözümü. 27

The Dining-Philosophers Problem (devam ) Semafor çözümü. 28

The Dining-Philosophers C Çözümü Global Tanımlar 29

The Dining-Philosophers C Çözümü Hazırlık

The Dining-Philosophers C Çözümü Filizoflar

Monitörler İzleyici Programlardır. Senkronizasyonda doğru programların yazılmasını kolaylaştırmak adına Brinch Hansen (1973) ve Hoare (1974) yüksek seviyeli senkronizasyon yapıları geliştirmişlerdir. Monitör programları paylaşılan nesneye ulaşmada meydana gelebilecek problemleri ortadan kaldırmaya yönelik geliştirilmiştir. Paylaşılan nesneyi oluşturan veri, o Bu nesneye ulaşmak için kullanılan bir grup prosedür, o Nesneyi başlangıç konumuna getiren bir program parçasından oluşmaktadır. 32

Monitörler (devam ) Semafor ile senkronizasyon çözümleri, zamana bağlı hatalar nedeni ile yetersiz olabilir. Bir prosesin wait() ve signal() sırasını değiştirmesinden dolayı birden fazla proses aynı anda kritik kısımlarına girerler. Bir proses signal() ve wait() yer değiştirir ise deadlock oluşur. 33

Monitörler (devam ) Bu hataların önüne geçmek için yüksek seviyeli programlama yapıları geliştirilmiştir. Örneğin monitör kilidi herhangi bir C++ sınıfından gerçekleştirilecek bir yordam çağrımıyla otomatik olarak elde edilir. Monitor bir kilittir, ve 0 veya daha fazla sayıda koşul değişkeninin ortaklaşa kullanılan veri veya kaynaklara paralel erişimi koordine etmek maksadıyla kullanılmaktadır. Semaforlar monitörlere nazaran sisteme daha yakın yapılardır ve karşılıklı dışlama ve senkronizasyon amaçlı çift yönlü kullanılırlar. Bu sebeple semaforlarla kod yazmak daha fazla detayla uğraşmayı gerektirir. Yazılan kodun okunması ve doğru olarak ne yapıldığının anlaşılması daha güçtür. 34

Monitörler (devam ) Monitörde herhangi bir zamanda sadece tek bir proses aktif olabilir. Bu da monitörleri, karşılıklı dışlama probleminde etkin kılar. Monitör programları: wait ve signal işlemleri yanlış gerçekleştirildiğinde oluşan sistem kilitlenmelerini engeller. Semaforlarla işlemler arası kombinasyonu sağlarlar. wait-signal işlemleri arasındaki kombinasyonu sağlarlar. 35

Dining Philosophers Monitor Çözümü 36

Dining Philosophers.NET Monitor Çözümü Filozof Sınıfı Bölüm 1 37

Dining Philosophers.NET Monitor Çözümü Filozof Sınıfı Bölüm 2 38

Dining Philosophers.NET Monitor Çözümü FilozofWork Sınıfı 39

Dining Philosophers.NET Monitor Çözümü Filozof Test 40

İYİ ÇALIŞMALAR 41

Yararlanılan Kaynaklar Ders Kitabı: Operating System Concepts, Ninth Edition, Abraham Silberschatz, Peter Bear Galvin, Greg Gagne Yardımcı Okumalar: İşletim Sistemleri, Ali Saatçi Şirin Karadeniz, Ders Notları İbrahim Türkoğlu, Ders Notları M. Ali Akcayol, Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü http://www.albahari.com/threading/ 42