You are on page 1of 64

Bölüm 3: Süreçler

Operating System Concepts – 10th Silberschatz, Galvin and Gagne ©2018


3.3.2. Süreç Sonlandırma

● Süreç son deyimi yürütür ve ardından işletim sisteminden


exit() sistem çağrısını kullanarak silmesini ister.
● Durum verilerini çocuktan ebeveyne döndürür ( wait()
aracılığıyla)
● Sürecin kaynakları işletim sistemi tarafından ayrılır

Operating System Concepts – 10th 3.2 Silberschatz, Galvin and Gagne ©2018
3.3.2. Süreç Sonlandırma

● Üst süreç abort() sistem çağrısını kullanarak alt süreçlerinin


yürütülmesini sonlandırabilir. Bunu yapmak için bazı nedenler:
● Çocuk tahsis edilen kaynakları aştı
● Çocuğa verilen görev artık gerekli değil
● ebeveyni 'den çıkıyor ve işletim sistemleri ebeveyni
sonlandırılırsa çocuğunun devam etmesine izin vermiyor

Operating System Concepts – 10th 3.3 Silberschatz, Galvin and Gagne ©2018
3.3.2. Process Termination

● Bazı işletim sistemleri ebeveyni sonlandırılmışsa çocuğun var


olmasına izin vermez. Eğer bir süreç sonlandırılırsa, tüm
çocukları da sonlandırılmalıdır.
● basamaklı sonlandırma. Tüm çocuklar, torunlar vb.
sonlandırılır.
● Sonlandırma işletim sistemi tarafından başlatılır.
● ana süreç, wait()sistem çağrısını kullanarak bir çocuk
sürecin sonlandırılmasını bekleyebilir. Çağrı, durum
bilgisini ve sonlandırılan sürecin pid'sini döndürür
pid = wait(&status);
● bekleyen ebeveyn yoksa (wait() çağrılmadıysa) süreç bir zombi
● parent wait çağrılmadan sonlandırılmışsa, süreç bir orphan'dır

Operating System Concepts – 10th 3.4 Silberschatz, Galvin and Gagne ©2018
3.4. Süreçler Arası İletişim
● Bir sistem içindeki süreçler bağımsız veya işbirliği içinde olabilir
● İşbirliği yapan süreç etkileyebilir veya veri paylaşımı da dahil olmak
üzere diğer süreçler tarafından etkilenebilir
● İşbirliği süreçleri için nedenler:
● Bilgi paylaşımı
● Hesaplama hızlandırma
● Modülerlik
● Kolaylık
● İşbirliği yapan süreçler ihtiyaç süreçler arası iletişim (IPC)
● İki IPC modeli
● Paylaşılan bellek
● Mesaj iletimi

Operating System Concepts – 10th 3.5 Silberschatz, Galvin and Gagne ©2018
İletişim (IPC) Modelleri
(a) Paylaşılan bellek. (b) Mesaj geçişi.

Operating System Concepts – 10th 3.6 Silberschatz, Galvin and Gagne ©2018
İşbirliği Süreçleri
Bağımsız süreç başka bir sürecin yürütülmesini etkileyemez veya
ondan etkilenemez
İşbirliği yapan süreç başka bir sürecin yürütülmesini etkileyebilir
veya ondan etkilenebilir
Süreç işbirliğinin avantajları
● Bilgi paylaşımı
● Hesaplama hızlandırma
● Modülerlik
● Kolaylık

Operating System Concepts – 10th 3.7 Silberschatz, Galvin and Gagne ©2018
Producer-Consumer Problem
● İşbirliği yapan süreçler için paradigma, üretici süreç, bir
tüketici süreç tarafından tüketilen bilgiyi üretir

● unbounded-buffer buffer boyutuna pratik bir sınır


getirmez
● bounded-buffer sabit bir tampon boyutu olduğunu
varsayar

Operating System Concepts – 10th 3.8 Silberschatz, Galvin and Gagne ©2018
3.5. Süreçler Arası İletişim - Paylaşılan Bellek

● iletişim kurmak isteyen süreçleri arasında paylaşılan bir bellek


alanı
● İletişim işletim sisteminin değil kullanıcı süreçlerinin kontrolü
altındadır.
● Başlıca sorun, kullanıcı süreçlerinin paylaşılan belleğe
eriştiklerinde eylemlerini senkronize etmelerini sağlayacak bir
mekanizma sağlamaktır.
● Senkronizasyon 6. ve 7. Bölümlerde ayrıntılı olarak ele
alınmaktadır.

Operating System Concepts – 10th 3.9 Silberschatz, Galvin and Gagne ©2018
Sınırlı Arabellek - Paylaşımlı Bellek Çözümü

● Shared data
#define BUFFER_SIZE 10
typedef struct {
. . .
} item;

item buffer[BUFFER_SIZE];
int in = 0; // next free position in buffer
int out = 0; // first full position in buffer

● Çözüm doğrudur, ancak yalnızca BUFFER_SIZE-1 element'ları


kullanabilir

Operating System Concepts – 10th 3.10 Silberschatz, Galvin and Gagne ©2018
Buffer state in Shared Memory

Operating System Concepts – 10th 3.11 Silberschatz, Galvin and Gagne ©2018
Buffer state in Shared Memory

Operating System Concepts – 10th 3.12 Silberschatz, Galvin and Gagne ©2018
Circular buffer

Operating System Concepts – 10th 3.13 Silberschatz, Galvin and Gagne ©2018
Üretici Süreç - Paylaşılan Bellek

item next_produced;

while (true) {
/* produce an item in next produced */

while (((in + 1) % BUFFER_SIZE) == out) // tampon dolu

; /* do nothing */

buffer[in] = next_produced;

in = (in + 1) % BUFFER_SIZE;
}

Operating System Concepts – 10th 3.14 Silberschatz, Galvin and Gagne ©2018
Consumer Process – Shared Memory

item next_consumed;

while (true) {

while (in == out) // tampon boş


; /* do nothing */

next_consumed = buffer[out];

out = (out + 1) % BUFFER_SIZE;

/* consume the item in next consumed */


}

Operating System Concepts – 10th 3.15 Silberschatz, Galvin and Gagne ©2018
Consumer Process – Shared Memory

item next_produced; item next_consumed;

while (true) { while (true) {


while (in == out) // tampon boş
/* produce an item in next produced */
; /* do nothing */
while (((in + 1) % BUFFER_SIZE) == out) //
next_consumed = buffer[out];
tampon dolu
out = (out + 1) % BUFFER_SIZE;

; /* do nothing */
/* consume the item in next consumed *
}
buffer[in] = next_produced;
in = (in + 1) % BUFFER_SIZE;
}

Operating System Concepts – 10th 3.16 Silberschatz, Galvin and Gagne ©2018
3.6. Süreçler Arası İletişim - Mesaj Geçişi

● Mechanism süreçlerin iletişim kurması ve eylemlerini


senkronize etmesi için

● Message system – süreçler paylaşılan değişkenlere


başvurmadan birbirleriyle iletişim kurar

● IPC tesis iki işlem sağlar:


● send(message)
● receive(message)

● mesaj boyutu ya sabit ya da değişkendir


Operating System Concepts – 10th 3.17 Silberschatz, Galvin and Gagne ©2018
Mesaj İletimi (Devam)

● P ve Q süreçleri iletişim kurmak isterlerse, bunu yapmaları gerekir:


● Aralarında bir iletişim bağlantısı kurun
● Gönderme/alma yoluyla mesaj alışverişi
● Uygulama sorunları:
● Bağlantılar nasıl kurulur?
● Bir bağlantı ikiden fazla süreçle ilişkilendirilebilir mi?
● İletişim kuran her süreç çifti arasında kaç bağlantı olabilir?
● Bir bağlantının kapasitesi nedir?
● Bağlantının alabileceği mesaj boyutu sabit mi yoksa değişken mi?
● Bir bağlantı tek yönlü mü yoksa çift yönlü mü?

Operating System Concepts – 10th 3.18 Silberschatz, Galvin and Gagne ©2018
Mesaj İletimi (Devam)

● iletişim bağlantısının uygulanması


● Fiziksel:
Paylaşılan bellek
Donanım veri yolu
Şebeke
● Mantıksal:
Doğrudan veya dolaylı
Senkron veya asenkron
Otomatik veya açık tamponlama

Operating System Concepts – 10th 3.19 Silberschatz, Galvin and Gagne ©2018
Mesaj iletimi : Doğrudan İletişim

● Süreçler birbirlerini açıkça adlandırmalıdır:


● gönder (P, mesaj) - P işlemine bir mesaj gönderir
● al (Q, mesaj) - Q sürecinden bir mesaj al
● iletişim bağlantısının özellikleri
● Bağlantılar otomatik olarak kurulur
● Bir bağlantısı tam olarak bir çift iletişim süreci ile ilişkilidir
● Her çift arasında tam olarak bir bağlantı vardır
● bağlantısı tek yönlü olabilir, ancak genellikle çift yönlüdür

Operating System Concepts – 10th 3.20 Silberschatz, Galvin and Gagne ©2018
Mesaj iletimi : Dolaylı İletişim

● Mesajlar posta kutularından (port olarak da adlandırılır)


yönlendirilir ve alınır
● Her posta kutusunun bir benzersiz kimliği vardır
● Süreçler yalnızca bir posta kutusunu paylaşıyorlarsa iletişim
kurabilirler
● iletişim bağlantısının özellikleri
● Bağlantı yalnızca süreçler ortak bir posta kutusunu paylaşıyorsa
kurulur
● Bir bağlantı birçok süreçle ilişkilendirilebilir
● Her bir süreç çifti birkaç iletişim bağlantısını paylaşabilir
● Bağlantı tek yönlü veya çift yönlü olabilir

Operating System Concepts – 10th 3.21 Silberschatz, Galvin and Gagne ©2018
Mesaj iletimi : Dolaylı İletişim

● Operasyonlar
● create yeni bir posta kutusu (port)
● posta kutusu üzerinden mesaj gönderme ve alma
● posta kutusunu yok etme

● İlkeller şu şekilde tanımlanır:

send(A, message) - send a message to mailbox A


receive(A, message) - mailbox A adresinden bir mesaj alır

Operating System Concepts – 10th 3.22 Silberschatz, Galvin and Gagne ©2018
Mesaj iletimi : Dolaylı İletişim

● Posta kutusu paylaşımı


● P1, P2, ve P3 posta kutusunu paylaş A
● P1, gönderir; P2 ve P3 alır
● Mesajı kim alıyor?
● Çözümler
● Bir bağlantının en fazla iki süreçle ilişkilendirilmesine izin
verin
● Bir seferde yalnızca bir işlemin alma işlemi
gerçekleştirmesine izin verin
● Sistemin alıcıyı keyfi olarak seçmesine izin verin.
Göndericiye alıcının kim olduğu bildirilir.

Operating System Concepts – 10th 3.23 Silberschatz, Galvin and Gagne ©2018
Mesaj geçişi: Senkronizasyon
● Mesaj geçişi engelleyici veya engelleyici olmayan olabilir
● Engelleme senkron olarak kabul edilir
● Göndermeyi engelleme -- gönderici engellenir mesaj alınana
kadar
● Alımı engelleme -- alıcı engellenir bir mesaj mevcut olana
kadar
● Tıkanmayan asenkron olarak kabul edilir
● Engellemesiz gönderme -- gönderici mesajı gönderir ve
devam eder
● Engellemesiz alım -- alıcı alır:
● Geçerli bir mesaj veya
● Boş mesaj
● Farklı kombinasyonlar mümkün
● Hem gönderme hem de alma engelleniyorsa, bir randevumuz
var demektir

Operating System Concepts – 10th 3.24 Silberschatz, Galvin and Gagne ©2018
Producer - mesaj geçişi

message next_produced;

while (true) {

/* next_produced */ içinde bir öğe üretin


send(next_produced);
}

Operating System Concepts – 10th 3.25 Silberschatz, Galvin and Gagne ©2018
Consumer - mesaj geçişi

message next_consumed;

while (true) {

receive(next_consumed)

/* consume the item in next_consumed */


}

Operating System Concepts – 10th 3.26 Silberschatz, Galvin and Gagne ©2018
Mesaj iletimi: Arabellekleme

● Bağlantıya eklenen mesajların kuyruğu .

● adresinde üç yoldan biri uygulanmaktadır


1. Sıfır kapasite - bir bağlantıda hiçbir mesaj kuyruğa alınmaz.
Gönderici alıcıyı beklemelidir (buluşma)
2. Sınırlı kapasite - n mesajlarının sonlu uzunluğu Gönderici
bağlantı doluysa beklemelidir
3. Sınırsız kapasite - sonsuz uzunluk Gönderici asla beklemez

Operating System Concepts – 10th 3.27 Silberschatz, Galvin and Gagne ©2018
3.7. Paylaşımlı Bellek Örneği: POSIX

● POSIX Shared Memory


● İşlem ilk olarak paylaşılan bellek segmenti oluşturur

shm_fd = shm_open(name, O CREAT | O RDWR,


0666);

● Mevcut bir segmenti açmak için de kullanılır


● Nesnenin boyutunu ayarlayı
ftruncate(shm_fd, 4096);

● Bir dosya işaretçisini paylaşılan bellek nesnesine bellek


eşlemek için mmap() kullanın
● Paylaşılan belleğe okuma ve yazma , mmap() tarafından
döndürülen işaretçi kullanılarak yapılır.

Operating System Concepts – 10th 3.28 Silberschatz, Galvin and Gagne ©2018
Example : IPC
POSIX
Producer

Operating System Concepts – 10th 3.29 Silberschatz, Galvin and Gagne ©2018
Example : IPC
POSIX
Consumer

Operating System Concepts – 10th 3.30 Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th 3.31 Silberschatz, Galvin and Gagne ©2018
3.7.2. Message Passing Example : Mach

● Mach iletişimi mesaj tabanlıdır


● Sistem çağrıları bile mesajdır
● Her görev oluşturulduğunda iki bağlantı noktası alır - Kernel ve Notify
● Mesajlar mach_msg() fonksiyonu kullanılarak gönderilir ve alınır
● İletişim için gerekli bağlantı noktaları
mach_port_allocate()
● Gönderme ve alma esnektir, örneğin posta kutusu doluysa dört seçenek
vardır:
Süresiz olarak bekleyin
En fazla n milisaniye bekleyin
Hemen geri dönün
Bir mesajı geçici olarak önbelleğe alma

Operating System Concepts – 10th 3.32 Silberschatz, Galvin and Gagne ©2018
3.7.2. Mach Mesajları

#include <mach/mach.h>

struct message {
mach_msg_header_t header;
int data;
};

mach port t client;


mach port t server;

Operating System Concepts – 10th 3.33 Silberschatz, Galvin and Gagne ©2018
3.7.2. Mach Message Passing - Client

Operating System Concepts – 10th 3.34 Silberschatz, Galvin and Gagne ©2018
3.7.2. Mach Message Passing - Server

Operating System Concepts – 10th 3.35 Silberschatz, Galvin and Gagne ©2018
Mailbox – RTOS-32

Kaynak : http://www.on-time.com/rtos-32-docs/rtkernel-32/programming-manual/module/mailbox.htm

Operating System Concepts – 10th 3.36 Silberschatz, Galvin and Gagne ©2018
3.7.4. Pipes
● İki sürecin iletişim kurmasına izin veren bir kanal olarak hareket eder
● Sorunlar:
● İletişim tek yönlü mü yoksa çift yönlü mü?
● İki yönlü iletişim durumunda, yarım mı yoksa tam dupleks mi?
● İletişim kuran süreçler arasında bir ilişki (yani ebeveyn-çocuk) olmalı
mı?
● Borular bir ağ üzerinden kullanılabilir mi?
● Sıradan borulara - onu oluşturan sürecin dışından erişilemez. Tipik
olarak, bir üst süreç bir boru oluşturur ve bunu kendi oluşturduğu bir alt
süreçle iletişim kurmak için kullanır.
● Adlandırılmış borulara - ebeveyn-çocuk ilişkisi olmadan erişilebilir.

Operating System Concepts – 10th 3.37 Silberschatz, Galvin and Gagne ©2018
3.7.4. Pipes

Operating System Concepts – 10th 3.38 Silberschatz, Galvin and Gagne ©2018
3.7.4. Pipes

Operating System Concepts – 10th 3.39 Silberschatz, Galvin and Gagne ©2018
Ordinary Pipes

● Sıradan Borular standart üretici-tüketici tarzında iletişime izin verir


● Üretici bir uca yazar (borunun yazma-ucu )
● Tüketici diğer uçtan okur (borunun okuma-ucu )
● Sıradan borular bu nedenle tek yönlüdür
● İletişim kuran süreçler arasında ebeveyn-çocuk ilişkisi gerektirir

● Windows bunları anonim borular olarak adlandırır


Operating System Concepts – 10th 3.40 Silberschatz, Galvin and Gagne ©2018
Ordinary Pipes

Operating System Concepts – 10th 3.41 Silberschatz, Galvin and Gagne ©2018
Ordinary Pipes

Operating System Concepts – 10th 3.42 Silberschatz, Galvin and Gagne ©2018
Ordinary Pipes

Operating System Concepts – 10th 3.43 Silberschatz, Galvin and Gagne ©2018
Ordinary Pipes

UYGULAMA

Operating System Concepts – 10th 3.44 Silberschatz, Galvin and Gagne ©2018
Named Pipes

● Adlandırılmış Borular sıradan borulardan daha güçlüdür


● İletişim çift yönlüdür
● İletişim kuran süreçler arasında ebeveyn-çocuk ilişkisi gerekli
değildir
● Birkaç süreç iletişim için adlandırılmış boruyu kullanabilir
● Hem UNIX hem de Windows sistemlerinde sağlanır

Operating System Concepts – 10th 3.45 Silberschatz, Galvin and Gagne ©2018
Named Pipes

Operating System Concepts – 10th 3.46 Silberschatz, Galvin and Gagne ©2018
Example : Named Pipes

1. Terminal ekranı

2. Terminal ekranı

Operating System Concepts – 10th 3.47 Silberschatz, Galvin and Gagne ©2018
Example : Named Pipes

Operating System Concepts – 10th 3.48 Silberschatz, Galvin and Gagne ©2018
3.8. İstemci-Sunucu Sistemlerinde İletişim

● Soketler
● Uzak Prosedür Çağrıları

Operating System Concepts – 10th 3.49 Silberschatz, Galvin and Gagne ©2018
3.8.1. Soketler

● Bir soketi , iletişim için bir uç noktası olarak tanımlanır

● IP adresinin ve bağlantı noktasının birleştirilmesi - bir ana


bilgisayardaki ağ hizmetlerini ayırt etmek için mesaj paketinin
başlangıcına dahil edilen bir sayı

● soketi 161.25.19.8:1625 , 161.25.19.8 ana bilgisayarındaki


bağlantı noktasını 1625 ifade eder

● İletişim bir çift soketi arasında gerçekleşir

● 1024 altındaki tüm bağlantı noktaları iyi bilinen, standart


hizmetler için kullanılır

● Özel IP adresi 127.0.0.1 (loopback) sürecin çalıştığı sisteme


atıfta bulunmak için

Operating System Concepts – 10th 3.50 Silberschatz, Galvin and Gagne ©2018
Well-known ports

- https://www.webopedia.com/reference/well-known-tcp-port-numbers/
- https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

Operating System Concepts – 10th 3.51 Silberschatz, Galvin and Gagne ©2018
3.8.1. Sockets

Operating System Concepts – 10th 3.52 Silberschatz, Galvin and Gagne ©2018
Socket Communication

Operating System Concepts – 10th 3.53 Silberschatz, Galvin and Gagne ©2018
Example : Sockets in Java

Kaynak : https://www.javatpoint.com/socket-programming
Operating System Concepts – 10th 3.54 Silberschatz, Galvin and Gagne ©2018
Örnek: Java'da Soketler: Sunucu

● Üç tip priz
● Bağlantı odaklı (TCP)
● Bağlantısız (UDP)
● MulticastSocket sınıfı- veriler birden fazla alıcıya gönderilebilir

Operating System Concepts – 10th 3.55 Silberschatz, Galvin and Gagne ©2018
TCP vs. UDP

Kaynak : https://www.yazilimperver.com/index.php/2019/09/29/qt-tcp-sunucu-uygulamasi-bcom-serisi-4/

Operating System Concepts – 10th 3.56 Silberschatz, Galvin and Gagne ©2018
Example : Sockets in Java : Server
Consider this “Date” server in Java

Operating System Concepts – 10th 3.57 Silberschatz, Galvin and Gagne ©2018
Example : Sockets in Java : Müşteri
The equivalent Date client

Operating System Concepts – 10th 3.58 Silberschatz, Galvin and Gagne ©2018
Example : Sockets in Java : Result

Operating System Concepts – 10th 3.59 Silberschatz, Galvin and Gagne ©2018
Uzak Prosedür Çağrıları
● Uzak yordam çağrısı (RPC) soyutlar yordam çağrıları ağa
bağlı sistemlerde süreçler arasında
● Hizmet farklılaştırması için yine bağlantı noktalarını
kullanır
● Stub'lar - sunucudaki gerçek prosedür için istemci tarafı
proxy'si
● İstemci tarafı saplama sunucuyu bulur ve parametreleri
marshall'lar
● Sunucu tarafı saplama bu mesajı alır, marshall parametrelerini
açar ve sunucuda prosedürü gerçekleştirir
● Windows'ta, saplama kodu Microsoft Arayüz Tanımlama Dili
(MIDL) ile yazılmış spesifikasyondan derlenir.

Operating System Concepts – 10th 3.60 Silberschatz, Galvin and Gagne ©2018
Uzaktan Prosedür Çağrıları (Devam)
● Veri gösterimi, farklı mimarileri hesaba katmak için Harici Veri
Gösterimi (XDL) formatı aracılığıyla ele alınır
● Büyük-endian ve küçük-endian
● Uzaktan iletişim, yerel iletişime göre daha fazla hata
senaryosuna sahiptir
● Mesajlar en fazla bir kez yerine tam olarak bir kez
iletilebilir
● İşletim sistemi genellikle istemci ve sunucuyu bağlamak için
bir buluşma (veya çöpçatan) hizmeti sağlar

Operating System Concepts – 10th 3.61 Silberschatz, Galvin and Gagne ©2018
Execution of RPC

Operating System Concepts – 10th 3.62 Silberschatz, Galvin and Gagne ©2018
Example : Remote Procedure Calls

Kaynak : https://www.tutorialspoint.com/python_network_programming/python_remote_procedure_call.htm
Operating System Concepts – 10th 3.63 Silberschatz, Galvin and Gagne ©2018
End of Chapter 3

Operating System Concepts – 10th Silberschatz, Galvin and Gagne ©2018

You might also like