İşletim Sistemleri · İşletim Sistemleri
#03 Süreçler, durumlar ve bağlam değiştirme
Programı çalıştır · durumu sakla · kaldığın yerden sürdür
Soru

Bir not uygulamasını iki kez başlattığımızı düşünün. Birinde alışveriş listesi, diğerinde ders notları açık. İkisi aynı programın komutlarını kullanabilir ama o anda taşıdıkları veriler aynı olmak zorunda değildir. İlk içgüdü, aynı program dosyasının tek bir süreç anlamına geldiğini söylemek olabilir. Oysa bu modelde ayrı süreçler, ayrı kimlik ve ayrı yürütme bilgisi taşır. Gerçek uygulamanın kaç süreç açtığı kendi tasarımına bağlıdır. Kitap ile okuyucuyu ayırmak gibi düşünün. Kitap program olsun. Bir okuyucu belirli bir sayfada, diğeri başka bir sayfada kalabilir. Kitap aynı, kaldıkları yer farklıdır. Bilgisayar, okuyucu gibi hatırlamak yerine bu bilgiyi açık veri yapılarıyla saklar. Tek işlemci çekirdeği birine sıra verdiğinde ötekinin kaldığı yer kaybolmamalıdır.
Yazılı çözüm ve anlatım dökümü(çözümün tamamını gösterir)
Aşağıda defterde yazılan bütün satırlar ve bunlara eşlik eden sesli anlatımın tam metni bulunur.
1. Program çalışırken neye dönüşür?

Kaynak dersin bu bölümündeki son görünüm. Geçen ders: hizmet ve kontrollü geçişBugün: süreç · durum · bağlamSesli anlatım metni
Geçen derste uygulamanın işletim sistemi hizmetlerini kontrollü çağrılarla istediğini gördük. Bugün çalışan programın kimliğini, durumunu ve kaldığı yeri nasıl sakladığımızı konuşacağız. Anahtar kavram süreçtir: yalnız diskteki dosya değil, yürütülmekte olan program ve ona bağlı durum.
2. Aynı program, farklı yürütme kimlikleri

Kaynak dersin bu bölümündeki son görünüm. Aynı kod; ayrı yürütme durumu“Aynı dosya = aynı süreç” varsayımı yanlışKitap → program · okuyucunun durumu → süreçDurumu korumak, yeniden başlayabilmenin şartıdır.Sesli anlatım metni
Bir not uygulamasını iki kez başlattığımızı düşünün. Birinde alışveriş listesi, diğerinde ders notları açık. İkisi aynı programın komutlarını kullanabilir ama o anda taşıdıkları veriler aynı olmak zorunda değildir. İlk içgüdü, aynı program dosyasının tek bir süreç anlamına geldiğini söylemek olabilir. Oysa bu modelde ayrı süreçler, ayrı kimlik ve ayrı yürütme bilgisi taşır. Gerçek uygulamanın kaç süreç açtığı kendi tasarımına bağlıdır. Kitap ile okuyucuyu ayırmak gibi düşünün. Kitap program olsun. Bir okuyucu belirli bir sayfada, diğeri başka bir sayfada kalabilir. Kitap aynı, kaldıkları yer farklıdır. Bilgisayar, okuyucu gibi hatırlamak yerine bu bilgiyi açık veri yapılarıyla saklar. Tek işlemci çekirdeği birine sıra verdiğinde ötekinin kaldığı yer kaybolmamalıdır.
3. Sürecin taşıdığı şeyler

Kaynak dersin bu bölümündeki son görünüm. Kod ve veriYığın: çağrı durumu · öbek: dinamik bellekProgram sayacı · yazmaçlar · kaynaklarŞema kavramsaldır; fiziksel adres yerleşimi değildir.Sesli anlatım metni
Programın yürütülebilir komutları kod bölümüdür. Küresel veriler veri bölümünde tutulabilir. Bunlar, çalışan programın bellek düzenini anlamaya başladığımız parçalar. Fonksiyon çağrısının geçici bilgileri yığında saklanır. Dinamik ayrılan bellek ise öbek dediğimiz alandan gelebilir. Yığın ile öbek aynı iş değildir; gerçek bellek düzeni sisteme göre değişebilir. Program sayacı, sıradaki komutun nerede olduğunu belirtir. Yazmaçlar o anda kullanılan küçük ve hızlı işlemci durumunu taşır. Açık dosyalar gibi kaynaklar da süreçle ilişkilidir. Bu şema fiziksel bellekte kesin adres haritası değildir. Bir süreç, programın komutlarıyla birlikte yürütme bilgisine ve kaynak ilişkilerine sahiptir. Aynı kodu kullanmak bu bilgilerin aynı olmasını gerektirmez.
4. Hazır olmak ile beklemek farklıdır

Kaynak dersin bu bölümündeki son görünüm. Yeni → hazırÇalışıyor ile bekliyor farklıdır.Sonlandırılmış: yürütme bittiHazır: CPU ister · bekliyor: olay isterSesli anlatım metni
Sürecin yeni durumunda oluşturma işlemi sürer. Hazır durumundaysa işlemci verilirse komut yürütebilir; yalnız sırasını bekliyordur. Çalışıyor durumunda işlemci komutlarını yürütür. Bekliyor durumundaysa bir olay gerekir; örneğin dosya okumasının tamamlanması. Yalnız işlemci vermek bu bekleyişi çözmez. İşini bitirdiğinde sonlandırılmış duruma geçer. Bu beş durum, dersin basit modelidir. Gerçek işletim sistemleri daha ayrıntılı durumlar kullanabilir. Bir dosya okuması bekleyen süreç ile işlemci sırası bekleyen süreci aynı kuyruğa koyma içgüdüsü yanlıştır. Birinin verisi henüz hazır değil, diğerinin yalnız işlemciye ihtiyacı var.
5. Bir sürecin durum yolunu adım adım izle

Kaynak dersin bu bölümündeki son görünüm. Yeni → hazır → çalışıyorÇalışıyor → bekliyorBekliyor → hazır → seçilince çalışıyorZaman dilimi biterse: çalışıyor → hazırKontrol: olay gerçekleşmeden bekleme bitmez.Sesli anlatım metni
Not dosyamızı açan süreci takip edelim. Oluşturma biter, süreç hazır kuyruğuna alınır. Zamanlayıcı seçer ve süreç çalışmaya başlar. Süreç dosyadan veri ister ve bu modelde okuma tamamlanana kadar bekler. Çalışıyor durumundan bekliyor durumuna geçer. Bu sürede çekirdek hazır başka bir işi seçebilir. Okuma tamamlanınca süreç hazır duruma döner. Dikkat: hazır olmak, aynı anda işlemciyi almak değildir. Zamanlayıcı onu yeniden seçince çalışıyor durumuna geçer. İşini bitirip çıkar. Zaman dilimi dolduğu için durdurulmuş olsaydı, olay beklemiyorsa hazır duruma dönerdi. Bekleme nedeni, hangi okun doğru olduğunu belirler. Makullük kontrolümüz şu: bekleyen süreç olay gerçekleşmeden sırf işlemci boş diye devam edemez. Böyle bir ok çizmişsek mekanizmayı yanlış anlatmışız demektir.
6. Süreç kontrol bloğu: kaldığın yeri sakla

Kaynak dersin bu bölümündeki son görünüm. PCB: süreç kontrol bloğuDurum · PC · yazmaçlar · kaynak ilişkileriA’nın sonraki komutu: 21 · B’nin sonraki komutu: 70A’yı sakla → B’yi yükle → sonra A’yı sürdürKomut etiketleri, gerçek adres hesabı değildir.Sesli anlatım metni
İşletim sistemi bu bilgileri süreç kontrol bloğu denen bir kayıtla ilişkilendirir. İngilizce kısaltması pi si bi. Bu, sürecin kimliği ve yönetim bilgileri için bir başvuru noktasıdır. Kayıtta süreç durumu, program sayacı ve kaydedilmiş yazmaç bilgileri bulunabilir. Zamanlama ve bellek yönetimi bilgileri, açık dosya ilişkileri ve kullanım kayıtları da gerekir. Özgün, adres yerine komut etiketi kullanan küçük modelimize bakalım. A süreci yirminci komutunu tamamladıysa, sıradaki etiketi yirmi birdir. B daha önce altmış dokuzuncu komutunu bitirmişse sıradaki etiketi yetmiştir. A durdurulunca A için bu bilgi saklanır. B seçilince B için saklanmış bilgi yüklenir. A tekrar seçildiğinde ilk komuttan başlatılmaz; kaldığı yürütme durumundan sürdürülür. Bu etiketler gerçek bellek adresi değildir. Gerçek makinede bir komutun uzunluğu değişebilir; program sayacına körlemesine bir eklemek genel bir adres kuralı olmaz.
7. Bağlam değiştirmenin maliyeti

Kaynak dersin bu bölümündeki son görünüm. Bağlam değişimi: sakla ve yükleYararlı çalışma: 4 × 2 = 8 msGeçiş maliyeti: 3 × 0.2 = 0.6 msToplam: 8.6 ms · ek maliyet payı ≈ %7Sıklık: yanıt verme ile ek maliyet arasında kararSesli anlatım metni
İşlemciyi bir süreçten diğerine verirken eski durumu saklayıp yeni durumu yüklemek bağlam değiştirmedir. Bu sırada yararlı uygulama hesabı ilerlemez. Gerçek maliyet donanıma ve sisteme bağlıdır. Öğretim modelimizde dört yararlı çalışma aralığı var; her biri iki milisaniye sürüyor. Dört çarpı iki, sekiz milisaniye yararlı çalışma eder. Bu dört aralığın arasında üç süreç geçişi var. İlk başlatmayı ve son çıkışı hesaba katmıyoruz. Geçiş başına sıfır nokta iki milisaniye varsayalım. Üç çarpı sıfır nokta iki, sıfır nokta altı milisaniye ek maliyettir. Toplam duvar süresi, sekiz artı sıfır nokta altı; sekiz nokta altı milisaniye. Maliyetin toplam içindeki payı, sıfır nokta altı bölü sekiz nokta altı çarpı yüz; yaklaşık yüzde yedidir. Bu yüzde evrensel bir işletim sistemi ölçümü değildir. Daha sık geçiş, aynı yararlı işi korurken ek maliyeti artırabilir. Daha seyrek geçiş de etkileşimli bir işin sıra beklemesini uzatabilir.
8. Süreçler oluşur, çocuklar yaratır, sonlanır

Kaynak dersin bu bölümündeki son görünüm. Ebeveyn ve çocuk: oluşturma ilişkisiOluşturmak ile başka program yüklemek farklı işlerdir.Bekleme ve sonlanma bilgisi yönetilir.Kimlik · yaşam döngüsü · kaynak ilişkisiSesli anlatım metni
Bir süreç başka süreçler oluşturabilir. Oluşturan ebeveyn, oluşturulan çocuk süreçtir. Bu ilişkiler bir süreç ağacı kurar; soy ilişkisi onların aynı bellek durumunu taşıdığı anlamına gelmez. Bazı sistemlerde oluşturma ve yeni program yükleme ayrı adımlardır. Çocuk başlangıçta benzer bir yürütme durumundan türeyebilir, sonra farklı bir program çalıştırabilir. Hangi kaynakların paylaşıldığı kullanılan mekanizmaya bağlıdır. Ebeveyn çocuğun sonucunu bekleyebilir ya da onunla eşzamanlı ilerleyebilir. Bir süreç sonlanınca işletim sistemi kaynak temizliğini ve sonuç bilgisini yönetir. Sonlanmış olmak ile bütün kayıtların anında yok olması aynı şey değildir. Bu derste belirli bir sistemin bütün oluşturma çağrılarını ezberlemiyoruz. Amacımız, çalışan işleri kimlikleriyle ve yaşam döngüleriyle ayırt etmektir.
9. Kesme geldi: süreç mutlaka değişir mi?

Kaynak dersin bu bölümündeki son görünüm. Soru: her kesme başka sürece geçiş midir?Yanıt: aynı süreç geri dönebilir.Mod değişimi ≠ süreç kimliği değişimiHazır mı, olay mı bekliyor?Sesli anlatım metni
Bir aygıt kesmesi geldiğini düşünün. İşleyici olayı ele alıyor. Bu, mutlaka başka bir sürecin çalışmaya başladığını mı gösterir? Bir an düşünün. Hayır. İşleyici bittiğinde aynı süreç sürdürülebilir. Başka süreç seçilip onun durumu yüklendiyse süreçler arası bağlam değişimi vardır. Kesme hizmeti ile bu seçim ayrı olaylardır. Benzer biçimde bir sistem çağrısı, aynı sürecin çekirdek modunda hizmet alıp dönmesi olabilir. Mod değiştirmek, süreç kimliğini değiştirmek zorunda değildir. Süreç durumuna da bakın: bir olay bekleyen iş ile yalnız işlemci bekleyen işi ayırabiliyorsanız, sonraki zamanlama dersinin temelini kurdunuz.
10. Üç yanlış içgüdü

Kaynak dersin bu bölümündeki son görünüm. Dosya ≠ çalışan süreçBekleme biter → hazır → seçilince çalışırSık geçişlerin ek maliyeti vardır.Kimlik · durum · kaldığın yerSesli anlatım metni
Birinci hata: diskteki program dosyası zaten süreçtir. Hayır; dosya pasif komutlar taşır, süreç çalışan örneğin durumu ve kaynak ilişkileridir. İkinci hata: bekleme bittiğinde süreç doğrudan çalışır. Hayır; hazır olur ve zamanlayıcının seçimini bekler. Üçüncü hata: kısa zaman dilimleri tamamen bedavadır. Hayır; küçük modelimizde geçişler yararlı çalışma dışında maliyet ekledi. Yanıt süresi ile bu maliyeti birlikte düşünmeliyiz. Akılda kalan kural: kimlik süreci ayırır, durum neyi beklediğini söyler, bağlam kaldığı yeri korur.
11. Kaldığın yer kaybolmadan sıra değişir

Kaynak dersin bu bölümündeki son görünüm. İşi durdur; durumu kaybetme.Program · süreç · durum · bağlamSonraki ders: süreçler arası iletişimSesli anlatım metni
Bilgisayar modeline dönelim. Tek yürütme çekirdeği işleri sırayla ilerletirken işletim sistemi her sürecin durumunu ve kaldığı yeri korur. Bellek ve kaynak ilişkileri de sürecin yönetim bilgileridir. Program ile süreci, hazır ile bekliyor durumunu, mod geçişi ile süreçler arası bağlam değişimini ayırdık. Örneğimiz, geçişlerin yararlı çalışma dışında bir maliyeti olduğunu açıkça gösterdi. Bir sonraki derste ayrı süreçlerin nasıl bilgi alışverişi yaptığını göreceğiz. Paylaşılan bellek mi, mesajlaşma mı? Aradaki farkı özgün bir tampon örneğiyle açacağız. Görüşmek üzere.
Kaynak video: Süreçler, durumlar ve bağlam değiştirme (8:05)