You are on page 1of 44

Bölüm 3: Süreç Kavramı

Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009
Bölüm 3: Süreç Kavramı
 Süreç Kavramı
 Süreç İş Planlaması (Process Scheduling)
 Süreçler Üzerindeki İşlemler
 Süreçlerarası İletişim (Interprocess Communication (IPC))
 IPC Sistem Örnekleri
 İstemci-Sunucu (Client-Server) Sistemlerinde İletişim

Operating System Concepts – 8th Edition 3.2 Silberschatz, Galvin and Gagne ©2009
Süreç Kavramı
 Süreç (Process) – çalışan bir program (süreç işletimi ardışık bir şekilde
devam etmelidir) olarak düşünülebilir
 Sürecin görevini yerine getirebilmesi için bazı kaynaklara (CPU zamanı,
bellek, dosyalar ve G/Ç aygıtları gibi) ihtiyacı vardır.
 Geçmişte bir süreç sadece tek bir iş parçacığını (Thread) kontrol
ederken, modern işletim sistemleri birden çok iş parçacığına sahip
süreçleri desteklemektedir
 İşletim sistemi birçok farklı program çalıştırır:
Komut listesi sistemleri (Batch system) – işleri (jobs) işletir

 Zaman paylaşımlı sistemler (Time-shared systems) – kullanıcı
programları veya görevleri (tasks) işletir
 Kitapta, iş (job) ve süreç (process) terimleri yer değiştirerek
kullanılmaktadır
 Süreçler aşağıdakileri içerir:
 Program sayacı (program counter)
 Yığıt (stack) – Geçici veri (fonksiyon parametreleri, dönüş adresleri
vb.)
 Veri bölümü (data section) – Global değişkenler
 Yığın (Heap) – süreç çalışması
th
Operating System Concepts – 8 Edition 3.3
sırasında dinamik olarak tahsis
Silberschatz, edilir
Galvin and Gagne ©2009
Bellekteki Süreç

Yığıt
( )

Yığın
( )
Veri
( )
Metin
( )

Operating System Concepts – 8th Edition 3.4 Silberschatz, Galvin and Gagne ©2009
Süreç Durumu (Process State)
 Bir süreç çalışırken farklı durumlarda (state) bulunmaktadır
 yeni (new): Süreç yaratılmaktadır
 çalışıyor (running): Komutlar işletilecek
 bekliyor (waiting): Süreç bir olayın olmasını bekliyor (G/Ç'ın tamamlanması
veya bir sinyalin alınması gibi)
 hazır (ready): Süreç bir işlemciye atanmayı bekliyor
 sonlandırıldı (terminated): Süreç çalışmayı bitirdi

Operating System Concepts – 8th Edition 3.5 Silberschatz, Galvin and Gagne ©2009
Süreç Durum Diyagramı

yeni kabul edilen kesme çıkış sonlandırıldı

hazır çalışıyor

İş planlayıcı dağıtım
G/Ç veya olay tamamlanması G/Ç veya olay bekleme
bekliyor

Operating System Concepts – 8th Edition 3.6 Silberschatz, Galvin and Gagne ©2009
Süreç Kontrol Bloğu
(Process Control Block (PCB))
Her süreçle ilişkilendirilen bilgiler
 Süreç durumu (Process state)
 Program sayacı (Program counter)
 CPU kayıtçıları (CPU registers)
 CPU iş zamanlaması bilgisi (CPU scheduling information)
 Bellek yönetimi bilgisi (Memory-management information)
 Hesaplama bilgisi (Accounting information)
 G/Ç durum bilgisi (I/O status information)

Operating System Concepts – 8th Edition 3.7 Silberschatz, Galvin and Gagne ©2009
Süreç Kontrol Bloğu
(Process Control Block (PCB))

süreç durumu
süreç numarası
program sayacı

kayıtçılar

bellek limitleri
açık dosyaların listesi

Operating System Concepts – 8th Edition 3.8 Silberschatz, Galvin and Gagne ©2009
Süreçten Sürece CPU Geçişi
Süreç S0 İşletim Sistemi Süreç S1
Kesme veya sistem çağrısı
çalışıyor
Durumu PCB0'a kaydet

boş

Durumu PCB1'dan yükle

boş Kesme veya sistem çağrısı çalışıyor

Durumu PCB1'e kaydet

boş

Durumu PCB0'den yükle


çalışıyor

Operating System Concepts – 8th Edition 3.9 Silberschatz, Galvin and Gagne ©2009
Süreç İş Planlama Kuyrukları
(Process Scheduling Queues)

 Görev Kuyruğu (Job queue) – sistemdeki tüm süreçler


 Hazır Kuyruğu (Ready queue) – ana bellekteki hazır ve
çalışmayı bekleyen tüm süreçler
 Aygıt Kuyrukları (Device queues) – Bir G/Ç aygıtını bekleyen
tüm süreçler
 Farklı kuyruklar arasında taşınan tüm süreçler

Operating System Concepts – 8th Edition 3.10 Silberschatz, Galvin and Gagne ©2009
Hazır Kuyruğu ve Farklı G/Ç Aygıt Kuyrukları

Operating System Concepts – 8th Edition 3.11 Silberschatz, Galvin and Gagne ©2009
Süreç İş Planlaması Sunumu

hazır kuyruğu

G/Ç G/Ç kuyruğu G/Ç isteği

zaman dilimi
doldu

çocuk alta çatallan


çalışır (fork a child)

kesme kesme
oluşur bekle

Operating System Concepts – 8th Edition 3.12 Silberschatz, Galvin and Gagne ©2009
Planlayıcılar (Schedulers)

 Uzun-vadeli planlayıcı (iş planlayıcısı) – hangi süreçlerin hazır


kuyruğuna (ready queue) taşınacağını seçer
 Kısa-vadeli planlayıcı (CPU planlayıcısı) – hazır kuyruğundaki
hangi sürecin bir sonra çalıştırılacağını seçer ve CPU'yu tahsis
eder
 Orta-vadeli planlayıcı

Operating System Concepts – 8th Edition 3.13 Silberschatz, Galvin and Gagne ©2009
Orta-vadeli Planlayıcının Toplanması

getirme götürme
( ) Kısmi olarak çalışan ( )
götürülmüş süreçler

hazır kuyruğu son

G/Ç G/Ç bekleyen


kuyruklar

Operating System Concepts – 8th Edition 3.14 Silberschatz, Galvin and Gagne ©2009
Planlayıcılar
 Kısa-vadeli planlayıcı çok sık uyandırılır (milisaniyeler) ⇒ (çok hızlı
olmalı)
 Uzun-vadeli planlayıcı çok nadir uyandırılır (saniyeler, dakikalar) ⇒
(yavaş olabilir)
 Uzun-vadeli planlayıcı çoklu programlama (multiprogramming)
derecesini kontrol eder
 Süreçler iki şekilde tanımlanabilir:
 G/Ç-bağımlı süreçler – G/Ç yapmaya hesaplamadan daha çok
ayırırlar, birçok kısa CPU hamlesi (CPU bursts)
 CPU-bağımlı süreçler – çoğu zamanı hesaplamaya ayırır, az
miktarda çok uzun CPU hamlesi

Operating System Concepts – 8th Edition 3.15 Silberschatz, Galvin and Gagne ©2009
Durum Değişikliği (Context Switch)
 CPU bir süreçten diğerine geçiş yaptığında, sistem eski sürecin durumunu
kaydetmeli ve yeni süreç için kaydedilen durumu bir durum değişikliği
(context switch) aracılığıyla yüklemelidir.
 Bir sürecin durumu Program Kontrol Bloğu (PCB) içinde bulunur
 Durum değişikliği bir yüktür, sistem değişiklik süresince yararlı bir iş
yapmamaktadır
 Bu süre donanım desteğine bağlıdır

Operating System Concepts – 8th Edition 3.16 Silberschatz, Galvin and Gagne ©2009
Süreç Yaratma (Process Creation)
 Ana süreç alt süreçler yaratır, ayrıca bu alt süreçler de başka süreçler
yaratarak bir süreç ağacı oluştururlar
 Genellikle süreçler bir süreç tanımlayıcı (process identifier (pid))
tarafından tanımlanır ve yönetilirler
 Kaynak paylaşımı
 Ana ve alt süreçler bütün kaynakları paylaşır
 Alt süreçler ana (üst) süreçlerin kaynaklarının bir altkümesini paylaşırlar
 Ana ve alt süreçler hiç kaynak paylaşmazlar
 İşletim (Execution)
 Ana ve alt süreçer koşutzamanlı işletilirler
 Ana süreç alt süreçler yok olana kadar bekler

Operating System Concepts – 8th Edition 3.17 Silberschatz, Galvin and Gagne ©2009
Süreç Yaratma (Process Creation)
 Adres alanı açısından iki seçenek vardır
 Alt süreç ana sürecin eşidir
 Alt sürece yüklenmiş yeni bir program vardır
 UNIX örnekleri
 fork sistem çağrısı yeni bir süreç yaratır
 exec sistem çağrısı fork'dan sonra sürecin bellek alanına yeni bir
program yüklenmesi amacıyla kullanılır

Operating System Concepts – 8th Edition 3.18 Silberschatz, Galvin and Gagne ©2009
Süreç Yaratma

ana ( ) devam eder

alt ( )

Operating System Concepts – 8th Edition 3.19 Silberschatz, Galvin and Gagne ©2009
Farklı Bir Sürece Çatallanan C Programı
int main()
{
pid_t pid;
/* fork another process */
pid = fork();
if (pid < 0) { /* error occurred */
fprintf(stderr, "Fork Failed");
exit(-1);
}
else if (pid == 0) { /* child process */
execlp("/bin/ls", "ls", NULL);
}
else { /* parent process */
/* parent will wait for the child to complete */
wait (NULL);
printf ("Child Complete");
}
return(0);
}

Operating System Concepts – 8th Edition 3.20 Silberschatz, Galvin and Gagne ©2009
Solaris İşletim Sisteminde Bir Süreç Ağacı

Operating System Concepts – 8th Edition 3.21 Silberschatz, Galvin and Gagne ©2009
Sürecin Sonlandırılması
 Süreç son komutu işletir ve işletim sisteminden sonlandırılması için
izin ister (exit)
 Veri alt süreçten ana sürece gönderilir (wait aracılığıyla)
 Sürecin kaynakları işletim sistemi tarafından serbest bırakılır
(deallocate)
 Ana süreç alt süreçlerin çalışmasını sonlandırabilir (abort)
 Alt süreç tahsis edilen kaynakları aşmıştır
 Alt sürece verilen göreve (task) ihtiyaç kalmamıştır
 Ana süreç bitiyorsa
 Bazı işletim sistemlerinde ana süreç sonlandırılıyorsa alt
süreçlerin de devam etmesine izin verilmez
– Bütün alt süreçler sonlandırılır – kademeli sonlandırma
(cascading termination)

Operating System Concepts – 8th Edition 3.22 Silberschatz, Galvin and Gagne ©2009
Süreçlerarası İletişim
 Bir sistemdeki süreçler bağımsız (independent) veya işbirliği
(cooperating) halinde olabilirler
 İşbirliği yapan süreç diğer süreçleri (veri paylaşımı dahil olmak
üzere) etkileyebilir veya onlardan etkilenebilir
 Süreçlerin işbirliği yapma sebepleri:
 Bilgi paylaşımı (Information sharing)
 Hesaplamayı hızlandırma
 Modülerlik
 Kolaylık (Convenience)
 İşbirliği yapan süreçler süreçlerarası iletişime (interprocess
communication (IPC)) ihtiyaç duyarlar
 IPC'nin iki modeli vardır
 Paylaşılan bellek (Shared memory)
 Mesaj geçişi (Message passing)

Operating System Concepts – 8th Edition 3.23 Silberschatz, Galvin and Gagne ©2009
İletişim Modelleri

Mesaj geçişi Paylaşılan Bellek

Operating System Concepts – 8th Edition 3.24 Silberschatz, Galvin and Gagne ©2009
Süreçlerarası İletişim – Mesaj Geçişi

 Süreçlerin haberleşme ve eylemlerini senkronize etmeleri için gerekli


mekanizmadır
 Mesaj sistemi – süreçler birbirleri ile paylaşılan değişkenlere bakmadan
haberleşirler
 IPC özelliği iki işlem sağlar:
 send(message) – mesaj boyutu sabit ya da değişken olabilir
 receive(message)
 Eğer P ve Q haberleşmek istiyorlarsa;
 Aralarında bir haberleşme bağlantısı (communication link) kurulmasına
 send/receive (gönder/al) aracılığıyla mesaj değiş tokuşuna ihtiyaçları
vardır
 İletişim bağlantısının kurulması
 Fiziksel (ör., paylaşılan bellek, donanım veriyolu)
 Mantıksal (ör., mantıksal özellikler)

Operating System Concepts – 8th Edition 3.25 Silberschatz, Galvin and Gagne ©2009
Uygulama Soruları
 Bu bağlantılar (link) nasıl kuruluyor?
 Bir bağlantı iki süreçten daha fazlası ile ilişkilendirilebilir mi?
 Her haberleşen süreç çifti arasında kaç bağlantı olabilir?
 Bir bağlantının kapasitesi nedir?
 Bir bağlantının taşıyabileceği mesajın boyutu sabit mi yoksa değişken
midir?
 Bir bağlantı tek yönlü mü, çift yönlü müdür?

Operating System Concepts – 8th Edition 3.26 Silberschatz, Galvin and Gagne ©2009
Direk İletişim
 Süreçler birbirlerini açık olarak adlandırmalıdır:
 send (P, message) – P sürecine bir mesaj yolla
 receive(Q, message) – Q sürecinden bir mesaj al
 İletişim bağlantılarının özellikleri
 Bağlantılar otomatik olarak kurulur
 Her bağlantı tek bir haberleşen süreç çifti ile ilişkilendirilmiştir
 Her çift arasında sadece tek bir bağlantı vardır
 Bağlantı tek yönlü olabilir ama genellikle çift yönlüdür

Operating System Concepts – 8th Edition 3.27 Silberschatz, Galvin and Gagne ©2009
Dolaylı (Indirect) İletişim
 Mesajlar posta kutularına (port olarak da adlandırılır) gönderilmekte ve
buradan alınmaktadır
 Her posta kutusunun tekil id'si vardır
 Süreçler sadece bir posta kutusunu paylaşıyorlarsa haberleşebilirler
 İletişim bağlantılarının özellikleri:
 Bağlantı sadece süreçler ortak bir posta kutusu paylaşıyorlarsa
kurulur
 Bir bağlantı birçok süreçle ilişkilendirilebilir
 Her süreç çifti birçok haberleşme bağlantısı paylaşabilir
 Bağlantı tek yönlü veya çift yönlü olabilir

Operating System Concepts – 8th Edition 3.28 Silberschatz, Galvin and Gagne ©2009
Dolaylı İletişim
 Operasyonlar
 Yeni bir posta kutusu yaratma
 Posta kutusu aracılığıyla mesaj gönderme ve alma
 Posta kutusunu yok etme
 Temeller (Primitives) şu şekilde tanımlanmaktadır:
send(A, message) – posta kutusu A'ya bir mesaj yolla
receive(A, message) – posta kutusu A'dan bir mesaj al

Operating System Concepts – 8th Edition 3.29 Silberschatz, Galvin and Gagne ©2009
Dolaylı İletişim
 Posta kutusu paylaşımı
 P1, P2, ve P3 posta kutusu A'yı paylaşır
 P1, gönderir; P2 ve P3 alır
 Mesajı kim almaktadır?
 Çözümler
 En fazla iki sürecin ilişkilendirilebileceği bir bağlantı yaratılmasına izin
vermek
 Aynı anda sadece tek bir sürecin alma işlemi gerçekleştirmesine izin
vermek
 Sistemin alıcıyı rastgele şekilde seçmesine izin vermek. Gönderen
alıcının kim olduğu konusunda daha sonra bilgilendirilir.

Operating System Concepts – 8th Edition 3.30 Silberschatz, Galvin and Gagne ©2009
Senkronizasyon
 Mesaj geçme bloklayarak veya bloklamadan gerçekleşebilir
 Bloklama (Blocking) sekronize (synchronous) olarak kabul edilir
 Bloklayarak Gönderim (Blocking send) işleminde mesaj alıcı
süreç veya posta kutusu tarafından alınıncaya kadar gönderen
süreç bloklanır
 Bloklayarak Alım (Blocking receive) işleminde bir mesaj
ulaşılabilir oluncaya kadar alıcı bloklanır
 Bloklamama (Non-blocking) ise asenkron (asynchronous) olarak
kabul edilir
 Bloklamadan gönderim (Non-blocking send) işleminde
gönderici mesajı gönderir ve işleme devam eder
 Bloklamadan alım (Non-blocking receive) işleminde alıcı ya
geçerli bir mesaj ya da sıfır (null) alır

Operating System Concepts – 8th Edition 3.31 Silberschatz, Galvin and Gagne ©2009
Tamponlama (Buffering)
 Bağlantıya (link) mesaj kuyruklarının eklenmesi üç yoldan biri ile
gerçekleştirilir:
1. Sıfır kapasite – Kuyruğun max. boyutu 0 mesajdır. Dolayısıyla
bağlantı üzerinde bekleyen mesaj yoktur. Bu yüzden gönderici
alıcı mesajı alıncaya kadar bağlantıyı bloklamalıdır (randevu)
2. Sınırlı kapasite – n mesajdan oluşan sınırlı uzunluk
Bağlantı (link) dolu ise gönderici bekler
3. Sınırsız kapasite – sonsuz uzunluk
Gönderici asla beklemez

Operating System Concepts – 8th Edition 3.32 Silberschatz, Galvin and Gagne ©2009
IPC Sistem Örneği - POSIX
 POSIX Paylaşılan Bellek
 Süreç önce paylaşılan bellek segmentini yaratır
segment id = shmget(IPC PRIVATE, size, S_IRUSR |
S_IWUSR);
 Bu paylaşılan belleğe erişmek isteyen süreç ona bağlanmalıdır
shared memory = (char *) shmat(id, NULL, 0);
 Şimdi süreç paylaşılan belleğe yazabilir
sprintf(shared_memory, "Writing to shared memory");
 İşlem bittikten sonra süreç paylaşılan belleği adres alanından ayırabilir
shmdt(shared_memory);

Operating System Concepts – 8th Edition 3.33 Silberschatz, Galvin and Gagne ©2009
IPC Sistem Örneği - Mach
 Mach iletişimi mesaj tabanlıdır
 Sistem çağrıları bile mesajdır
 Her görev (task) yaratılırken iki posta kutusuna sahiptir – Çekirdek
(Kernel) ve Bildirim (Notify)
 Mesaj transferi için sadece üç sistem çağrısına ihtiyaç vardır
msg_send(), msg_receive(), msg_rpc()
 Postakutuları iletişim için gereklidir ve port_allocate()komutu
aracılığıyla yaratılırlar

Operating System Concepts – 8th Edition 3.34 Silberschatz, Galvin and Gagne ©2009
IPC Sistem Örneği – Windows XP

 Yerel prosedür çağrısı (local procedure call (LPC)) özelliği aracılığıyla


mesaj geçişi merkezlidir
 Sadece aynı sistemdeki süreçler arasında çalışır
 İletişim kanallarını kurmak ve sürdürmek için portlar (posta kutuları gibi)
kullanılır
 İletişim aşağıdaki gibi gerçekleşir:
 İstemci altsistemin bağlantı port nesnesine bir yol açar
 İstemci bir bağlantı isteği gönderir
 Sunucu iki özel iletişim portu yaratır ve bunlardan bir tanesine olan
yolu istemciye geri döndürür
 İstemci ve sunucu bu portu kullanarak mesaj gönderme veya geri
çağırma ve cevapları dinleme işlemlerini gerçekleştirirler

Operating System Concepts – 8th Edition 3.35 Silberschatz, Galvin and Gagne ©2009
Windows XP'de Yerel Prosedür Çağrıları

İstemci Sunucu
Bağlantı
isteği Bağlantı Yol
Portu

Yol İstemci
İletişim Portu

Sunucu Yol
İletişim Portu

Paylaşılan
Oturum Nesnesi
(<=256 byte)

Operating System Concepts – 8th Edition 3.36 Silberschatz, Galvin and Gagne ©2009
İstemci-Sunucu (Client-Server)
Sistemlerinde İletişim

 Soketler (Sockets)
 Uzak Prosedür Çağrıları (Remote Procedure Calls (RPC))
 Uzak Metot Uyandırma (Remote Method Invocation (RMI)(Java))

Operating System Concepts – 8th Edition 3.37 Silberschatz, Galvin and Gagne ©2009
Soketler
 Soket iletişimde son nokta olarak tanımlanır
 IP adresi ve portun birbirine bağlanmasıdır
 161.25.19.8:1625 Soketi, 161.25.19.8 sunucusunda 1625
numaralı port anlamına gelir
 İletişim soket çiftleri arasında gerçekleşir
 En bilinen portlar;
 23 – Telnet sunucusu
 21 – FTP sunucusu
 80 – HTTP sunucusu

Operating System Concepts – 8th Edition 3.38 Silberschatz, Galvin and Gagne ©2009
Soket İletişimi

Operating System Concepts – 8th Edition 3.39 Silberschatz, Galvin and Gagne ©2009
Uzak Prosedür Çağrıları
(Remote Procedure Calls)
 Uzak prosedür çağrıları (RPC) ağ sistemlerindeki süreçler arasındaki
prosedür çağrılarını soyutlar
 Koçan (Stubs) – sunucudaki güncel prosedür için istemci tarafındaki
proxy'dir
 İstemci tarafı koçanı sunucunun yerini belirler ve parametreleri sıralar
(marshal)
 Sunucu tarafı koçanı mesajı alır, sıralanan parametreleri açar ve
sunucudaki prosedürü işletir

Operating System Concepts – 8th Edition 3.40 Silberschatz, Galvin and Gagne ©2009
RPC'nin İşletilmesi
istemci mesajlar sunucu

Kullanıcı prosedür
X'e RPC mesajları
göndermek için
çekirdeği çağırır

Kimden: istemci
Çekirdek port Eşleyici
Kime: sunucu
numarasını bulmak Port: eşleyici mesajı alır,
için eşleyiciye Re: RPC X için cevabı arar
mesaj gönderir adres

Çekirdek Kimden: sunucu Eşleyici


Kime: istemci
kullanıcı RPC Port: çekirdek istemciye P
mesajında P Re: RPC X portu ile cevap
portunu Port: P verir
yerleştirir

Çekirdek Kimden: istemci P Portunu


RPC'yi Kime: sunucu dinleyen hayalet
Gönderir Port: Port P program
<içerik>
(daemon) mesajı
alır

Çekirdek Kimden: RPC Hayalet


cevabı alır, ve Port: Port P program istek
kullanıcıya Kime: çekirdek ve süreçleri
<çıkış>
iletir çıkışa
gönderilir
Operating System Concepts – 8th Edition 3.41 Silberschatz, Galvin and Gagne ©2009
Uzak Metot Uyandırma
(Remote Method Invocation)
 Uzak Metot Uyandırma (Remote Method Invocation (RMI)) Uzak Prosedür
Çağırma (RPC) ile aynı yapıya sahip bir Java mekanizmasıdır
 RMI, bir makinedeki bir Java programının uzaktaki bir nesnede yer alan
metodu uyandırmasına (çağırmasına) izin vermektedir

Operating System Concepts – 8th Edition 3.42 Silberschatz, Galvin and Gagne ©2009
Parametreleri Paketleme
(Marshalling Parameters)
istemci uzak nesne

Koçan İskelet
( ) ( )

Operating System Concepts – 8th Edition 3.43 Silberschatz, Galvin and Gagne ©2009
Bölüm 3 Son

Operating System Concepts – 8th Edition, Silberschatz, Galvin and Gagne ©2009

You might also like