İşletim Sistemleri 01.3 – İşlemler
Önceki Yazılara Buradan ulaşabilirsiniz.
İşlem Hiyerarşisi:
İşlemler belirli bir hiyerarşi içinde çalışırlar. Bazı işlemler alt işlemler oluşturarak bunların da çalışmasını sağlarlar. Böylelikle bir uygulamaya ait farklı görevler üstlenen işlemler eşzamanlı olarak çalışabilirler.

Resimde görüldüğü üzere, bazı işlemler başka işlemlerin ebeveyni olarak konumlanmış durumdalar.
Özellikleri:
- Ebeveyn işlem, çocuk işlem ile eşzamanlı çalışabilir yada çocuk işlemin bitmesini bekleyip daha sonra kaldığı yerden çalışmaya devam edebilir.
- Çocuk işlem, ebeveyn işlemin tüm değişkenlerini veya bir kısmını kullanabilir.
- Ebeveyn işlemin sonlanması, çocuk işlemlerin sonlanmasına neden olur.
- Çocuk işlemler, ebeveyn çalıştığı sürece çalışabilir veya aralıklarla çalışabilir.
Türleri:
- Bağımsız: Çocuk işlemler, diğer işlemleri etkilemeden çalıştırılabilir ve sonlandırılabilirler, Sonucu kesindir, başka işlemlerin çalışması sonucunun değişmesine neden olmaz.
- İşbirlikçi: Çocuk işlemler, birbirleri ile ortak çalışırlar, çalışma sıraları değiştiğinde sonuç değişebilir. Uygulamanın çıktısı her zaman aynı olmayabilir. Sonuç dış etmenlere de bağlıdır.
İşlemler Arası İletişim:
İşlemlerin birbirleri ile iletişim kurmasıdır. 2 temel iletişim metodu vardır.
- Bellek Paylaşımı (Shared memory): Bu yöntemde veri iletimi yoktur. Birden fazla işlem aynı paylaşılan bellek bölgesini kullanarak değişkenler üzerinden iletişim kurarlar.
- Mesaj Gönderme Arayüzü (Message Passing Interface): Bu yöntemde veri iletimi vardır. Bir işlem veriyi “send” metodu ile gönderirken, diğer işlem veriyi “receive” metodu ile alır.
Mesaj Gönderme Arayüzü, Uygulama Yöntemleri:
- Direkt veya Dolaylı iletişim
- Simetrik veya Asimetrik iletişim
- Arabellek (Buffer) Mekanizması
- Sabit Boyutlu veya değişken boyutlu mesajlar
Direkt İletişim:
Bu yöntemde bir işlem, göndereceği veriyi direkt olarak bir işleme gönderir. Bu yöntemde gönderici ve alıcı isimleri bilinmelidir. Mekanizma aşağıdaki gibidir.
send(tuketici_islem, veri); receive(uretici_islem, veri);
Üretici/Tüketici Problemi: Standart bir problemdir. Bir işlem veri üretir, diğer işlem üretilen veriyi tüketir. Direkt iletişime uyarlanmış şekli şöyledir.
Üretici:
repeat
uret item;
send (tuketici, message);
until falseTüketici:
repeat
receive (uretici, message);
tuket item;
until falseÖzellikleri:
- Bağlantı otomatik olarak sağlanır.
- Yalnızca 2 işlem iletişimde bulunabilir.
- 2 işlem için 1 bağlantı gerekir.
- Genellikle tek yönlüdür.
- Tuketici, iletişim sırasında üreticinin kimliğine ihtiyaç duymayabilir.
- Her iki işlemin kimliği bilinmelidir, kodun bakımı zordur.
Dolaylı İletişim:
Bu iletişim yönteminde, işlemler posta kutusu denen yapı yardımı ile iletişim kurarlar. İşlem aşağıdaki gibidir.
open (posta_kutusu_adi); send (posta_kutusu_adi, message); receive (posta_kutusu_adi, message);
- Ancak eğer bir posta kutusu varsa iletişim sağlanabilir. İşlemler arası iletişimin kurulabilmesi için öncelikle posta kutusu ile iletişim kurulmalıdır.
- İkiden fazla işlem aynı posta kutusunu kullanabilir.
- Birden fazla alıcı olduğunda işler karışabilir. Posta kutusuna mesa gelince kimin alacağı belirlenemeyebilir.
Simetrik İletişim:
Bu iletişim metodunda üretici ve tüketici eşit hızlarda çalışır, çoğu zaman ara belleğe gerek yoktur.
Asimetrik İletişim:
Bu iletişim metodunda üretici ve tüketici farklı hızlarda çalışırlar. Ara belleğe ihtiyaç duyulur.
Ara Bellek:
- Sıfır: Üretici, tüketicinin veriyi almasını bekler.
- Sınırlı Ara Bellek: Eğer ara bellekte n taneden fazla mesaj varsa üretici bekler.
- Sınırsız Ara Bellek: Üretici hiç bir zaman tüketiciyi beklemez.
RPC (Remote Procedure Call, uzak prosedür çağrısı):
Ağ üzerinden bağlı bilgisayarlardaki uygulamaların birbirleri ile iletişim kurmaları için bir soyutlmadır.
Gelecek Bölüm:
- Bellek Yönetimi



