Professional Documents
Culture Documents
Bölüm 3: Süreçler
İş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
İşletim Sistemi Kavramları - 10. Baskı 3.10 Silberschatz, Galvin ve Gagne ©2018
Süreç Durumu
İş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)
İş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
İşletim Sistemi Kavramları - 10. Baskı 3.16 Silberschatz, Galvin ve Gagne ©2018
3.2. Süreç Çizelgeleme
İş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
İş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
İş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
İşletim Sistemi Kavramları - 10. Baskı 3.39 Silberschatz, Galvin ve Gagne ©2018
3.3.2. Süreç Sonlandırma
İş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