Professional Documents
Culture Documents
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ı
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ş
boş
Operating System Concepts – 8th Edition 3.9 Silberschatz, Galvin and Gagne ©2009
Süreç İş Planlama Kuyrukları
(Process Scheduling Queues)
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
zaman dilimi
doldu
kesme kesme
oluşur bekle
Operating System Concepts – 8th Edition 3.12 Silberschatz, Galvin and Gagne ©2009
Planlayıcılar (Schedulers)
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
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
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
Operating System Concepts – 8th Edition 3.24 Silberschatz, Galvin and Gagne ©2009
Süreçlerarası İletişim – Mesaj Geçişi
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
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
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