İşletim Sistemleri · İşletim Sistemleri

#01 İşletim sistemi ne yapar?

İşletim sistemi ne yapar?

Soru

Sınırlı donanım birçok işe nasıl yetişir?
Başlangıç örneği: kaynak dersin özgün görseli.

Şimdi bilgisayarın içini temsil eden bir modele bakalım. Tek bir işlemci çekirdeği düşünün. Müzik uygulamasını mavi, indirmeyi turuncu, yazı düzenleyicisini morla gösteriyoruz. Üçü de çalışmak istiyor. İlk tahmininiz şu olabilir: işlemci hepsini tam aynı anda yapıyordur. Bu modelde öyle değil. Çekirdek kısa süre müziğin, sonra indirmenin, sonra düzenleyicinin komutlarını yürütüyor. Geçişler hızlı olunca bize işler birlikte ilerliyormuş gibi görünüyor. Çok çekirdekli bir bilgisayarda gerçekten paralel çalışma da mümkündür; az sonra ikisini ayıracağız. Peki bir uygulama dosyanın gelmesini bekliyorsa? İşlemciyi de bekletmek zorunda değiliz. İşletim sistemi hazır olan başka bir işe sıra verebilir. Bugünün sorusu bu: sınırlı donanım nasıl birçok işe yetişiyor?

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. 1. İşletim Sistemleri dersine hoş geldiniz

    İşletim Sistemleri dersine hoş geldiniz
    Kaynak dersin bu bölümündeki son görünüm.
    İlk bölüm: hizmetler ve yapı: İşletim sisteminin yaptığı işler
    Sonra: süreçler ve iş parçacıkları: Çalışan programı temsil etmek
    Ardından: zamanlama ve senkronizasyon: Kaynak paylaşımını güvenli yürütmek
    Kaynak: Silberschatz–Galvin–Gagne Operating System Concepts, 10. baskı Özgün örnekler ve çizimler
    Ön bilgi: işlemci, bellek, depolama. Yeni terimleri birlikte açacağız.

    Sesli anlatım metni

    Merhaba, İşletim Sistemleri dersine hoş geldiniz. Bilgisayarınızda müzik çalarken bir dosya indiriyor ve aynı anda yazı yazıyorsunuz. Peki bu işlerin işlemciyi, belleği ve aygıtları paylaşmasını kim düzenliyor? Bu ders boyunca o görünmez düzeni birlikte açacağız. İşletim sistemi yalnız ekranda gördüğünüz masaüstü değildir. Uygulamalarla donanım arasında çalışan, kaynakları paylaştıran ve hataların yayılmasını sınırlayan bir yazılım katmanıdır. İlk on derste önce bu katmanın hizmetlerini ve yapısını tanıyacağız. Sonra süreçlere ve iş parçacıklarına geçeceğiz; çalışan programın nasıl temsil edildiğini göreceğiz. Ardından işlemci zamanlamasını ve ortak verilere güvenli erişimi, yani senkronizasyonu inceleyeceğiz. Kaynak olarak Silberşats, Galvin ve Ganyanın İşletim Sistemi Kavramları kitabının onuncu baskısındaki konu sırasını izliyoruz. Örnekler ve çizimler bize özgü. Ön bilgi olarak bilgisayarın işlemci, bellek ve depolama içerdiğini bilmeniz yeterli; programlama bilgisi sonraki derslerde yardımcı olacak. Yeni terimleri birlikte açacak, her hesabı adım adım yapacağız.

  2. 2. Sınırlı donanım birçok işe nasıl yetişir?

    Sınırlı donanım birçok işe nasıl yetişir?
    Kaynak dersin bu bölümündeki son görünüm.
    İlk tahmin: “Hepsi tek çekirdekte tam aynı anda mı?”
    Zamanı paylaştır: Komutlar kısa aralıklarla sırayla yürür.
    Beklerken başka işe sıra ver: Hazır bir iş, işlemciyi kullanabilir.

    Sesli anlatım metni

    Şimdi bilgisayarın içini temsil eden bir modele bakalım. Tek bir işlemci çekirdeği düşünün. Müzik uygulamasını mavi, indirmeyi turuncu, yazı düzenleyicisini morla gösteriyoruz. Üçü de çalışmak istiyor. İlk tahmininiz şu olabilir: işlemci hepsini tam aynı anda yapıyordur. Bu modelde öyle değil. Çekirdek kısa süre müziğin, sonra indirmenin, sonra düzenleyicinin komutlarını yürütüyor. Geçişler hızlı olunca bize işler birlikte ilerliyormuş gibi görünüyor. Çok çekirdekli bir bilgisayarda gerçekten paralel çalışma da mümkündür; az sonra ikisini ayıracağız. Peki bir uygulama dosyanın gelmesini bekliyorsa? İşlemciyi de bekletmek zorunda değiliz. İşletim sistemi hazır olan başka bir işe sıra verebilir. Bugünün sorusu bu: sınırlı donanım nasıl birçok işe yetişiyor?

  3. 3. Paylaştırmak ve ayrıntıları saklamak

    Paylaştırmak ve ayrıntıları saklamak
    Kaynak dersin bu bölümündeki son görünüm.
    Ortak mutfak: Sipariş → uygulama Ocak ve tezgâh → donanım Yönetici → işletim sistemi
    Soyutlama: “Dosyayı oku” hizmeti. Aygıtın ayrıntılarını uygulamadan saklar.
    Çekirdek: Ayrıcalıklı yönetimin merkezi. Sistem araçları ve arayüz daha geniş paketin parçalarıdır.

    Sesli anlatım metni

    Dört katmanı ayıralım. En üstte kullanıcı var: siz bir dosyayı açmak istiyorsunuz. Bunun altında uygulama bulunur; örneğin metin düzenleyicisi. Uygulama işi tanımlar ama donanımdaki her ayrıntıyı kendi başına yönetmez. Bir alt katmanda işletim sistemi vardır. En altta işlemci, bellek ve aygıtlar bulunur. Bunu ortak bir mutfak gibi düşünün. Yemek siparişleri uygulamalar, ocaklar ve tezgâh donanım olsun. Mutfak yöneticisi hangi işe hangi kaynağın verileceğini düzenler. Yönetici ikinci bir ocak yaratmaz; mevcut ocakları verimli ve düzenli kullanır. Benzer biçimde işletim sistemi işlemci zamanını, bellek alanını ve aygıt erişimini paylaştırır. Ayrıca ayrıntıları saklar: uygulama bir dosya okumak ister; diskin fiziksel düzenini tek tek yönetmek zorunda kalmaz. Buna soyutlama diyoruz. Çekirdek, bu yönetimin merkezindeki ayrıcalıklı kısımdır. İşletim sistemi paketi çekirdeğin yanında sistem araçları ve başka hizmetler de içerebilir. Ekrandaki arayüz bu büyük yapının görünen yüzüdür.

  4. 4. Komut, veri ve aygıt: farklı görevler

    Komut, veri ve aygıt: farklı görevler
    Kaynak dersin bu bölümündeki son görünüm.
    RAM: Rastgele erişimli ana bellek. Normal RAM enerji kesilince verisini kaybeder.
    Depolama: Dosyalar enerji kesilince de kalır.
    Sürücü ≠ denetleyici: Sürücü: aygıtla konuşan yazılım. Denetleyici: aygıtı yöneten donanım.

    Sesli anlatım metni

    Bu kaynakları biraz yakından tanıyalım. Merkezi işlem birimi, kısaca si pi yu, program komutlarını yürütür. Ana bellek, yani ram, çalışan programların komutlarını ve verilerini tutar. Normal ram uçucudur: enerji kesildiğinde içeriğini kaybeder. Kalıcı depolama ise dosyaları enerji kesildiğinde de tutar. Örneğin es es di, bir katı hal sürücüsüdür. Dosyayı depolamadan okumakla işlemcide komut çalıştırmak aynı iş değildir. Klavye, ses aygıtı ve depolama gibi aygıtların denetleyicileri vardır. Denetleyici donanımdır; aygıtın çalışmasını yönetir. Aygıt sürücüsü ise bu donanımla konuşmayı bilen yazılımdır. İkisini karıştırmayın. Örneğin uygulama bir dosya okumayı isteyince işletim sistemi ve sürücü gerekli işlemi başlatır; denetleyici veri aktarımını yürütür. Büyük aktarımlarda doğrudan bellek erişimi kullanılabilir. Bu yöntemle veri, işlemci her baytı kendisi taşımadan aygıtla ana bellek arasında aktarılır. İşlemci bu sırada başka komutlar yürütebilir. Şeklimiz bağlantıların mantığını gösteriyor; gerçek bilgisayardaki bütün veri yollarının ayrıntılı şeması değil.

  5. 5. Eşzamanlılık ile paralellik aynı şey mi?

    Eşzamanlılık ile paralellik aynı şey mi?
    Kaynak dersin bu bölümündeki son görünüm.
    Dilim süresi = 2 ms
    Toplam 6 dilim
    6 × 2 = 12 ms
    Müzik: 2 + 2 = 4 ms
    Eşzamanlılık: İşler aynı dönem içinde ilerler.
    Paralellik: İşler tam aynı anda yürür.

    Sesli anlatım metni

    Tek çekirdeğin zamanı nasıl paylaşılıyor, küçük bir örnekle görelim. Bu, gerçek bir zamanlama politikası değil, öğrenmek için kurduğumuz model. Geçiş maliyetlerini şimdilik ihmal ediyoruz. Her uygulamaya iki milisaniyelik bir dilim verelim. İlk dilimde müzik var: sıfırdan ikiye. İkinci dilimde indirme: ikiden dörde. Üçüncü dilimde düzenleyici: dörtten altıya. Sonra sıra yeniden başlıyor. Müzik altıdan sekize, indirme sekizden ona, düzenleyici ondan on ikiye ilerliyor. Toplam altı dilim var. Altı çarpı iki, on iki milisaniye eder. Müzik iki ayrı dilim aldı: iki artı iki, dört milisaniye. Diğer uygulamalar da aynı toplam süreyi aldı. Ama dikkat: çizelgede hiçbir aralık üst üste binmiyor. Bu tek yürütme hattında bir anda bir uygulamanın komutları ilerliyor. İşlerin aynı dönem içinde ilerlemesine eşzamanlılık diyoruz. Tam aynı anda yürütülmelerine ise paralellik. İki ayrı çekirdeğimiz varsa iki bağımsız iş gerçekten yan yana yürüyebilir. Eşzamanlılık tek çekirdekte de olur; paralel yürütme için burada birden fazla çekirdek gerekir.

  6. 6. Bekleme ile yararlı işi örtüştürmek

    Bekleme ile yararlı işi örtüştürmek
    Kaynak dersin bu bölümündeki son görünüm.
    Seri: 8 + 6 = 14 ms
    Örtüşen: max(8, 6) = 8 ms
    Kazanç: 14 − 8 = 6 ms
    Daha hızlı CPU gerekmiyor: Beklemeyi yararlı işle örtüştürdük.
    Aynı anda çalışan donanımlar: Aygıt denetleyicisi + CPU. Tek çekirdekte iki uygulama komutu değildir.

    Sesli anlatım metni

    Şimdi bekleme sorununa dönelim. Bir uygulamanın dosya okuması sekiz milisaniye sürsün. Başka bir hazır işin işlemcide yapacağı hesap da altı milisaniye olsun. Bu iki iş birbirinden bağımsız. Kurulum ve kesme hizmeti gibi küçük maliyetleri bu öğretim örneğinde ihmal ediyoruz. Önce okuma bitsin, sonra hesabı yapalım dersek süreleri toplarız. Sekiz artı altı, on dört milisaniye. Daha iyi seçenek şu: aygıt okumayı yürütürken işlemci bağımsız hesabı yapsın. Hesap altıncı milisaniyede biter. Okuma ise sekizinci milisaniyede biter. İkisi birlikte ne zaman tamamlanmış olur? Uzun olan sürenin sonunda: toplam sekiz milisaniyede. Kazanç on dört eksi sekiz, altı milisaniye. İşlemci hızlanmadı; yalnızca bekleme ile yararlı işi örtüştürdük. Burada aynı anda çalışan iki şey, aygıt denetleyicisi ve işlemcidir. Tek çekirdeğin iki uygulama komutunu aynı anda çalıştırdığını söylemiyoruz. Bekleyen program hazır olana kadar başka işe sıra vermek, işletim sisteminin önemli görevlerinden biridir. Peki okuma bittiğinde bunu nasıl öğreniyoruz?

  7. 7. Okuma bitti: donanım kesmesi haber verir

    Okuma bitti: donanım kesmesi haber verir
    Kaynak dersin bu bölümündeki son görünüm.
    Aygıt, tamamlanmayı bildirir.
    Geri dönüş durumu korunur.
    Uygun işleyici seçilir.
    Olayın nedeni ve sonucu işlenir.
    Durum geri yüklenir.
    Kesme hizmeti ≠ süreç değiştirme: Her kesme başka uygulamaya geçiş gerektirmez.
    Normal olaylar da kesme oluşturabilir.

    Sesli anlatım metni

    Cevap, donanım kesmesi. Kesme, burada aygıtın işlemciye dikkat gerektiren bir olay olduğunu bildirmesidir. Mutfak örneğinde fırının başında sürekli beklemek yerine süre dolunca zilin çalması gibi. Zil yemeği pişirmez; yalnızca tamamlandığını haber verir. Dosya okumasının adımlarını izleyelim. Önce sürücü denetleyiciye okuma isteğini verir. Aygıt aktarımı yaparken işlemci başka bir iş yürütür. Aktarım tamamlanınca denetleyici bir kesme isteği gönderir. İşlemci uygun noktada kesmeyi kabul eder; geri dönebilmek için gereken yürütme durumu korunur. Kesmenin türü, hangi işleyicinin çalışacağını belirler. Kesme işleyicisi olayın nedenini kontrol eder ve tamamlanma bilgisini işler. Sonra korunan durum geri yüklenir ve yürütme sürer. İşletim sistemi gerekirse hazır işleri yeniden değerlendirip başka bir sürece sıra verebilir. Ama her kesme mutlaka farklı bir uygulamaya geçiş demek değildir. Kesme hizmeti ile süreç değiştirme ayrı kavramlardır. Ayrıca kesme yalnız hata anlamına gelmez. Tamamlanan bir okuma veya bir tuşa basmanız da normal bir bildirim oluşturabilir.

  8. 8. Kontrollü hizmet, sınırlı yetki

    Kontrollü hizmet, sınırlı yetki
    Kaynak dersin bu bölümündeki son görünüm.
    Çekirdek sürekli komut yürütmez: Uygulama komutları da CPU'yu kullanır.
    Kontrollü giriş: Uygulama bir hizmet ister. Çekirdek isteği denetler.
    Sistem çağrısı: Çalışan uygulama başlatır.
    Donanım kesmesi: Aygıttan gelen olay başlatır.

    Sesli anlatım metni

    Kaynakları paylaşmak yetmez; yanlış bir programın diğerlerine zarar vermesini de sınırlamak gerekir. Örneğin metin düzenleyicisinin başka bir uygulamanın belleğine rastgele yazmasına izin veremeyiz. Bu yüzden donanım, kullanıcı modu ile çekirdek modu gibi farklı yetki düzeyleri sağlar. Normal uygulama kullanıcı modunda çalışır. Çekirdek modu daha ayrıcalıklı işlemlere izin verir. Bu, çekirdeğin her an işlemcide çalıştığı anlamına gelmez; uygulama komutları da çalışır. Bir uygulama dosya okumak gibi bir hizmet istediğinde sistem çağrısı kullanır. İstek kontrollü bir giriş noktasından çekirdeğe ulaşır. Çekirdek isteği ve yetkileri kontrol eder, hizmeti yürütür; ardından uygulamaya dönülür. İki tetikleyiciyi ayıralım: sistem çağrısını çalışan uygulama bir hizmet istemek için başlatır. Donanım kesmesini ise aygıttan gelen olay başlatır. İkisi de çekirdek kodunun çalışmasına yol açabilir, ama aynı olay değildir. Ayrıntılarını sonraki derste açacağız. Mutfak yöneticisinin güvenli bölgelere kimlerin gireceğini belirlemesi gibi, işletim sistemi donanımın koruma mekanizmalarıyla birlikte erişimi sınırlar.

  9. 9. Ana bellek: kapasite ve erişim bütçesi

    Ana bellek: kapasite ve erişim bütçesi
    Kaynak dersin bu bölümündeki son görünüm.
    OS + A: 2 + 3 = 5 GiB
    B'yi ekle: 5 + 1 = 6 GiB
    Boş: 8 − 6 = 2 GiB
    Kontrol: kullanılan 6 + boş 2 = 8 GiB
    Depolama boşluğu ≠ RAM boşluğu: Dosya tutmak ile çalışırken bellek kullanmak farklı ihtiyaçlardır.

    Sesli anlatım metni

    Son bir kaynak hesabı yapalım. Belleği yalnız bir bütçe gibi düşünün; bu çizim gerçek fiziksel yerleşim veya sanal bellek haritası değil. Toplam kapasite sekiz gibibayt olsun. Gibibayt, ikili tabanlı bir bellek birimidir; kısaltması ekranda. Bu örnekte işletim sistemi ve hizmetleri iki gibibayt, uygulama A üç gibibayt, uygulama B bir gibibayt kullanıyor. Önce kullanılanları toplayalım: iki artı üç, beş gibibayt. Beşe bir ekleyince altı gibibayt eder. Boş alan toplam eksi kullanılandır: sekiz eksi altı, iki gibibayt. Kontrol edelim: kullanılan altı ile boş iki toplam sekizi veriyor. İşletim sistemi hangi programın hangi alana erişebileceğini izler ve donanımın yardımıyla erişim sınırlarını uygular. Depolamada büyük boş yer olması, ana bellekte aynı miktarda boş yer olduğu anlamına gelmez. Dosyayı kalıcı depolamada tutmak ve çalışırken ram kullanmak farklı ihtiyaçlardır. Bellek dolunca ne olur sorusunun ayrıntıları sanal bellek konusuna aittir; bu çizim tek başına cevabı vermez.

  10. 10. Üç yanlış içgüdü

    Üç yanlış içgüdü
    Kaynak dersin bu bölümündeki son görünüm.
    Kim çalışıyor? Kim bekliyor? Kim erişebiliyor?: Davranışı bu üç soruyla okuyun.

    Sesli anlatım metni

    Üç yanlış içgüdüyü şimdi düzeltelim. Birincisi: işletim sistemi masaüstündeki pencerelerden ibarettir. Hayır. Pencereler arayüzdür; işlemciyi paylaştıran, belleği koruyan ve aygıt erişimini düzenleyen işler arka planda sürer. İkincisi: üç uygulama açıksa üçü de tek çekirdekte aynı anda komut yürütür. Hayır. Örneğimizde aralıklar üst üste binmedi; her işe toplam dört milisaniye verildi ama işler sırayla ilerledi. Bu eşzamanlılıktır. İki çekirdekte bağımsız işler paralel yürüyebilir. Üçüncüsü: kesme olursa bilgisayarda mutlaka bir hata vardır. Hayır. Sekiz milisaniyelik dosya okumamızın bitmesi de normal bir olaydır; kesme bu tamamlanmayı bildirebilir. Aklınızda şu soru kalsın: şu anda kim işlem yapıyor, kim bekliyor ve kaynaklara kim erişebiliyor? Bu üç soruyla bilgisayarın davranışını daha net okuyabilirsiniz.

  11. 11. Paylaştır · Soyutla · Koru

    Paylaştır · Soyutla · Koru
    Kaynak dersin bu bölümündeki son görünüm.
    Paylaştır: Zaman, bellek ve aygıtlar. Beklerken hazır başka işe sıra ver.
    Soyutla: Donanım ayrıntıları yerine hizmetler.
    Koru: Erişim sınırları ve kontrollü geçiş.
    Sonraki ders: İşletim sistemi hizmetleri, sistem çağrıları ve çekirdek yapıları

    Sesli anlatım metni

    Bilgisayarın içindeki modele dönelim ve üç kelimeyle toparlayalım: paylaştır, soyutla, koru. Paylaştır: işlemci zamanı, bellek ve aygıtlar birçok iş arasında düzenli kullanılır. Bir iş beklerken hazır başka bir iş ilerleyebilir. Soyutla: uygulama, donanımın her ayrıntısıyla uğraşmak yerine dosya okuma gibi anlaşılır hizmetler ister. Koru: uygulamaların yetkileri sınırlandırılır; çekirdeğe geçiş kontrollü olur. Tek çekirdekte zaman dilimleri eşzamanlı ilerleme sağlar; birden fazla çekirdekte gerçek paralellik de mümkündür. Aygıtlar, tamamlanan işleri donanım kesmeleriyle bildirebilir. Bir sonraki İşletim Sistemleri dersinde bu hizmetleri nasıl istediğimizi, sistem çağrılarını ve çekirdeğin farklı tasarımlarını ele alacağız. Görüşmek üzere.

Kaynak video: İşletim sistemi ne yapar? (11:19)