Görevler Arası Zamanuyumlama



Benzer belgeler
Görevler Arası Zamanuyumlama

B02.8 Bölüm Değerlendirmeleri ve Özet

İşletim Sisteminin Katmanları

MAKÜ YAZ OKULU YARDIM DOKÜMANI 1. Yaz Okulu Ön Hazırlık İşlemleri (Yaz Dönemi Oidb tarafından aktifleştirildikten sonra) Son aktif ders kodlarının

Genel bilgiler Windows gezgini Kes Kopyala Yapıştır komutları. 4 Bilinen Dosya Uzantıları

ÖĞRENME FAALĠYETĠ GELĠġMĠġ ÖZELLĠKLER

SÜREÇ YÖNETİMİ VE SÜREÇ İYİLEŞTİRME H.Ömer Gülseren > ogulseren@gmail.com

YÖNETMELİK ANKARA ÜNİVERSİTESİ YABANCI DİL EĞİTİM VE ÖĞRETİM YÖNETMELİĞİ BİRİNCİ BÖLÜM. Amaç, Kapsam, Dayanak ve Tanımlar

ÖZEL İLETİŞİM VERGİSİ GENEL TEBLİĞİ (SERİ NO: 14) BİRİNCİ BÖLÜM Amaç, Kapsam ve Dayanak

BÖLÜM 7 BİLGİSAYAR UYGULAMALARI - 1

OPERATÖRLER BÖLÜM Giriş Aritmetik Operatörler

1 OCAK 31 ARALIK 2009 ARASI ODAMIZ FUAR TEŞVİKLERİNİN ANALİZİ

KOOPERATİFLER HAKKINDA BİLMEK İSTEDİKLERİNİZ:

MADDE 3 (1) Bu Yönetmelik, 4/11/1981 tarihli ve 2547 sayılı Yükseköğretim Kanununun 14 ve 49 uncu maddelerine dayanılarak hazırlanmıştır.

HİZMET ALIMLARINDA FAZLA MESAİ ÜCRETLERİNDE İŞÇİLERE EKSİK VEYA FAZLA ÖDEME YAPILIYOR MU?

Modem ve Yerel Ağ Kullanım Kılavuzu

KALÇA VE ALT EKSTREMİTE KIRIK ÇIKIK VE BURKULMALARI Hazırlayan NESLİHAN GÖÇMEN

TS7200 PLATFORMU ÜZERİNDE SERİ PORT-ETHERNET DÖNÜŞTÜRÜCÜ UYGULAMASI

2008 YILI MERKEZİ YÖNETİM BÜTÇESİ ÖN DEĞERLENDİRME NOTU

Kalite Güvence ve Standartları

Cümlede Anlam İlişkileri

İSTANBUL KEMERBURGAZ ÜNİVERSİTESİ. ÇİFT ANADAL ve YANDAL PROGRAMI YÖNERGESİ

BÖLÜM 9. Sayıcılar, S7 200 CPU serilerinde C ile gösterilir. Sayıcılar, S7 200 CPU serilerinde: Yukarı sayıcı (Counter up CTU ),

ve Menüleri Özelleştirmek, Sistem Ayarlarını Değiştirmek

SÜRE BİLİŞİM TEKNOLOJİLERİ ÜNİTE 1: : BİLGİ VE TEKNOLOJİ DERS SAATİ: 7

VEZNE PROGRAMINDA POSTA ÜCRETİ İLE İLGİLİ YAPILAN DÜZENLEMELER (Vezne Sürüm: )

YÜKSEKÖĞRETİM KURUMLARI ENGELLİLER DANIŞMA VE KOORDİNASYON YÖNETMELİĞİ (1) BİRİNCİ BÖLÜM. Amaç, Kapsam, Dayanak ve Tanımlar

SİRKÜLER. 1.5-Adi ortaklığın malları, ortaklığın iştirak halinde mülkiyet konusu varlıklarıdır.

B05.11 Faaliyet Alanı

ANALOG LABORATUARI İÇİN BAZI GEREKLİ BİLGİLER

ÖZEL İLETİŞİM VERGİSİ GENEL TEBLİĞİ (SERİ NO: 14) BİRİNCİ BÖLÜM

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR SİSTEMLERİ LABORATUARI YÜZEY DOLDURMA TEKNİKLERİ

int printf (const char *format [, argument,...]);

Türkiye Ekonomi Politikaları Araştırma Vakfı Değerlendirme Notu Sayfa1

Üç-fazlı 480 volt AC güç, normalde-açık "L1", "L2" ve "L3" olarak etiketlenmiş vida bağlantı uçları yoluyla kontaktörün tepesinde kontak hale gelir

Topoloji değişik ağ teknolojilerinin yapısını ve çalışma şekillerini anlamada başlangıç noktasıdır.

Setup Yardımcı Programı

SAKARYA ÜNİVERSİTESİ LİSANS DÜZEYİNDEKİ PROGRAMLAR ARASINDA ÇİFT ANADAL (ÇAP) ve YANDAL PROGRAMI YÖNERGESİ

Mikrodenetleyici Tabanlı, Otomatik Kontrollü Çöp Kamyonu Tasarımı

OYUN GELİŞTİRME AŞAMALARI-I. Oyununuzun senaryosunu kısaca tanıtınız/ amacınıda belirtiniz:

ETKİLEŞİMLİ TAHTA KORUMA SİSTEMİ KURULUM

Kişisel Bilgiler ve Kişisel olmayan bilgiler Kişisel bilgiler sizi bir birey olarak tanımlayan veya tanımlanmanızı sağlayan bilgilerdir.

OTOMATİK TRANSMİSYONLAR

Başbakanlık (Hazine Müsteşarlığı) tan:

İSTANBUL ( ). İDARE MAHKEMESİ BAŞKANLIĞI NA GÖNDERİLMEK ÜZERE ANKARA İDARE MAHKEMESİ BAŞKANLIĞI NA. : TMMOB Şehir Plancıları Odası (İstanbul Şubesi)

GAZİOSMANPAŞA ÜNİVERSİTESİ YAZ OKULU YÖNERGESİ BİRİNCİ BÖLÜM

KAMU İHALE KANUNUNA GÖRE İHALE EDİLEN PERSONEL ÇALIŞTIRILMASINA DAYALI HİZMET ALIMLARI KAPSAMINDA İSTİHDAM EDİLEN İŞÇİLERİN KIDEM TAZMİNATLARININ

KAVRAMLAR. Büyüme ve Gelişme. Büyüme. Büyüme ile Gelişme birbirlerinden farklı kavramlardır.

MADDE 2 (1) Bu Yönerge, 2547 sayılı Yükseköğretim Kanunu ve değişiklikleri ile İzmir Üniversitesi Ana Yönetmeliği esas alınarak düzenlenmiştir.

MUSTAFA KEMAL ÜNİVERSİTESİ ÖĞRETİM ELEMANLARININ YURTİÇİ VE YURTDIŞI GÖREVLENDİRME YÖNERGESİ

II. Bölüm HİDROLİK SİSTEMLERİN TANITIMI

Öncelikle basın toplantımıza hoş geldiniz diyor, sizleri sevgiyle ve saygıyla selamlıyorum.

Yedi Karat Kullanım Klavuzu. Yedi Karat nedir? Neden Karat?

Veri Toplama Yöntemleri. Prof.Dr.Besti Üstün

0 dan matematik. Bora Arslantürk. çalışma kitabı

YÖNETMELİK. a) Basamak kontrolü: On beş basamaklı IMEI numarasının son basamağının doğruluğunun kontrolünü,

ÖĞRENME FAALĠYETĠ 6 ÖĞRENME FAALĠYETĠ NESNE ĠġLEMLERĠ

İNOVASYON GÖSTERGELERİ VE KAYSERİ:KARŞILAŞTIRMALI BİR ANALİZ. Prof. Dr. Hayriye ATİK 16 Haziran 2015

İZMİR KÂTİP ÇELEBİ ÜNİVERSİTESİ YABANCI DİLLER YÜKSEKOKULU HAZIRLIK SINIFI YÖNERGESİ. BİRİNCİ BÖLÜM Amaç, Kapsam, Dayanak ve Tanımlar


ATAÇ Bilgilendirme Politikası

MY16 Bulut PBX Benimseme Teklifi Hüküm ve Koşulları

RTX6_LRN Kod öğrenmeli Uzaktan kumanda

C/C++ DERS KONULARI. Kaynaklar 1. C Programlama dili, Kemal Yarcı 2. C/C++, Gürcan Banger 3. C ve Siz, Fatih Ekici

M i m e d ö ğ r e n c i p r o j e l e r i y a r ı ş m a s ı soru ve cevapları

5. ÜNİTE KUMANDA DEVRE ŞEMALARI ÇİZİMİ

ELEKTRONĐK TĐCARETĐN DÜZENLENMESĐ KANUNU 1 MAYIS 2015 TE YÜRÜRLÜĞE GĐRDĐ

Politika Notu. Yönetişim Etütleri Programı. Ekim Özelleştirme Gelirlerinin Kullanımı

Lisansüstü Programlar, Başvuru ve Kabul Yönetmeliği Sayfa: 1

ALPHA ALTIN RAPORU ÖZET 26 Ocak 2016

: 3218 Sayılı Serbest Bölgeler Kanunu Genel Tebliği (Seri No: 1) nde Değişiklik Yapılmasına Dair Tebliğ (Seri No: 3) yayımlandı.

İZMİR KÂTİP ÇELEBİ ÜNİVERSİTESİ ENGELSİZ ÜNİVERSİTE KOORDİNATÖRLÜĞÜ VE ENGELLİ ÖĞRENCİ BİRİMİ ÇALIŞMA USUL VE ESASLARI BİRİNCİ BÖLÜM

DÜNYA EKONOMİK FORUMU KÜRESEL CİNSİYET AYRIMI RAPORU, Hazırlayanlar. Ricardo Hausmann, Harvard Üniversitesi

HP Color LaserJet CM2320 MFP Serisi Kağıt ve Yazdırma Ortamı Kılavuzu

YATIRIM FONU ALIM SATIM İŞLEMLERİ KULLANICI KILAVUZU

İNGİLTERE DE ÜNİVERSİTE PLANLAMA VE BÜTÇELEME ÖRGÜTÜ

ENF TEMEL BİLGİSAYAR BİLİMLERİ Eğitim/Öğretim Yılı Bahar Dönemi DÖNEM SONU LAB. ÖDEV TESLİM DUYURUSU

T.C EGE ÜNİVERSİTESİ YURT DIŞINDAN ÖĞRENCİ KABULÜ ESASLARINA İLİŞKİN YÖNERGE. BİRİNCİ BÖLÜM Amaç, Kapsam ve Dayanak

DİKKAT! SORU KİTAPÇIĞINIZIN TÜRÜNÜ "A" OLARAK CEVAP KÂĞIDINA İŞARETLEMEYİ UNUTMAYINIZ. SAYISAL BÖLÜM SAYISAL-2 TESTİ

Tıp Fakültesi Dönem Temsilcileri Grubu Yönergesi

ÖLÇÜ TRANSFORMATÖRLERİNİN KALİBRASYONU VE DİKKAT EDİLMESİ GEREKEN HUSUSLAR

Bilgisayar Uygulamaları PSİ105

Binalarda Enerji Verimliliği ve AB Ülkelerinde Yapılan Yeni Çalışmalar

SİRKÜLER 2009 / İşsizlik Ödeneği Almakta Olan İşsizleri İşe Alan İşverenlere Yönelik Sigorta Primi Desteği

ANKARA EMEKLİLİK A.Ş GELİR AMAÇLI ULUSLARARASI BORÇLANMA ARAÇLARI EMEKLİLİK YATIRIM FONU ÜÇÜNCÜ 3 AYLIK RAPOR

BİT ini Kullanarak Bilgiye Ulaşma ve Biçimlendirme (web tarayıcıları, eklentiler, arama motorları, ansiklopediler, çevrimiçi kütüphaneler ve sanal

Temel Bilgisayar Programlama

SİRKÜLER NO: POZ-2013 / 107 İST, ELEKTRONİK DEFTER HAKKINDA AÇIKLAMALAR YAPILDI

Elektrik Dağıtım Şirketlerinin Satın Alma-Satma ve İhale Prosedürlerinin Hazırlanması ve Uygulanmasına İlişkin Yeni Yönetmelik Yayımlandı

Uzaktan Kumanda (Yalnızca Belirli Modellerde)

AKSARAY ÜNİVERSİTESİ. Amaç, Kapsam, Dayanak ve Tanımlar

DEĞERLENDİRME NOTU: Mehmet Buğra AHLATCI Mevlana Kalkınma Ajansı, Araştırma Etüt ve Planlama Birimi Uzmanı, Sosyolog

Özet şeklinde bilgiler

13 Kasım İlgili Modül/ler : Satın Alma ve Teklif Yönetimi. İlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL

T.C. VAN ĐL ÖZEL ĐDARESĐ Đl Genel Meclisi

Otizm lilerin eğitim hakkı var mıdır? Nedir ve nasıl olmalıdır?

ALPHA ALTIN RAPORU ÖZET 10 Kasım 2015

TOBB ETÜ LİSANSÜSTÜ BURSLU ÖĞRENCİ YÖNERGESİ* (*) Tarih ve S sayılı Senato oturumunun 4 nolu Kararı ile Kabul edilmiştir.

TARİFE YÖNETMELİĞİ. BİRİNCİ BÖLÜM Amaç, Kapsam, Dayanak, Tanımlar ve İlkeler

EĞİTİM BİLİMİNE GİRİŞ 1. Ders- Eğitimin Temel Kavramları. Yrd. Doç. Dr. Melike YİĞİT KOYUNKAYA

Transkript:

Görevler Arası Zamanuyumlama Ahmet Burak Can Hacettepe Üniversitesi abc@cs.hacettepe.edu.tr Birlikte Çalışan Görevler Bilgisayar kaynaklarının etkin kullanımı için, görevlerin birlikte ve koşut işlemi zorunludur. Gerçek koşutluk Görüntü koşutluk Koşut işlem, görevler arasında kaynak paylaşımı ve zaman uyumlama sorunlarını beraberinde getirir. Birlikte çalışan görevler arası etkileşim, çoğu kez kaynak paylaşımından doğar. 1 2 Üretici/Tüketici Görev Örneği Kaynaklara Erişim 3 Bölüşülür Kaynaklar: Ana işlem birimi, ana bellek, disk birimi Bölüşülmez Kaynaklar: Yazıcı, görevler arası ortak yastık alanları İki görev, bir ortak kaynağa erişim 4 biçimde gerçekleştirebilir: Okuma Okuma Okuma Yazma Yazma Okuma Yazma Yazma Sadece Okuma Okuma durumunda iki görev aynı anda ortak kaynağa erişebilir. 4

Kritik Kaynaklar İşletim Bütünlüğünün Bozulması - Örnek 1 Bölüşülmez kaynaklar kritik kaynaklar olarak adlandırılır. Kritik kaynaklara erişmeden önce, kaynağın kullanım durumunun sınanması ve diğer görevlerin o anda kaynak üzerinde işlem yapmadıklarından emin olunması gereklidir. Örnek: Sistem saati üzerinde çalışan 3 görev Saat: Gerçek zaman saati kesilmelerini işleyip sistem saatini günler. Yani belirli vuru aralıklarında üretilen saat kesilmesiyle çağrılır. Göster: Sistem saatini görüntülemeye yarar Öndeğerata: Sistem saatini sıfırlamayı sağlar. 5 6 İşletim Bütünlüğünün Bozulması - Örnek 2 İşletim Bütünlüğünün Bozulması - Örnek 2 Yukarıdaki gibi tek bağlaçlı listeye öğe eklemek için aşağıdaki gibi bir kod kesimi çalıştırılır: yeniöge.bağ ilköge = ilköge; = &yeniöge; Birden fazla görev bu listeye ekleme yaptığında nasıl bir problem oluşabilir? 7 8

Kritik Kesimler Kritik Kesime Erişim Kritik kaynağa erişim yapan program kesimleri kritik kesimler olarak adlandırılır. Kritik kaynağa aynı anda en çok bir görevin erişebilmesi, kritik kaynağa erişim yapan görevlerden en çok birinin kritik kesimi içinde bulunmasıyla sağlanabilir. Buna karşılıklı dışlama (mutual exclusion) denir. Karşılıklı dışlama görevlerin kritik kesimlerine giriş ve çıkışlarında alınan önlemler yoluyla gerçekleştirilir. Görevlerin, birbirlerinin işletimlerini karşılıklı olarak, sürekli engellemelerine karşılıklı tıkanma denir. Karşılıklı dışlamayı sağlamanın yanında karşılıklı tıkanmanın engellenmesi gerekir. 9 10 Görevler Arası Zamanuyumlama Kuralları 1. Karşılıklı dışlamanın sağlanması: Birlikte çalışan görevlerden en çok biri, aynı anda kritik kesimine girebilmelidir. 2. Karşılıklı tıkanmanın engellenmesi: Aynı anda ortak kaynağa erişmek isteyen görevlerden en az biri, sonlu bir süre için kritik kesimine girebilmelidir. 3. Kritik kesiminin dışındaki görevler ortak kaynağa erişmek isteyen görevleri engellememelidir. 4. Görevlerin göreli hız ve öncelikleri ile sistemde yer alan AİB sayısı hakkında herhangi bir varsayım yapılmamalıdır. Kesilme Düzeneği Kullanımı Karşılıklı dışlamayı sağlamak üzere, bir görev kritik kesimine girerken sistemi kesilmelere kapayabilir. Örnek: Sistem saatine erişen görevlerin kesilme ile engellenmesi. Göster: cli; saniye1=saniye; dakika1=dakika; saat1=saat; sti; Öndeğerata: cli; saat=0; dakika=0; saniye=0; sti; 11 12

Kesilme Düzeneği Kullanımı Kesilme düzeneği kullanımının en önemli sakıncaları nelerdir? Sistemin kesilmelere kestirilemez uzunlukta kapalı kalmasına ve bu sebeple işletim bütünlüğünü zedeleyecek durumlara neden olabilir. AİB tüm dış uyarılara kapatılır ve kritik kaynakla ilgisi olmayan görevlerin de işletimlerini engeller. Kesilme düzeneğinin denetimini sistemde çalışan çok sayıda göreve, özellikle çekirdek katman dışındaki görevlere de dağıtmasıdır. İlkel Semafor Kullanımı Dijkstra, iki ya da daha çok görev arasında karşılıklı dışlamayı sağlayacak, semafor (S) adlı özel, pozitif tamsayı değişkenler üzerinde işlem yapan P (S) ve V (S) adlı ilkel işleçleri tanımlamıştır. Bunların ilkel işleçler olmaları, işletimlerinin bölünemediği anlamına gelir. P(S); bölünmez (atomik) biçimde S değişkenini sınayan eğer S sıfırdan büyükse içeriğini bir eksilten, değilse beklemeyi sağlayan bir işleç tanımı içerir. V(S) ise S değişkenini bir artırmayı sağlayan bir işleç olarak tanımlanır. 13 14 Semafor Tanımı ve Kullanımı Semaforla Üretici/Tüketici Görev Programlanması P(S) ve V(S) işleçleri tanımı: P (int *S){ while(*s <= 0); /*bekle/ (*S)--; V (int *S){ (*S)++; Semaforun program içinde kullanımı:. P(S); {Kritik Kesim V(S);. 15 Çözüm: Görevlerin yastığa erişip erişmediğini kontrol etmek için bir semafor tanımlanır. 16

Semaforla Üretici/Tüketici Görev Programlanması P(S) ve V(S) İşleçlerinin Kuyruk Kullanarak Etkinleştirilmesi int b; boolean dolu=false; kullanıcı() { char tutanak [80]; yazıcı() { char tutanak [80]; while(true){ P (b); if (!dolu){ çıktı-üret(tutanak); yastığayaz(f,tutanak); dolu = true; V (b); while(true){ P (b); if (dolu) { yastıkoku(f,tutanak); dök(tutanak); dolu=false; V (b); 17 18 Semafor Kuyrukları Görevler Arası Akış Denetimin Sağlanması 19 20

Sayan Semaforlar Sayan Semaforla Üretici/Tüketici Görev Programlanması Semafor işleçleri, eksi tamsayıları da kapsayacak işleçler biçimine dönüştürüldüğünde, ilgili semafor için bekleyen görev sayısını (kuyruk boyunu) belirlemek mümkündür. Eksi tamsayı değerleri de alabilen semaforlar sayan semaforlar ya da genel semaforlar olarak adlandırılır. Yastığın dolup dolmadığını kontrol etmek için iki sayan semafor tanımlanır: Bir semafor (f) doluluk oranını, diğeri boşluk (e) oranını sayar. Program başında boşluk sayan semafor (e) yastık boyuna, diğeri (f) sıfıra eşitlenir. 21 22 Sayan Semaforla Üretici/Tüketici Görev Programlanması Öncelik Çizgesi ve Birden Fazla Görev Arası Zamanuyumlama int b,e,f; kullanıcı() { char tutanak [80]; yazıcı() { char tutanak [80]; while(true){ çıktı-üret(tutanak); P (e); P (b); yastığayaz(f,tutanak); V (b); V (f); while(true){ P (f); P (b); yastıkoku(f,tutanak); V (b); V (e); dök(tutanak); 23 24

Üst Düzey Zamanuyumlama Araçları Görevler arası iletişimi alt düzey işleçler yerine, bu işleçlerden yararlanılarak gerçekleştirilen daha üst düzey tanımlara dayalı işlevlerle ele almak programlama kolaylığı sağlayan bir yoldur. Bu amaçla, sistem çağrıları arasında çoğu kez send ve receive olarak adlandırılan işlevler öngörülür. Bu işlevler, görevler arası iletişimin yanı sıra bunun ortaya çıkardığı zamanuyum sorununu da, programcılara yansıtmadan çözerler. send/receive komutları send komutu bir görevin diğer bir göreve ileti göndermesi için kullanılır. receive komutu diğer görevlerden ileti beklemek ve almak için kullanılır. send (hedef, ileti) receive (kaynak, ileti) hedef vekaynak, alan ve gönderen görevlerin kimlikleridir. ileti ise aktarılan veri öbeğini belirler. send komutu, ileti adlı veri öbeğininhedef kimlikli alıcı göreve aktarılmasını; receive komutu ise kaynak kimlikli görevin göndereceğiileti'nin okunmasını sağlar. 25 26 send/receive Kullanımı Örneği send/receive Komutlarının Gerçekleştirimi İletilerin kaynak kimlikli görevden hedef kimlikli göreve aktarımı, değişik yollarla gerçekleştirilebilir: Kaynak görevin bellek alanından, doğrudan hedef görevin bellek alanına aktarılması Sorun: Görevlerin işletimlerini bekle-ilerle biçimiyle yavaşlatan bir yoldur. İşletim sistemine ilişkin yastık alanları üzerinden dolaylı taşınması Sorun: Veri yapılarının tanımları kullanıcılara bırakılmaz. Posta kutularının kullanılması 27 28

Posta Kutusu ile send/receive Gerçekleştirimi Posta kutuları, belirli sayıda ve çoğu kez değişmez uzunlukta iletinin yastıklanmasına yarayan ve görevler programlanırken tanımlanan özel tür yapılardır. Veri yapılarının tanımlarını kullanıcılara bırakma esnekliği posta kutusu kullanımıyla sağlanır. send (posta-kutusu, ileti) send komutu ile posta kutusuna ileti gönderen görev, posta kutusu dolunca, bu posta kutusuna ilişkin bekleme durumuna alınır. receive (posta-kutusu, ileti) receive komutu, varsa bekleme durumundaki görevi hazır göreve dönüştürür. Posta kutusu boşken receive komutu ile ileti okumak isteyen görev, bu kutuya ilişkin bekleme durumuna alınır. UNIX te Posta Kutuları pipe komutu, UNIX işletim sisteminde görevler arası posta kutuları oluşturmak amacıyla kullanılır. Verilerin pipe a gönderilmesi ve alınması, sıradan kütükler için kullanılan yazma ve okuma komutlarıyla gerçekleştirilir. UNIX işletim sisteminde pipe olarak adlandırılan posta kutularının kimlikleri (adları) bulunmaz. Bu nedenle, pipe sadece ata-oğul yakınlığındaki görevler tarafından kullanılabilirler. 29 30 pipe Kullanım Örneği-1 /* cc -o ata a ata.c a.c komutuyla derlenen ana.c */ #include <stdio.h> main(){ int i, pfd[2], boy; char fdstr[10], msg[80]; pipe(pfd); if(fork()==0){ close(pfd[1]); /*cocuk da yazma ucunu kapa*/ sprintf(fdstr,"%d",pfd[0]); execlp("./cocuk", cocuk",fdstr,null); exit(0); pipe Kullanım Örneği-2 /* cc -o cocuk cocuk.c komutuyla derlenen kız.c */ #include <stdio.h> main(int argc, char *argv[]) { int i, fd, nread; char s[80]; fd = atoi(argv[1]); nread = read(fd,s,sizeof(s)); /*gelen mesajı oku*/ printf ("reading %d bytes: %s\n",nread,s); close(pfd[0]); /* ata da okuma ucunu kapa */ boy = getline(msg); /* klavyeden mesajı oku */ write(pfd[1],msg,boy); /* posta kutusuna yaz */ wait(); /* cocuk un sonlanmasını bekle */ 31 32

pipe Komutu pipe adlı posta kutuları, (shell) komut yorumlama katmanında kullanıcılara, sistem komutlarıyla birlikte kullanılan biçimleriyle yansır. UNIX Shell de Pipe Kullanımı Örneği fork() shell Örnek: ls -l less shell exec( ls -l ) ls ls sistem komutu, ürettiği kütük listesini, pipe üzerindenless komutuna aktarır.less komutu bu çıktıyı sayfa sayfa görüntüler. fork() pipe pipe shell exec( less ) less 33 34 UNIX te FIFO UNIX System III den başlayarak named pipe (FIFO) kavramı getirilmiştir. FIFO, aralarında ata-oğul ilişkisi olmayan görevler arasında veri iletişimi ve zamanuyumlama için getirilmiştir. FIFO kütüğünün adı üzerinde anlaşan görevler open(), read(), write(), close() gibi sistem çağrılarını kullanarak FIFO kütüğüne erişebilirler. Monitor Monitor, birlikte çalışan görevlerin, ortak kaynağa erişim yapan yordamlarının (kritik kesimlerinin) toplandığı kümeye verilen addır. Görevlerin monitorda yer alan bir yordamı çağırmaları monitor e girmeleri olarak nitelenir. Bir görev monitor içindeki bir yordamın işletimini tümüyle tamamlamadan diğer bir görev monitor içinden yordam çağıramaz. Program derleme aşamasında, monitor biçiminde tanımlanan kesimlerin başına, karşılıklı dışlamayı sağlayacak komutlar derleyici tarafından eklenir. 35 36

Monitor İçinde Kilitlenme Bir üretici/tüketici görev senaryosunda, üretici görevin monitora girerek, yastık dolu iken buraya yeni bir tutanak eklemeye çalışması durumunda beklemeye alınması gerekir. Aynı şekilde, tüketici görev yastık boşken monitora girip yastıktan bir tutanak okumaya çalışırsa, görevin beklemeye alınması gerekir. Üretici/tüketici görev, gerekli önlemler alınmadan beklemeye alınırsa, hala monitor içinde göründüğünden diğer görevin monitora girmesi engellenir. Bu durumlarda, diğer görevin bekleme durumu son bulamayacağından, kilitlenme olarak bilinen, görevlerin karşılıklı bekleşme durumu ortaya çıkar. 37 wait/signal Komutları Monitor içindeki kilitlenmeleri engellemek için wait ve signal komutları öngörülmüştür. wait(kosul-degiskeni) komutu kendisini çalıştıran görevi koşul değişkenine bağlı bekleme kuyruğuna koyar. signal(kosul-degiskeni) komutu koşul değişkenine bağlı kuyruktaki bir görevi hazır görev durumuna getirir. Monitora girmiş bir görev, wait komutunu çağırdığında, başka görevlerin de monitora girmesine imkan tanımış olur. 38 Monitor Kullanım Örneği - 1 monitor üretici-tüketici tüketici condition dolu,boş; int sayaç; tutanakekle(char *tutanak) { if(sayaç == N) {wait(dolu); tutanakyaz(tutanak); sayaç++; if(sayaç == 1) {signal(boş); tutanakal(char *tutanak) { if(sayaç == 0) {wait(boş); tutanakoku(tutanak); sayaç--; if(sayaç == (N-1)) {signal(dolu); üretici-tüketici tüketici ends Monitor Kullanım Örneği 2 char tutanak[80]; kullanıcı() { while(true){ çıktı-üret(tutanak); üretici-tüketici.tutanakekle(tutanak); char tutanak[80]; yazıcı() { while(true){ üretici-tüketici.tutanakal(tutanak); dök(tutanak); 39 40

JAVA da Monitor Kavramı JAVA da bir nesneye erişim yapan yordamların synchronized tanımı, monitor kavramına benzer yaklaşımdır. Paylaşılan nesneyle ilgilisynchronized tanımlı herhangi bir yordamı, en çok bir işletim dizisinin işletmesi sağlanır (karşılıklı dışlama). Bir işletim dizisi, paylaşılan nesneyle ilgilisynchronized tanımlı bir yordamın işletimini tümüyle tamamlamadan, başka bir işletim dizisi aynı nesneye ilişkinsynchronized nitelikli başka bir yordamı işletmeye kalkarsa, otomatik olarak bekler duruma geçer. Thread ler Arası Zamanuyumlama için Problemli Bir Java Sınıf Örneği class Counter { private int count = 0; public void add(int val) { int y = count; y = y + val; count = y; public void sub(int val) { int y = count; y = y - val; count = y; 41 42 Thread ler Arası Zamanuyumlama için Problemli Bir Java Sınıf Örneği Counter sınıfından bir nesne tanımlanır ve eğer birden fazla thread tarafından bu nesne kullanılırsa, thread ler arası zaman uyumlama olmadığı için count değerini güncellemede hatalar oluşabilir. Örneğin birden fazla thread aynı anda add method unu çağırırsa ve ikisi de aynı count değerini okursa günleme hatası oluşur. Syncronized Java Sınıf Örneği class SyncronizedCounter { private int count = 0; public synchronizedvoid add(int val) { int y = count; y = y + val; count = y; Bu sorunu düzeltmek için add ve sub method ları syncronized olarak tanımlanmalıdır. Böylece bir thread add method unu çağırdığı zaman, diğer thread ler add veya sub method unu çağırırsa bekleme durumuna alınırlar. 43 public synchronized void sub(int val) { int y = count; y = y - val; count = y; 44

Bariyer (Barrier) Kavramı Bariyer kullanımı Bir bariyere yaklaşan görevler Biri hariç bloklanan 3 görev Son görev de bariyere ulaşınca, bütün görevler işletime devam ederler. 45 Dağıtılmış İşlem (Distributed Processing) Semaforlar gibi alt düzey işleçler, tek işlemcili ya da ortak bir ana belleğe sahip çok işleyicili sistemler üzerinde kullanılabilirler. Ağlar içinde bütünleşmiş bilgisayar sistemlerinin ortak bellekleri yoktur. Semaforlara dayalı zamanuyumlama düzenekleri, farklı bilgisayarlar üstünde çalışan görevler için kullanılamazlar. Tek bir uygulamanın, bir ağ içinde birden fazla bilgisayar sistemini aynı anda kullanabilmesine sağlayan işlem türüne dağıtılmış işlem adı verilir. 46 Uzaktan Yordam Çağırma Alt Düzey veya Üst Düzey Zamanuyumlama? UNIX System V ile birlikte, shared memory, semaphore gibi alt düzey araçlar da posta kutularına alternatif olarak kullanılabilmektedir. Üst düzey araçlar programlama kolaylığı sağlar. Alt düzey araçlar, kullanım kolaylığından ödün vererek daha yüksek performans elde etmeye imkan tanır. Bilgisayar sistemlerindeki uzaktan yordam çağırma (remote procedure call) düzenekleri, dağıtılmış işleme olanak sağlar. send vereceive komutları, dağıtılmış işlem ortamında kullanılabilen tek zamanuyumlama araçlarıdır. 47 48

Yemek Yiyen Felsefeciler Problemi (Dining Philosophers) Felsefeci düşünür veya yemek yer. Yemek için 2 çatala ihtiyacı vardır. 2 çatalı aynı anda alamaz. Önce birini sonra ötekini alır. Kilitlenme nasıl oluşabilir? Kilitlenmeyi nasıl önleriz? Yemek Yiyen Felsefeciler Problemi Yanlış bir yaklaşım: 49 50 Görevler Arası Kilitlenme Kilitlenmeyi Oluşturan Koşullar Karşılıklı Dışlama: Bir kaynağın aynı anda yalnız bir görev tarafından kullanılabilmesi. İstem üzerine kaynak atama: Görevin gereksediği kaynakları, teker teker, işletim aşamasında elde etmesi. Kaynak bırakmama: Atanan kaynakların, görevler serbest bırakmadıkça geri alınamaması. Döngüsel Bekleme: Bir görevin elinde tuttuğu kaynaklardan bir ya da daha çoğunun, başka görevlerce de istenmesi. 51 52

Kilitlenmeyi Çözme Yaklaşımları Kilitlenmelere karşı 3 temel yaklaşım: Kilitlenmelerden korunma Kilitlenmelerden sakınma Kilitlenmelerin özdevinimli olarak yakalanması ve ortadan kaldırılması, Kilitlenmelerden Korunma 1. Tüm kaynakları sağlanmadan işlerin görevlerin tanımları yapılmaz. Görevler işletim aşamasında ek kaynak isteminde bulunamazlar. Sorun: Kullanıcılar, işletim aşamasına ilişkin tüm olasılıkları düşünerek kaynak istemleri hakkında abartılı davranabilirler. 2. Görevler, gereksedikleri kaynakları baştan belirler ve kaynakları, sırayla kilit altına almaya çalışırlar. Eğer bir kaynak başka bir görev tarafından kilit altına alınmışsa, o ana kadar kilitlenen kaynak serbest bırakılarak işlemlere yeniden başlanır. Veritabanlarında iki aşamalı kilitleme (two phase locking) 53 54 Kilitlenmelerden Korunma Kilitlenmelerden Korunma 3. Atanan kaynaklar, görevlerin istemleri dışında da sistemce geri alınabilir. Sorun: Tüm kaynaklar için uygulanması mümkün olmaz. 4. Kaynaklar belirli kümelere ayrılır ve bu kümeler numaralanarak sıralanır. Görevler aynı kümede bulunan kaynaklar için birden çok atama isteminde bulunmazlarsa; (i) ninci kümeden kaynak sağlamış bir görev, yeni bir kaynak istemini yalnızca (i+1), (i+2),..., (i+n) gibi daha üst sıralardaki kümelerden yaparsa; (i) ninci kümedeki kaynaklar, (i-1) inci kümedeki kaynaklardan önce serbest bırakılmak zorunda ise kilitlenme oluşmayacağı kanıtlanabilir. 55 (4. Yöntemin devamı) - Sıradüzensel kaynak atama ile kilitlenmelerden korunma: 56

Kilitlenmelerden Sakınma Banker algoritması (Dijsktra 1965) Örnek: Bankerin toplam sermayesinin 10 TL ve ödünç alınan miktarların tablodaki gibi olduğunu varsayın. 3. müşteri 1 TL daha ödünç almak isterse ve banker verirse, banker iflas eder. Kilitlenmelerin Yakalanması ve Ortadan Kaldırılması Görevlerin kaynak istemlerine ilişkin herhangi bir kısıtlamaya gitmeden kilitlenmelerin oluşmasını beklenir Kilitlenme oluştuğunda, nedenleri belirlenerek ortadan kaldırılmaya çalışılır. Kilitlemenin nedenlerini bulmak için, hangi kaynakların hangi görevlere atandığını gösteren, kaynak çizgeleri kullanılır. 57 58 Kilitlenmelerin Yakalanması ve Ortadan Kaldırılması 59