İşletim Sistemleri · İşletim Sistemleri
#04 Süreçler arası iletişim: bellek ve mesaj
Veriyi paylaş · anlamını belirle · erişimi düzenle
Soru

Bir süreç sıcaklık sensöründen kayıt alıyor, başka bir süreç bu kayıtları çiziyor. Bellekleri normalde ayrı yönetildiği için, birinin elindeki bilgiyi diğerinin kendiliğinden görmesini bekleyemeyiz. İlk içgüdü şu: aynı bilgisayardalar, demek ki bütün değişkenleri ortaktır. Hayır. Aynı makinede olmak ile ortak bir bellek bölgesi kurmak farklı şeylerdir. Bunu ortak bir beyaz tahta ile mektup gönderme farkına benzetelim. Tahtada herkes aynı yazı alanına erişir. Mektupta bilgiyi bir mesaj olarak karşı tarafa iletirsiniz. İki yol da iş birliği sağlayabilir. Hangisinin uygun olduğunu yalnız daha hızlı kelimesiyle seçmeyiz; yalıtım, veri miktarı, eşgüdüm ve tarafların aynı makinede olup olmadığı önemlidir.
Yazılı çözüm ve anlatım dökümü(çözümün tamamını gösterir)
Aşağıda defterde yazılan bütün satırlar ve bunlara eşlik eden sesli anlatımın tam metni bulunur.
1. Ayrı süreçler birlikte nasıl iş yapar?

Kaynak dersin bu bölümündeki son görünüm. Geçen ders: süreç ve yürütme durumuBugün: paylaşılan bellek ve mesajlaşmaSesli anlatım metni
Geçen derste sürecin kimliğini, durumunu ve kaldığı yeri öğrendik. Bugün ayrı süreçlerin birlikte çalışırken nasıl bilgi alışverişi yaptığını göreceğiz. İki temel yaklaşımımız paylaşılan bellek ve mesajlaşma. Veri nerede durur, kimin sırası gelir ve alıcı yoksa ne olur? Bu soruları ayrı ayrı açacağız.
2. Sensör kaydı, çizim ve günlüğe yazma

Kaynak dersin bu bölümündeki son görünüm. A: kayıt alır · B: kayıtları çizerAynı bilgisayar ≠ bütün değişkenler ortakOrtak tahta veya mesaj teslimiİhtiyacı seç: veri · yalıtım · eşgüdümSesli anlatım metni
Bir süreç sıcaklık sensöründen kayıt alıyor, başka bir süreç bu kayıtları çiziyor. Bellekleri normalde ayrı yönetildiği için, birinin elindeki bilgiyi diğerinin kendiliğinden görmesini bekleyemeyiz. İlk içgüdü şu: aynı bilgisayardalar, demek ki bütün değişkenleri ortaktır. Hayır. Aynı makinede olmak ile ortak bir bellek bölgesi kurmak farklı şeylerdir. Bunu ortak bir beyaz tahta ile mektup gönderme farkına benzetelim. Tahtada herkes aynı yazı alanına erişir. Mektupta bilgiyi bir mesaj olarak karşı tarafa iletirsiniz. İki yol da iş birliği sağlayabilir. Hangisinin uygun olduğunu yalnız daha hızlı kelimesiyle seçmeyiz; yalıtım, veri miktarı, eşgüdüm ve tarafların aynı makinede olup olmadığı önemlidir.
3. Paylaşılan bellekte gerçekten ne paylaşılır?

Kaynak dersin bu bölümündeki son görünüm. Ortak bölge açıkça oluşturulur.Ortak veri: olağan bellek erişimleriBiçim ve eşgüdüm protokolü gerekir.Aynı bölge, aynı sayısal adres zorunluluğu değildir.Sesli anlatım metni
Paylaşılan bellek modelinde süreçler ortak bir bölge oluşturur ve bu bölgeyi kendi adres alanlarına bağlar. Ortak bölgeye erişim açıkça kurulmuştur; diğer bütün bellekleri otomatik olarak birleşmez. Kurulumdan sonra taraflar ortak veriyi olağan bellek erişimleriyle okuyup yazabilir. Her okuma için mutlaka ayrı bir sistem çağrısı gerekmez. Ama bu, kuruluma veya eşgüdüme hiç çekirdek desteği gerekmediği anlamına gelmez. Verinin biçimini taraflar kararlaştırır. Kayıt nerede başlar, hazır olduğu nasıl bildirilir, aynı alana iki taraf birden yazarsa ne olur? Paylaşmak bu soruları kendi başına çözmez. Dikkat: fiziksel olarak aynı veri bölgesine erişmek, bütün süreçlerde aynı sayısal adresi kullanmayı gerektirmez. Adres eşleme ayrıntısını bellek yönetimi derslerine bırakıyoruz.
4. Mesajlaşma: gönder ve al

Kaynak dersin bu bölümündeki son görünüm. Gönder → iletişim yolu → alDoğrudan adres veya ortak posta kutusuTeslim garantisi hizmet sözleşmesine bağlıdır.Kuyruk, mantıksal iletişim modelidir.Sesli anlatım metni
Mesajlaşmada bir taraf gönderme, diğer taraf alma işlemi kullanır. Veri, tanımlı bir iletişim yoluyla aktarılır. Tarafların bütün adres alanlarını paylaşması gerekmez. Doğrudan iletişimde alıcının kimliği belirtilir. Dolaylı iletişimde taraflar bir posta kutusu veya bağlantı noktası kullanabilir. Bir posta kutusuna birden fazla alıcı bağlanabiliyorsa, hangi mesajı kimin alacağı protokolde tanımlanmalıdır. Mesajlaşma farklı makineler arasına da taşınabilir. Fakat bu, ağdaki her gönderimin kesin teslim ya da tek teslim garantisi verdiği anlamına gelmez. Güvenilirlik ve hata davranışı kullanılan hizmetin sözleşmesine bağlıdır. Bu dersin çiziminde kuyruk, işletim sisteminin yönettiği mantıksal mesaj alanıdır. Gerçek uygulama veriyi kopyalayabilir ya da başka bir aktarım yöntemi kullanabilir; tek bir iç gerçekleştirim varsaymıyoruz.
5. Dört yerlik tamponu adım adım doldur

Kaynak dersin bu bölümündeki son görünüm. Tampon kapasitesi: 4 kayıtBaşlangıç: 1 dolu kayıtÜretim: 1 + 1 = 2; ardından 2 + 1 = 3Tüketim: 3 − 1 = 2 dolu yerKontrol: dolu + boş = kapasiteSesli anlatım metni
Özgün örneğimizde dört kayıtlık bir tampon var. Her kayıt yeri sabit büyüklükte. Bu sahne erişimleri sırayla gösterir; eşzamanlı doğru kod iddiası değildir. Başlangıçta bir kayıt dolu olsun. Dolu yer sayısını ayrıca izlediğimiz için, bu modelde bütün tampon yerlerini kullanabiliriz. Üretici bir yeni kayıt ekler. Bir artı bir, iki dolu yer eder. Ardından bir kayıt daha ekler: iki artı bir, üç dolu yer. Tüketici en eski kaydı alır. Üç eksi bir, iki dolu yer kalır. Böylece üretim ile tüketimi karıştırmadan doluluk hesabını takip ettik. Makullük kontrolü: dolu ile boş yerlerin toplamı her sakin ara durumda kapasiteye eşit olmalı. Doluluk kapasiteyi aşamaz ve eksi olamaz. İşler eşzamanlı yürürken bu sayaçları güvenli güncellemek ayrıca gerekir.
6. Kapasite ve dairesel indeks

Kaynak dersin bu bölümündeki son görünüm. Kayıt yükü kapasitesi: 4 × 128 = 512 baytSon kayıt yükü: 2 × 128 = 256 baytKonumlar: 0 → 1 → 2 → 3 → 0Başlangıca dönmek, dolu veriyi ezme izni değildir.Sesli anlatım metni
Her kayıt yeri yüz yirmi sekiz bayt olsun. Dört yer çarpı yüz yirmi sekiz, beş yüz on iki bayt kayıt yükü kapasitesi verir. Yönetim bilgilerini bu hesaba dahil etmiyoruz. Son durumda iki kayıt doluydu. İki çarpı yüz yirmi sekiz, iki yüz elli altı bayt kayıt yükü vardır. Boş alanın tamamını fiziksel olarak sıfırlamak bu doluluk hesabının şartı değildir. Dairesel tamponda son yerden sonra başa döneriz. Yerleri sıfır, bir, iki, üç diye etiketlersek, üçten sonraki yazma konumu sıfıra döner. Bu, dört konumun etrafında dolaşan bir indeks modelidir. İndeksin başa dönmesi eski kaydın üzerine yazma izni değildir. Tampon doluysa üretici protokolün söylediği gibi beklemeli, hata almalı ya da açık bir kayıp politikası uygulamalıdır.
7. Bloklayan ile bloklamayan işlem

Kaynak dersin bu bölümündeki son görünüm. Bloklayan alma: mesajı beklerBloklamayan alma: hemen sonuç verirGönderme de ayrı bir bekleme sözleşmesine sahiptir.Gönderme ile alma seçeneklerini ayrı değerlendir.Sesli anlatım metni
Alıcı istediği anda mesaj yoksa ne olur? Bloklayan alma işleminde alıcı mesaj gelene kadar bekler. İşletim sistemi onu uygun bekleme durumuna alabilir. Bloklamayan alma hemen döner. Mesaj varsa onu verir; yoksa sözleşmeye göre henüz veri olmadığını bildirir. Hemen dönmesi, mutlaka bir mesaj döndüğü anlamına gelmez. Gönderme için de benzer bir seçim vardır. Bloklayan gönderme, hizmetin tanımladığı kabul ya da teslim aşamasını bekler. Bloklamayan gönderme, geri dönüş ve hata davranışını sözleşmesine göre bildirir. Bir tarafın bloklamaması öteki tarafın da bloklamadığı anlamına gelmez. Gönderme ve alma seçenekleri ayrı ayrı değerlendirilir. Eşzamanlı kelimesini bütün işler tam aynı anda yürür anlamında kullanmıyoruz.
8. Kuyruk dolarsa iletişim nasıl davranır?

Kaynak dersin bu bölümündeki son görünüm. Sıfır kapasite: tarafların buluşmasıSınırlı kuyruk: dolunca sözleşmeye göre bekle / hataSoyut sınırsız model, gerçek sonsuz bellek değildir.Bekleme, üretim hızını tüketiciye uyarlayabilir.Sesli anlatım metni
Sıfır kapasiteli modelde mesaj kuyrukta bekleyemez. Gönderen ile alıcının buluşması gerekir. Bunun yararı açık bir eşgüdüm noktası oluşturmasıdır. Sınırlı kapasitede kuyruk dolana kadar mesajlar birikebilir. Dolunca, burada kullandığımız bloklayan gönderme modelinde üretici bekler. Gerçek bir bloklamayan arayüz dolu kuyruğu hata olarak da bildirebilir. Sınırsız kapasite dersin soyut modelidir. Gerçek bilgisayarda bellek sonsuz değildir. Üretim tüketimden sürekli hızlıysa, kuyruk büyümesi yönetilmesi gereken bir sorundur. Kuyruk uzunluğuna bakarak iletişimi değerlendirin. Bekleme yalnız kötü bir şey değildir; bazen hızlı üreticiyi yavaş tüketiciye uydurmak için gerekli karşı basıncı sağlar.
9. Ortak veri, kendiliğinden güvenli mi?

Kaynak dersin bu bölümündeki son görünüm. Soru: ortak alan, erişim düzenini de sağlar mı?Yanıt: paylaşımın yanında eşgüdüm gerekir.Mesajlaşma, bütün uygulama yarışlarını çözmez.İletişim yolu ile veri güvenliği ayrı sorulardır.Sesli anlatım metni
Tahtaya aynı anda iki kişi aynı kutuya yazarsa sonucu ne belirler? Yalnız ortak alanın varlığı, hangi yazının doğru kalacağını belirler mi? Bir an düşünün. Hayır. Tarafların biçim ve erişim protokolüne ihtiyacı vardır. Sıralı tampon hesabımız, bütün eşzamanlı güncellemeleri doğru yapan bir kilit algoritması değildi. Mesaj kullanırsak bütün yarış ihtimalleri yok olur mu? Yine hayır. Mesaj işlemleri aktarımı düzenleyebilir; uygulamanın kendi ortak verileri ve çok adımlı kararları ayrıca korunmalıdır. Bu nedenle iletişim yolu ile senkronizasyon problemini birbirine bağlayacağız. Önce iş parçacıklarını ve zamanlamayı öğrenip sonra ortak verinin güvenli güncellenmesine döneceğiz.
10. Üç yanlış içgüdü

Kaynak dersin bu bölümündeki son görünüm. Aynı makine ≠ otomatik ortak bellekHemen dönmek ≠ veri gelmesiDairesel indeks ≠ üstüne yazma izniNerede? Kim erişir? Ne zaman hazır?Sesli anlatım metni
Birinci hata: aynı makinedeki süreçlerin bütün değişkenleri ortaktır. Hayır; ortak bölge ayrıca kurulur, diğer alanlar ayrı kalabilir. İkinci hata: bloklamayan alma her zaman veri getirir. Hayır; henüz mesaj yok sonucuyla hemen dönebilir. Üçüncü hata: dairesel indeks başa döndüyse eski veriyi ezebiliriz. Hayır; doluluk ve protokol izin vermelidir. Akılda kalan kural: veri nerede, kim erişiyor, hazır olduğuna kim karar veriyor? İletişimi bu sorularla okuyun.
11. İletişim yolu ve erişim protokolü

Kaynak dersin bu bölümündeki son görünüm. Paylaşılan bellek veya tanımlı mesajVeri biçimi · kapasite · bekleme davranışıSonraki ders: iş parçacıkları ve hız sınırıSesli anlatım metni
Bilgisayar modeline dönelim. Ayrı süreçler ortak bir bellek bölgesini kullanabilir ya da tanımlı mesajlar gönderebilir. İki yaklaşım da iş birliği sağlar ama sorumlulukları farklı dağıtır. Küçük tamponda üretim ve tüketimi, doluluğu ve kapasiteyi sırayla izledik. Bloklayan işlem ile hemen dönen işlemi; mantıksal kuyruk kapasitesi ile gerçek bellek sınırını ayırdık. Bir sonraki derste aynı sürecin içindeki yürütme hatlarına, yani iş parçacıklarına geçiyoruz. Daha çok iş parçacığı her zaman daha çok hız demek mi? Bir hesapla sınayacağız. Görüşmek üzere.
Kaynak video: Süreçler arası iletişim: bellek ve mesaj (7:47)