You are on page 1of 46

Subscribe to DeepL Pro to translate larger documents.

Visit www.DeepL.com/pro for more information.

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

İşletim Sistemi Kavramları - 10. Baskı Silberschatz, Galvin ve Gagne ©2018


Bölüm 3: Süreçler
Süreç Kavramı
Süreç Çizelgeleme
Süreçler Üzerinde İşlemler
Süreçler Arası İletişim
Paylaşımlı Bellek Sistemlerinde
IPC Mesaj İleten Sistemlerde IPC
IPC Sistemlerine Örnekler
İstemci-Sunucu Sistemlerinde İletişim

İşletim Sistemi Kavramları - 10. Baskı 3.2 Silberschatz, Galvin ve Gagne ©2018
Hedefler
Bir sürecin ayrı bileşenlerini tanımlamak ve bir işletim
sisteminde nasıl temsil edildiklerini ve zamanlandıklarını
göstermek.
Bu işlemleri gerçekleştiren uygun sistem çağrılarını kullanarak
programlar geliştirmek de dahil olmak üzere, bir işletim
sisteminde süreçlerin nasıl oluşturulduğunu ve
sonlandırıldığını açıklamak.
kullanarak işlemler arası iletişimi tanımlayın ve karşılaştırın
paylaşılan bellek ve mesaj geçişi.
İşlemler arası iletişimi gerçekleştirmek için boruları ve POSIX
paylaşımlı belleği kullanan programlar tasarlayın.
Soketleri ve uzaktan yordam çağrılarını kullanarak istemci-
sunucu iletişimini tanımlama.
Linux işletim sistemi ile etkileşime giren çekirdek modülleri
tasarlama.

İşletim Sistemi Kavramları - 10. Baskı 3.3 Silberschatz, Galvin ve Gagne ©2018
İşletim Sistemi Kavramları - 10. Baskı 3.4 Silberschatz, Galvin ve Gagne ©2018
3.1. Süreç Kavramı
Bir işletim sistemi, bir süreç olarak çalışan çeşitli programları yürütür.
Süreç - yürütülmekte olan bir program; sürecin yürütülmesi
sıralı bir şekilde ilerlemelidir
Çoklu parçalar
Metin bölümü olarak da adlandırılan program kodu
Program sayacı, işlemci kayıtları dahil mevcut etkinlik
Geçici veri içeren yığın
⏵İşlev parametreleri, dönüş adresleri, yerel değişkenler
Global değişkenleri içeren veri bölümü
Çalışma zamanı sırasında dinamik olarak tahsis edilen belleği içeren
yığın

İşletim Sistemi Kavramları - 10. Baskı 3.5 Silberschatz, Galvin ve Gagne ©2018
3.1. Süreç Kavramı (Devam)
Program diskte depolanan pasif bir varlıktır (çalıştırılabilir
dosya); süreç aktiftir
Yürütülebilir dosya belleğe yüklendiğinde program süreç haline
gelir
GUI fare tıklamaları ile başlatılan programın yürütülmesi, komut
adının satır girişi, vb.
Bir program birkaç süreç olabilir
Aynı programı çalıştıran birden fazla kullanıcı düşünün

İşletim Sistemi Kavramları - 10. Baskı 3.6 Silberschatz, Galvin ve Gagne ©2018
Bellekteki İşlem

İşletim Sistemi Kavramları - 10. Baskı 3.7 Silberschatz, Galvin ve Gagne ©2018
Bir C Programının Bellek Düzeni

İşletim Sistemi Kavramları - 10. Baskı 3.8 Silberschatz, Galvin ve Gagne ©2018
boyut komutu

İşletim Sistemi Kavramları - 10. Baskı 3.9 Silberschatz, Galvin ve Gagne ©2018
Bir C Programının Bellek Düzeni

⚫ Veri alanı, başlatılmamış verileri ifade eder,


⚫ Bss (sembol tarafından başlatılan blok) şu
anlama gelir
başlatılmış veri
⚫ Dec ve hex değerleri, ondalık ve onaltılık
olarak temsil edilen üç bölümün
toplamıdır

İşletim Sistemi Kavramları - 10. Baskı 3.10 Silberschatz, Galvin ve Gagne ©2018
Süreç Durumu

Bir süreç yürütülürken durum değiştirir


Yeni: Süreç oluşturuluyor
Çalışıyor: Talimatlar yürütülüyor
Bekleme: Süreç bazı olayların gerçekleşmesini bekliyor
Hazır: Süreç bir işlemciye atanmayı bekliyor
Sonlandırıldı: Süreç yürütmeyi bitirdi

İşletim Sistemi Kavramları - 10. Baskı 3.11 Silberschatz, Galvin ve Gagne ©2018
Süreç Durum Diyagramı

İşletim Sistemi Kavramları - 10. Baskı 3.12 Silberschatz, Galvin ve Gagne ©2018
Proses Kontrol Bloğu (PCB)
Her süreçle ilişkili bilgiler (görev kontrol
bloğu olarak da adlandırılır)
Süreç durumu - çalışıyor, bekliyor, vb.
Program sayacı - bir sonraki komutun konumu
yürütmek
CPU kayıtları - tüm işlem merkezli kayıtların
içeriği (akümülatörler, indeks kayıtları, yığın
işaretçileri ve genel amaçlı kayıtlar vb. dahil)
CPU zamanlama bilgileri- öncelikler,
zamanlama kuyruğu işaretçileri

İşletim Sistemi Kavramları - 10. Baskı 3.13 Silberschatz, Galvin ve Gagne ©2018
Proses Kontrol Bloğu (PCB)
Her süreçle ilişkili bilgiler (görev kontrol
bloğu olarak da adlandırılır)

Bellek yönetimi bilgileri - sürece tahsis edilen


bellek (taban ve limit kayıtlarının değeri ve sayfa
tabloları veya segment tabloları, vb...)
Muhasebe bilgileri - kullanılan CPU, başlangıçtan
bu yana geçen süre, zaman sınırları
G/Ç durum bilgileri - G/Ç cihazlarına tahsis edilen
süreç, açık dosyaların listesi

İşletim Sistemi Kavramları - 10. Baskı 3.14 Silberschatz, Galvin ve Gagne ©2018
İplikler
Şimdiye kadar, sürecin tek bir yürütme iş parçacığı var
İşlem başına birden fazla program sayacına sahip olmayı
düşünün Birden fazla konum aynı anda yürütülebilir
Birden fazla kontrol iş parçacığı -> iş parçacığı

Daha sonra iş parçacığı ayrıntıları, çoklu program için depolama alanına
sahip olmalıdır
PCB'deki sayaçlar
Bölüm 4'te ayrıntılı olarak keşfedin

İşletim Sistemi Kavramları - 10. Baskı 3.15 Silberschatz, Galvin ve Gagne ©2018
Linux'ta Süreç Temsili

C yapısı task_struct Sched.h tarafından temsil


edilir
pid t_pid; /* süreç tanımlayıcısı */
longstate; sürecin durumu */ unsigned
inttime_slice zamanlama bilgisi */ struct
task_struct *parent; /* bu sürecin ebeveyni */
struct list_head children; /* bu sürecin çocukları */
structfiles_struct *files açık dosyaların listesi
*/ structmm_struct *mm
bu sürecin adres alanı*/

İşletim Sistemi Kavramları - 10. Baskı 3.16 Silberschatz, Galvin ve Gagne ©2018
3.2. Süreç Çizelgeleme

CPU kullanımını en üst düzeye çıkarın, işlemleri CPU çekirdeğine hızla


geçirin
Süreç zamanlayıcı, CPU çekirdeğinde bir sonraki yürütme
için mevcut süreçler arasından seçim yapar
Süreçlerin zamanlama kuyruklarını korur
Hazır kuyruğu - ana bellekte bulunan, hazır ve
yürütülmeyi bekleyen tüm süreçlerin kümesi
Bekleme kuyrukları - bir olayı bekleyen süreçler kümesi (örn.
I/O)
Süreçler çeşitli kuyruklar arasında geçiş yapar

İşletim Sistemi Kavramları - 10. Baskı 3.17 Silberschatz, Galvin ve Gagne ©2018
İşletim Sistemi Kavramları - 10. Baskı 3.18 Silberschatz, Galvin ve Gagne ©2018
Hazır ve Bekleme Kuyrukları

İşletim Sistemi Kavramları - 10. Baskı 3.19 Silberschatz, Galvin ve Gagne ©2018
Süreç Çizelgelemenin Temsili

İşletim Sistemi Kavramları - 10. Baskı 3.20 Silberschatz, Galvin ve Gagne ©2018
CPU İşlemden İşleme Geçiş
Bağlam geçişi, CPU bir süreçten diğerine
geçiş yapar.

İşletim Sistemi Kavramları - 10. Baskı 3.21 Silberschatz, Galvin ve Gagne ©2018
Bağlam Anahtarı
CPU başka bir işleme geçtiğinde, sistem eski işlemin durumunu
kaydetmeli ve bir bağlam değiştirme yoluyla kaydedilen
durumu yeni işlem için yüklemelidir
PCB'de temsil edilen bir sürecin bağlamı
Bağlam değiştirme süresi ek yüktür; sistem geçiş sırasında
yararlı bir iş yapmaz
İşletim sistemi ve PCB ne kadar karmaşıksa bağlam
değiştirme o kadar uzun sürer
Donanım desteğine bağlı olarak zaman
Bazı donanımlar CPU başına birden fazla kayıt seti sağlar
🡺 aynı anda yüklenen birden fazla bağlam

İşletim Sistemi Kavramları - 10. Baskı 3.22 Silberschatz, Galvin ve Gagne ©2018
Mobil Sistemlerde Çoklu Görev
Bazı mobil sistemler (örneğin, iOS'un ilk sürümleri) yalnızca bir
süreç çalışır, diğerleri askıya alınır
Ekran alanı, kullanıcı arayüzü sınırları nedeniyle iOS bir Tek
ön plan işlemi - kullanıcı arayüzü üzerinden kontrol edilir
Birden fazla arka plan işlemi - bellekte, çalışıyor, ancak
ekranda değil ve sınırlarla
Sınırlamalar arasında tek, kısa görev, olay bildirimi alma, ses
çalma gibi belirli uzun süreli görevler yer alır
Android daha az sınırlama ile ön plan ve arka planda çalışır
Arka plan işlemi görevleri gerçekleştirmek için bir
hizmet kullanır Arka plan işlemi sona erse bile hizmet
çalışmaya devam edebilir
askıya alındı
Hizmetin kullanıcı arayüzü yoktur, küçük bellek kullanımı

İşletim Sistemi Kavramları - 10. Baskı 3.23 Silberschatz, Galvin ve Gagne ©2018
İşletim Sistemi Kavramları - 10. Baskı 3.24 Silberschatz, Galvin ve Gagne ©2018
3.3. Süreçler Üzerinde İşlemler

Sistem aşağıdakiler için mekanizmalar


sağlamalıdır: süreç oluşturma
süreç sonlandirma

İşletim Sistemi Kavramları - 10. Baskı 3.25 Silberschatz, Galvin ve Gagne ©2018
3.3.1. Süreç Oluşturma
Ana süreçler çocuk süreçler yaratır ve bunlar da
diğer süreçleri oluşturarak bir süreç ağacı oluşturur
Genel olarak, bir süreç tanımlayıcısı (pid) aracılığıyla
tanımlanan ve yönetilen süreç
Kaynak paylaşım seçenekleri
Ebeveyn ve çocuklar tüm kaynakları paylaşır
Çocuklar ebeveynin kaynaklarının alt
kümesini paylaşır Ebeveyn ve çocuk hiçbir
kaynağı paylaşmaz
Yürütme seçenekleri
Ebeveyn ve çocuklar eşzamanlı olarak
yürütülür Ebeveyn, çocuklar sonlanana
kadar bekler

İşletim Sistemi Kavramları - 10. Baskı 3.26 Silberschatz, Galvin ve Gagne ©2018
İşletim Sistemi Kavramları - 10. Baskı 3.27 Silberschatz, Galvin ve Gagne ©2018
Linux'ta Süreçler Ağacı

İşletim Sistemi Kavramları - 10. Baskı 3.28 Silberschatz, Galvin ve Gagne ©2018
OSX'te Süreçler Ağacı

İşletim Sistemi Kavramları - 10. Baskı 3.29 Silberschatz, Galvin ve Gagne ©2018
Linux'ta Süreçler Ağacı

İşletim Sistemi Kavramları - 10. Baskı 3.30 Silberschatz, Galvin ve Gagne ©2018
Linux'ta Süreçler Ağacı

İşletim Sistemi Kavramları - 10. Baskı 3.31 Silberschatz, Galvin ve Gagne ©2018
Linux'ta Süreçler Ağacı

⚫ Geleneksel UNIX sistemleri init sürecini tüm alt süreçlerin kökü olarak
tanımlar. init'e (System V init olarak da bilinir) 1 pid atanır ve sistem
başlatıldığında oluşturulan ilk süreçtir.
⚫ Linux sistemleri başlangıçta System V init yaklaşımını benimsedi,
ancak son dağıtımlar bunun yerine systemd'yi getirdi. systemd,
System V init ile aynı şekilde sistemin başlangıç süreci olarak hizmet
eder; ancak init'ten çok daha esnektir ve daha fazla hizmet
sağlayabilir.

İşletim Sistemi Kavramları - 10. Baskı 3.32 Silberschatz, Galvin ve Gagne ©2018
3.3.1. Süreç Oluşturma (Devam)
Adres alanı
Ebeveynin çocuk kopyası
Çocuğun içine yüklenmiş bir
program var UNIX örnekleri
fork() sistem çağrısı yeni süreç oluşturur
exec() sistem çağrısı fork() işlevindensonra kullanılır.
yeni bir program ile sürecin bellek alanı
Üst süreç, alt sürecin sonlandırılması için wait() işlevini çağırır

İşletim Sistemi Kavramları - 10. Baskı 3.33 Silberschatz, Galvin ve Gagne ©2018
3.3.1. Süreç Oluşturma (Devam)
Adres alanı
Ebeveynin çocuk kopyası
Çocuğun içine yüklenmiş bir
program var UNIX örnekleri
fork() sistem çağrısı yeni süreç oluşturur
exec() sistem çağrısı fork() işlevindensonra kullanılır.
yeni bir program ile sürecin bellek alanı
Ana süreç, alt sürecin sonlandırılması için wait() işlevini çağırır

İşletim Sistemi Kavramları - 10. Baskı 3.34 Silberschatz, Galvin ve Gagne ©2018
C Programı
Ayrı Süreci
Çatallama

İşletim Sistemi Kavramları - 10. Baskı 3.35 Silberschatz, Galvin ve Gagne ©2018
Windows API
aracılığıyla Ayrı Bir
İşlem Oluşturma

İşletim Sistemi Kavramları - 10. Baskı 3.36 Silberschatz, Galvin ve Gagne ©2018
3.3.2. Süreç Sonlandırma

İşlem son deyimi yürütür ve ardından exit() sistem çağrısını


kullanarak işletim sisteminden bunu 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

İşletim Sistemi Kavramları - 10. Baskı 3.37 Silberschatz, Galvin ve Gagne ©2018
İşletim Sistemi Kavramları - 10. Baskı 3.38 Silberschatz, Galvin ve Gagne ©2018
3.3.2. Süreç Sonlandırma

Ebeveyn, abort() sistem çağrısını kullanarak alt süreçlerin


yürütülmesini sonlandırabilir. Bunu yapmak için bazı nedenler:
Çocuk tahsis edilen kaynakları aştı
Çocuğa atanan görev artık gerekli değildir
Ebeveyn çıkmaktadır ve işletim sistemleri, ebeveyni
sonlanan bir çocuğun devam etmesine izin vermez

İşletim Sistemi Kavramları - 10. Baskı 3.39 Silberschatz, Galvin ve Gagne ©2018
3.3.2. Süreç Sonlandırma

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


olmasına izin vermez. Bir süreç sonlandırılırsa, tüm çocukları da
sonlandırılmalıdır.
basamaklı fesih. Tüm çocuklar, torunlar vb.
sonlandırıldı.
Sonlandırma işlemi işletim sistemi tarafından başlatılır.
Üst süreç wait()sistem çağrısını kullanarak bir alt sürecin
sonlandırılmasını bekleyebilir. Çağrı, durum bilgilerini ve
sonlandırılan sürecin pid değerini döndürür
pid = wait(&status);
Bekleyen bir ebeveyn yoksa (wait() işlevini çağırmadıysa) süreç bir
zombidir
Ebeveyn wait çağrısı yapmadan sonlandırılmışsa,süreç yetimdir

İşletim Sistemi Kavramları - 10. Baskı 3.40 Silberschatz, Galvin ve Gagne ©2018
İşletim Sistemi Kavramları - 10. Baskı 3.41 Silberschatz, Galvin ve Gagne ©2018
Android Süreç Önem Hiyerarşisi
Mobil işletim sistemleri genellikle bellek gibi sistem kaynaklarını geri
kazanmak için işlemleri sonlandırmak zorundadır. En önemliden en az
önemliye doğru:
o Ön plan süreci
o Görünür süreç
o Hizmet süreci
o Arka plan süreci
o Boş süreç
Android en az önemli olan süreçleri sonlandırmaya başlayacaktır.

İşletim Sistemi Kavramları - 10. Baskı 3.42 Silberschatz, Galvin ve Gagne ©2018
Çoklu İşlem Mimarisi - Chrome Tarayıcı

Birçok web tarayıcısı tek bir işlem olarak çalışıyordu (bazıları hala öyle)
Bir web sitesi sorun çıkarırsa, tüm tarayıcı kilitlenebilir veya
çökebilir Google Chrome Tarayıcı 3 farklı türde çok işlemlidir
süreçler:
Tarayıcı işlemi kullanıcı arayüzünü, disk ve ağ G/Ç'sini yönetir
Renderer işlemi web sayfalarını işler, HTML, Javascript ile ilgilenir.
Açılan her web sitesi için yeni bir renderer oluşturulur
⏵ Sandbox'ta çalışır, disk ve ağ G/Ç'sini kısıtlar, en aza indirir
güvenlik açıklarının etkisi
Her bir eklenti türü için eklenti süreci

İşletim Sistemi Kavramları - 10. Baskı 3.43 Silberschatz, Galvin ve Gagne ©2018
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 süreci, veri paylaşımı da dahil olmak üzere diğer süreçleri
etkileyebilir veya onlardan etkilenebilir
İşbirliği süreçleri için nedenler: Bilgi
paylaşımı
Hesaplama hızı artışı
Modülerlik
Kolaylık
İşbirliği yapan süreçler, süreçler arası iletişime (IPC) ihtiyaç duyar
İki IPC modeli
Paylaşılan bellek
Mesaj geçişi

İşletim Sistemi Kavramları - 10. Baskı 3.44 Silberschatz, Galvin ve Gagne ©2018
İletişim Modelleri
(a) Paylaşılan bellek. (b) Mesaj geçişi.

İşletim Sistemi Kavramları - 10. Baskı 3.45 Silberschatz, Galvin ve Gagne ©2018
Bölüm 3'ün Sonu

İşletim Sistemi Kavramları - 10. Baskı Silberschatz, Galvin ve Gagne ©2018

You might also like