Kısım I · Makine · Bölüm 13
İşletim Sistemi
Ortak hizmetler, kaynaklar ve koruma sınırları (What an operating system is)
Neden burada: Önyükleyici işletim sistemini başlattı. Şimdi açılış bittikten sonra bu ortak yöneticinin neden gerekli olduğunu soruyoruz: programlara kaynak sunmak, paylaştırmak ve izinsiz etkileri sınırlamak. Kat 7’nin görevlerini önce bir bütün olarak göreceğiz.
Neye dayanıyor: Bölüm 12: ilk koddan çekirdeğe kontrol devri. Bölüm 6: olağan komutların işlemcide yürütülmesi; Bölüm 8: RAM ile kalıcı depolama ayrımı; Bölüm 10: adresler ve bellek hataları. Bölüm 1.4: arayüz ve gerçekleme, bu bölümün dilini kuracak.
- Kat 10Bizim hukuk uygulamamızSorular, puan, seri ve sıralama: üstteki amaç.
- Kat 9Tarayıcı ve webHTML, CSS, JavaScript: Bölüm 20, 23–26.
- Kat 8Ağ ve internetMakineler arasında iletişim: Bölüm 19–20.
- Kat 7İşletim sistemiKaynaklar, süreçler, bellek ve dosyalar: Bölüm 13–18.
- Kat 6Gömülü yazılım ve açılışİlk koddan işletim sistemine geçiş: Bölüm 12.
- Kat 5Diller, derleyici ve veri düzeniC ile tarif, adres ve algoritma: Bölüm 9–11.
- Kat 4Makine dili ve assemblyBitlerden oluşan işlemci komutları: Bölüm 7.
- Kat 3İşlemci ve bellekKomutları yürüten donanım ve RAM: Bölüm 6, 8.
Bölüm sonunda işletim sistemini masaüstünden ayırabilecek, sanallaştırma/eşzamanlılık/kalıcılık üçlüsünü açıklayabilecek ve sıradan fonksiyon çağrısıyla sistem çağrısının neden aynı olmadığını anlatabileceksin. Süreçlerin, adres çevirisinin ve dosya sisteminin iç mekanizmasını ise sonraki bölümlere saklayacağız.
13.1 İşletim sisteminin üç büyük işi
İşletim sistemi (operating system, OS), programların donanım kaynaklarını kullanmasını sağlayan, bu kullanımı düzenleyen ve programlara ortak hizmetler sunan yazılım bütünüdür. Bu tanım “ekranda masaüstünü gösteren program”dan daha geniştir. Bir bilgisayarda pencere açılmasa da işlemci zamanı, bellek ve kalıcı veri hâlâ yönetilmek zorundadır. OSTEP işletim sistemini anlamak için üç ana eksen kurar: sanallaştırma, eşzamanlılık ve kalıcılık.1
Bölüm 12'de açılış yazılımı çekirdeği başlattı. Fakat bir kez başlatmak yeterli değil. Diyelim tarayıcı soruları gösterirken metin düzenleyicin açık ve bir dosya kaydediliyor. Hepsi işlemci ve bellek istiyor. Her programa “donanım senin, istediğini yap” dersek birinin hatası diğerinin verisini silebilir veya makinenin bütün zamanını alabilir. İşletim sistemi hem ortak kolaylık hem ortak sınır kurar.12
Sanallaştırma: fiziksel kaynağa daha kullanışlı bir yüz vermek
Sanallaştırma (virtualization), fiziksel kaynağı programlara daha kullanışlı bir mantıksal görünümle sunmaktır. Örneğin tek işlemci, işler arasında zaman paylaştırılarak birçok programın ilerleyebildiği bir kaynak haline gelir. Bellekte de her programa kendisine aitmiş gibi görünen bir adres alanı sunulabilir. Fiziksel kaynağın paylaşılması, her programın o paylaşımın ayrıntısını bizzat çözmesini gerektirmez.1
“Sanal” sözü “sahte, çalışmayan” demek değildir. Program gerçekten hesap yapar; hesap gerçek işlemcide yürütülür. Sanal olan, programın gördüğü kaynak görünümüdür. Bir program bir süre durdurulup sonra devam ettirilebilir; kendisine kaldığı yerden sürme imkânı verilmiştir. Bunun nasıl kaydedildiği Bölüm 14'teki süreç ve bağlam değişimi konusudur. Bu paragrafta yalnızca hedefi öğreniyoruz.1
Bellek tarafında da programın kullandığı adresle fiziksel RAM'deki yerin ayrılabileceğini söylemek yeterli. Buna sanal bellek (virtual memory) düzeni denir; ayrıntısı Bölüm 15'te. Böylece Bölüm 10'da gördüğün işaretçiye yeni bir soru eklenir: “Bu adres hangi programın gördüğü adrestir?” Şimdi sayfa tablosuna atlamıyoruz; altta paylaşım, üstte ayrı görünüm fikrini yerleştiriyoruz.1
“Linux içinde ikinci bir işletim sistemi açmak” da bir sanallaştırma bağlamıdır; onu Bölüm 43'te göreceğiz. OSTEP'in burada kullandığı daha temel anlamı kaçırma: normal bir işletim sistemi, tek bir uygulamayı çalıştırırken bile işlemci ve bellek için bu soyutlama fikirlerini kullanır. Şu an öğrenilecek söz, “fiziksel kaynağın programa sunulan görünümü, fiziksel parçanın çıplak kendisiyle aynı olmak zorunda değildir.”1
Eşzamanlılık: birden çok iş ilerlerken düzeni korumak
Eşzamanlılık (concurrency), birden çok işin ilerlemesinin birbiriyle iç içe ele alınmasıdır. Bir iş diskten sonuç beklerken başka bir hesap ilerleyebilir. Fakat işler aynı veriyi de değiştiriyorsa sıraları önem kazanır. İki işin aynı puan sayacını okuyup eski değerin üzerine ayrı ayrı yazması, beklenen artışlardan birini kaybettirebilir. Bu bölümde yalnızca sorunu görüyoruz; adım adım yarış örneği ve kilit çözümü Bölüm 14.4'te.1
Eşzamanlılık, “her iş tam aynı fiziksel anda çalışıyor” demek değildir. Tek çekirdekte işler sırayla ilerleyip yaşam süreleri iç içe olabilir. Aynı anda ayrı çekirdeklerde gerçekten yürütülme ise paralellik adını alır; Bölüm 14.3 bu ayrımı kuracak. Şimdiki nedenimiz şu: ortak bir sistemde farklı işler birbirinin arasına girebildiğinde doğru davranışı ayrıca düşünmek zorundayız.1
Kalıcılık: çalışan programdan daha uzun yaşayan veri
Kalıcılık (persistence), verinin yalnızca çalışmakta olan programın geçici belleğinde değil, daha sonra da kullanılabilecek biçimde korunmasıdır. Bölüm 8.3 donanım tarafını anlattı: RAM ile SSD aynı tür saklama değildir. İşletim sistemi tarafında dosya sistemi, veri için adlar, yerler ve erişim işlemleri sunar; aygıta doğru okuma ve yazma isteklerinin gönderilmesini düzenler.1
Programcı “şu dosyaya şu byte'ları yaz” diyebilir; her defasında SSD'nin denetleyicisini ve fiziksel yerleşimini kendisi yönetmez. Dosya sistemi (file system), kalıcı veriye bu düzeni veren yapı ve yazılımdır. Dosyanın, yolun ve izinlerin ayrıntısını Bölüm 16'da; aygıta konuşmanın ayrıntısını Bölüm 17'de açacağız. Böylece kalıcılığın da bir alt katı (depolama aygıtı) ve bir üst katı (dosyayı kullanan program) olduğunu görebilirsin.1
Bu başlığın önemli sınırı var: “yazma fonksiyonunu çağırdım” ile “elektrik şimdi kesilse verim kesin korunur” aynı güvence değildir. OSTEP, performans için yazmaların geciktirilebildiğini ve kesintide tutarlılık için ayrıca protokoller gerektiğini vurgular. Şimdilik diske yazma emrini, RAM'deki değişken atamasından ayır. Dosyaların ve ilerideki veritabanının dayanıklılık vaatlerini kendi bağlamlarında öğreneceğiz.1
| İş | Çözülen temel sorun | Uygulama örneği | Sonraki durak |
|---|---|---|---|
| Sanallaştırma | Az sayıdaki fiziksel kaynağı birçok programa kullandırmak. | Tarayıcıyla düzenleyicinin birlikte ilerlemesi. | Bölüm 14–15 |
| Eşzamanlılık | İç içe ilerleyen işlerin ortak durumda doğru davranması. | Aynı puanın iki iş tarafından güncellenmesi. | Bölüm 14 |
| Kalıcılık | Veriyi geçici çalışma belleğinden daha uzun yaşatmak. | Kullanıcı ilerlemesini daha sonra yeniden okuyabilmek. | Bölüm 16 |
13.2 Çekirdek, kullanıcı alanı ve ayrıcalık seviyeleri
Çekirdek (kernel), işletim sisteminin donanım kaynakları üzerinde ayrıcalıklı yönetim yapan merkezidir. Kullanıcı alanı (user space) ise olağan uygulamaların çekirdekten ayrılmış çalışma tarafıdır. Tarayıcı ve metin düzenleyici bu tarafta işler. Bu ayrım, “bilgisayarı kullanan insanın alanı” gibi ekrandaki bir bölge değildir; çalışan kodun yetkisi ve koruma sınırları hakkındadır.3
Bir programı neden sınırlıyoruz?
İşletim sisteminin dosya izni denetlediğini, ama herhangi bir programın denetimi atlayarak diske istediğini yazabildiğini düşün. İzin denetimi artık yalnızca tavsiye olurdu. OSTEP'in anlattığı çözüm donanımın sağladığı ayrıcalık seviyeleridir (privilege levels). İşlemci bazı işlemleri yalnızca uygun ayrıcalıkta yürütür. Programın “ben artık yetkiliyim” diye sıradan bir değişkeni değiştirmesi bu sınırı geçirmez.3
Başlangıç modeli olarak iki çalışma modu yeterli: kullanıcı modu (user mode) ve çekirdek modu (kernel mode). Kullanıcı modundaki kod bazı kritik donanım işlemlerini doğrudan yapamaz; çekirdek modunda çalışan kod onları yönetebilir. Gerçek işlemcilerin ayrıntılı ayrıcalık mimarileri farklıdır; her mimaride aynı sayıda seviye bulunduğunu veya aynı adların kullanıldığını varsaymıyoruz. OSTEP'in iki modlu modeli, korunan yönetici ile sınırlı program ayrımını anlatır.3
Bu ayrım soyut bir anlaşma olarak kalmaz. Kısıtlı bir işlem izinsiz denenirse donanım bir istisna (exception) oluşturup kontrolü işletim sistemine aktarabilir. Böylece çekirdek olayı ele alabilir; işlemi yapan program sonlandırılabilir. Bölüm 9'da çalışma zamanı hatası ve Bölüm 10'da segmentation fault diye gördüğün olayların arkasında da programdan işletim sistemine bu kontrollü geçiş ailesi vardır. Her hata aynı istisna değildir; ortak fikir, donanımın uygunsuz işi sessizce serbest bırakmamasıdır.3
İşletim sistemi her toplamanın başında mı bekler?
Hayır. Çekirdek normal bir uygulamanın her makine komutunu okuyup ona tercümanlık yapan bir memur değildir. OSTEP bunu sınırlı doğrudan yürütme (limited direct execution) fikriyle açıklar: olağan program komutları doğrudan işlemcide yürütülür, ama tehlikeli işlemler ve denetimin geri alınması için donanım sınırları vardır. “Doğrudan” hızlı olmayı, “sınırlı” yönetimin kaybedilmemesini sağlar.3
puan = puan + 10 gibi bir hesap, izin verilen bellekte olağan yükle/topla/sakla komutlarına dönüşebilir. Buna karşılık başka bir program başlatmak veya bir dosyayı açmak, işletim sisteminin ortak yönetim bilgisine ihtiyaç duyar. Her iki iş aynı işlemcide yapılabilir; ancak aynı yetki sınırında yapılmaz. Kat planında çekirdeğin uygulamanın “altında” bulunması, çekirdeğin her komut için bir kez çalıştırıldığı anlamına gelmez.3
Kullanıcı hesabının yetkisi, bir isteği yapmaya izin verilip verilmeyeceğiyle ilgilidir. CPU modu ise o anda hangi kodun hangi donanım ayrıcalığında yürüdüğüyle. Örneğin Linux, süreçlerle ilişkili kullanıcı ve grup kimliklerini kaynak izinlerini belirlemekte kullanır. Yetkili bir hesaptan başlatılmış olağan program, sırf bu yüzden her satırını çekirdek kodu olarak yürütmez. İstek için çekirdeğe geçildiğinde çalışan, programın keyfî satırları değil çekirdeğin hizmet kodudur.34
13.3 Sistem çağrısı: ortak yöneticiden hizmet istemek
Programı kısıtladık; o zaman dosyayı nasıl okuyacak? Sistem çağrısı (system call), kullanıcı alanındaki programın çekirdeğin tanımlı hizmetlerinden birini istemesi için kullanılan denetimli yoldur. “Bana şu dosyayı aç”, “şu veriyi yaz”, “bu programı başlat” gibi ihtiyaçlar bu sınırdan geçebilir. Hizmetin parametreleri, sonucu ve hata durumları tanımlıdır; program çekirdeğin içinde istediği noktaya atlayamaz.3
Bir çağrıyı yavaş çekimde açalım
Örnek istek: bir dosyadan veri okumak
1. Program gerekli hizmeti ve girdileri hazırlar.
2. Kütüphane/çağrı düzeni isteği çekirdeğin beklediği biçime getirir.
3. Özel geçiş komutu kontrolü tanımlı çekirdek girişine aktarır.
4. Çekirdek girdileri ve gerekli izinleri denetler, hizmeti yürütür.
5. Sonuç veya hata, kullanıcı alanındaki programa bildirilir.
Birinci ve ikinci adımlar çoğu zaman dilin veya sistem kütüphanesinin arkasında saklanır. OSTEP, C'de open() gibi bir çağrının normal fonksiyon çağrısı görünmesinin nedenini açıklar: kütüphanedeki kod, argümanları ve çağrı numarasını anlaşılmış yerlere koyar; ardından özel geçiş komutunu çalıştırır. Sen her dosya açışında assembly yazmazsın; bunu sağlayan hazır katmanı çağırırsın.3
Bu kontrollü geçiş için tuzak (trap) sözcüğüyle karşılaşacaksın. Burada programın bilerek işletim sistemine hizmet istemek üzere girdiği mekanizmayı anlatıyoruz. Donanım yetkiyi yükseltirken aynı zamanda çekirdeğin önceden tanımladığı girişe geçer. Aksi halde bir program, izin denetiminin hemen sonrasındaki adrese atlayıp korumayı dolanabilirdi. Hangi donanım komutunun kullanıldığı platforma bağlıdır; “trap” bu modelin genel adıdır.3
Geri dönüş de rastgele bir atlama değildir: gereken durum saklanır, sonuç bildirilir, uygun ayrıcalığa geri dönülür. Bir sistem çağrısı bekleme gerektirirse arada başka işler yürütülebilir; bu zamanlama ayrıntısını Bölüm 14.2'de kuracağız. Burada “istek var, çekirdek kodu çalışıyor, sonuç geliyor” hizmet ilişkisini öğrenmek yeterli.3
API ilk kez burada somutlaşıyor
API (Application Programming Interface), bir programın başka bir yazılım parçasından hangi işlemleri nasıl isteyebileceğini tanımlayan sözleşmedir. Bu her zaman internet adresi veya web sunucusu demek değildir. İşletim sisteminin hizmetleri de programlara bir arayüz sunar. Kütüphane, o arayüzü belirli dilde kullanılabilir fonksiyonlarla örtebilir. Ağ üzerinden kullanılan API'yi Bölüm 34'te ayrıca göreceğiz.12
Arayüz ile gerçekleme ayrımı burada keskindir. Program “dosyayı aç” hizmetinin çağrılışını bilir; fiziksel depolamanın hangi denetleyiciyle konuştuğunu bilmek zorunda değildir. Ama sözleşme, hatasız başarı sözü değildir. Dosya bulunmayabilir, erişim izni olmayabilir, kaynak yetmeyebilir. İyi bir çağrı sözleşmesi bu başarısızlıkları da anlatır. OSTEP'in dosya örneğinde açma, yazma ve kapatma istekleri işletim sisteminin dosya sistemi tarafına yöneltilir ve sonuçlarla döner.1
Bölüm 9.4'teki iki sayıyı çarpan fonksiyon, kullanıcı alanında hesap yapabilir. Fonksiyon adı görmek çekirdeğe geçildiğinin kanıtı değildir. Tersine tek bir yüksek düzey kütüphane işlemi içinde sistem hizmetleri kullanılabilir. printf gibi tanıdığın bir çağrıyı, “kaynak kodda bir satır var, dolayısıyla kesin tek sistem çağrısı olur” diye yorumlama. Kütüphane katmanı ile çekirdek geçişi ayrı kavramlardır.3
13.4 Kaynak yönetimi ve yalıtım: yetki, izin, sınır
Kaynak yönetimi (resource management), sınırlı işlemci zamanı, bellek ve aygıt erişimini işler arasında düzenlemektir. Yalnızca “kim önce istedi?” sorusu yoktur. Etkileşimli bir programın yanıt verebilmesi, başka bir işin ilerlemesi, bellek kullanımının sınırlandırılması ve ortak veriye erişimin korunması gibi hedefler birbiriyle yarışabilir. OSTEP bu yüzden hem mekanizmaları hem politikaları ayrı düşünür.12
Mekanizma (mechanism) “bu işi nasıl yapabilirim?” sorusuna, politika (policy) ise “hangi işi, ne zaman, hangi kuralla seçmeliyim?” sorusuna cevap verir. Bir programı durdurup diğerine geçebilmek mekanizma; sıradaki programı seçmek politikadır. Bu ayrım, değiştirilebilir bir binanın taşıyıcı düzeniyle o binada odaları kime tahsis ettiğini ayırmaya benzer. Zamanlama mekanizmasını sonraki bölümde inceleyeceğiz.13
Yalıtım olmadan ortak hizmet niçin tehlikeli?
Yalıtım (isolation), bir programın hatasının veya izinsiz davranışının başka programların ve çekirdeğin durumuna serbestçe yayılmamasını sağlayan sınırdır. Bellek koruması bunun bir yönüdür; dosya izinleri başka yönüdür. Amaç yalnızca kötü niyetli kodu engellemek değildir. Bölüm 10'da yanlış işaretçiyle yapılan bir yazma da, kontrolsüzse komşu programın verisini bozabilir. Koruma hem güvenlik hem hata sınırlandırma işidir.12
Bu bir “her hata mutlaka yakalanır” sözü değildir. Bölüm 10'un önemli dersini koruyalım: programın kendi alanı içinde yanlış yere yazması her zaman işletim sistemi tarafından ayırt edilemez. İşletim sistemi yalıtımı ile dilin bellek güvenliği aynı güvence değildir. Üstelik çekirdek de yazılımdır; onun hataları koruma mekanizmalarını etkileyebilir. Bottom-Up CS bu nedenle işletim sistemi güvenlik güncellemelerinin de gerekli olduğunu vurgular.23
Hukuk benzetmesinin yararlı olduğu yer
İdare hukuku dilinden üç sözcük alabiliriz: yetki, izin ve sınır. Çekirdek, ortak kaynağı kullandıran yetkili yöneticiye benzer. Sistem çağrısı, tanımlı usulle yapılmış hizmet talebidir. İzin denetimi, talebin bu başvuran için kabul edilip edilmeyeceğini belirler. Sınır ise “istediğini doğrudan alıp kullanamazsın” kuralıdır. Benzetmeyi yargısal değerlendirmeye uzatmıyoruz: işlemci kanun yorumlamaz, programlanmış denetimleri ve donanım ayrıcalık kurallarını yürütür.
İzin vermekle kaynak ayırmak da ayrı şeydir. Bir programa dosyayı okumaya izin verilmesi, o okumanın sıfır gecikmeyle biteceği anlamına gelmez. Dosyanın aygıttan gelmesi beklenebilir; işlemci başka işi yapabilir. Yetki sorusu ile performans sorusunu ayırmak, “neden olmadı?” ile “neden yavaş?” sorularını da ayırır. Bu çerçeve, işletim sisteminin hem koruma hem kaynak yönetimi görevi olmasından çıkar.13
Planlanan sistemden bir örnek düşün: Go arka ucu cevapları değerlendiriyor, Postgres kalıcı kayıtları yönetiyor, Redis hızlı erişilecek türetilmiş veriyi tutuyor. Bu araçları ayrıntısıyla henüz öğrenmedin; burada yalnızca “ayrı hizmetler aynı bilgisayarın kaynaklarını isteyebilir” diye düşün. İşletim sistemi onlara bellek ve işlemci imkânı verir; fakat hangi sorunun doğru cevabının B olduğunu işletim sistemi belirlemez. O, uygulama kuralıdır.
Benzer şekilde işletim sisteminin bir dosyayı okuyacak programa izin vermesi ile hukuk uygulamasının “bu kullanıcı bu sınıfın sonucunu görebilir mi?” kararı farklı düzlemlerdedir. Birincisi sistem kaynağı sınırı, ikincisi ürünün yetkilendirme kuralıdır. Ürün tarafını Bölüm 41'e bırakıyoruz. Alttaki güvenlik mekanizması, üstteki bütün doğru kuralları kendiliğinden icat etmez.2
Bir kullanıcının uygulamada oturum açması da otomatik olarak yeni bir işletim sistemi süreci açılması değildir. Sunucu programının tek bir çalışması birçok kullanıcının işini ele alabilir. “Kullanıcı hesabı”, “oturum” ve “çalışan program” farklı nesnelerdir; sonraki bölümde süreç tanımını bu yüzden dikkatle kuracağız.1
Bir arızayı hangi kata koyarsın?
| Gözlem | İlk ayrım sorusu |
|---|---|
| Program belirli bir dosyayı açamıyor. | Yol, erişim izni ve hizmetin döndürdüğü hata ne? |
| Tarayıcı çalışıyor ama puan yanlış. | Uygulama doğru girdiden doğru kuralı mı hesaplıyor? |
| Bir program çok iş yaparken diğeri yanıt vermiyor. | İşlemci kullanımı, bekleme veya zamanlama mı; yoksa tek uygulamanın kendi işi mi? |
| Program kapanınca kaydedilmemiş ilerleme kayboluyor. | Veri yalnızca çalışma belleğinde miydi, kalıcı saklama gerçekten istendi mi? |
Bu tablo kesin tanı koymaz; soru sırasını önerir. “İşletim sistemi var, öyleyse uygulamanın verisi mutlaka güvendedir” demiyoruz. Sistem bir imkân ve koruma çerçevesi sağlar; uygulamanın bu hizmeti doğru istemesi, hatasını ele alması ve kendi kurallarını doğru kurması gerekir. OSTEP'in tasarım hedeflerindeki kolaylık, performans, koruma ve güvenilirlik aynı problemi farklı yönlerden sınırlar.1
Bölüm 1.4'te soyutlama, alt ayrıntıyı bir arayüzün arkasında gizlemekti. İşletim sistemi bunun büyük bir örneği: programlara dosya ve çalışma ortamı sunar; altta gerçek işlemci, bellek ve aygıtlar vardır. Bölüm 12.3'teki önyükleyici bu yöneticiyi başlattı. Buradaki yenilik, başlangıçtan sonra da kaynak paylaşımının ve korumanın sürekli gerekli olmasıdır.
Kat 7'ye vardık ama bu katı tek parça bir kara kutu olarak bırakmayacağız. Sıradaki bölüm işlemci paylaşımını, onun ardından gelen bölüm bellek paylaşımını, daha sonra dosyalar kalıcılığı açacak. Bu sıra OSTEP'in üç büyük fikrini senin kat planına yerleştirir; her kapıyı aynı anda açmamıza gerek yok.
Bu bölümde neler kuruldu
İşletim sistemi fiziksel kaynaklara daha kullanışlı görünümler sunar, iç içe ilerleyen işleri yönetir ve kalıcı veriye hizmet verir. Çekirdek ile kullanıcı alanı, donanım destekli yetki sınırlarıyla ayrılır. Programların olağan komutları doğrudan işlemcide yürüyebilir; ayrıcalıklı hizmetler sistem çağrısıyla istenir. API bu hizmet ilişkisinin sözleşme yüzüdür. Kaynak politikası seçimi belirler, mekanizma seçimi gerçekleştirir. Yalıtım programların izinsiz etkisini sınırlar; uygulamanın bütün mantık hatalarını çözmez.
Terimler sözlükte, Bölüm 13 başlığı altında.
Birincil kaynak: OSTEP, Introduction to Operating Systems, özellikle Virtualizing the CPU, Concurrency, Persistence ve Design Goals. Derinleşme: Mechanism: Limited Direct Execution — Restricted Operations; Bottom-Up CS, The Operating System — The role of the operating system.
Takıldığın yeri yapay zekâ öğretmenine sor. Ondan “puanı hesapla”, “dosyayı aç”, “başka programı başlat” işlerini kullanıcı alanı ve çekirdek sınırına yerleştirmesini iste; hangi okun sistem çağrısı gerektirdiğini sen gerekçelendir.
Bölüm sonu soruları
Önce kitaba bakmadan cevapla. Geri bildirimdeki bağlantıyla düşünceni denetle.
Örnek cevabı göster
Puan artırmak, izin verilen bellekteki olağan komutlarla yapılabilen bir hesap olabilir. Dosyaya yazmak ortak kalıcı kaynağın işletim sistemi hizmetini gerektirir; çağrılış, izinler, hata ve kalıcılık koşulları vardır. RAM’de değeri değiştirmek tek başına kalıcı saklama değildir. Bkz. 13.3.
Örnek cevabı göster
Çekirdek kaynak üzerinde yetkili yöneticiye, sistem çağrısı tanımlı usulle talebe, izin denetimi talebin kabul koşuluna benzer. Donanım modları programın bu yolu atlamasını sınırlar. Ancak bilgisayar hukuki yorum yapmaz; önceden programlanmış denetimleri yürütür. Uygulama kuralının doğruluğu ayrıca değerlendirilir. Bkz. 13.4.
Kaynaklar
- Arpaci-Dusseau & Arpaci-Dusseau, OSTEP — Introduction to Operating Systems: Virtualizing the CPU; Virtualizing Memory; Concurrency; Persistence; Design Goals. Üç temel eksen, kaynak yöneticisi, soyutlama ve yalıtım.
- Ian Wienand, Computer Science from the Bottom Up — The Operating System: The role of the operating system: Abstraction of hardware, Multitasking, Standardised Interfaces, Security, Performance. Tarihsel sürüm notları bu bölümde kullanılmadı.
- OSTEP — Mechanism: Limited Direct Execution: Restricted Operations; sistem çağrıları, kullanıcı/çekirdek modu, trap ve denetimli giriş; kullanıcı girdilerini denetleme.
- Linux man-pages — credentials(7): User and group identifiers: kullanıcı kimlikleri ve çekirdeğin kaynak izinlerini belirlemesi. Hesap kimliği ile donanım modu ayrımının kullanıcı-kimliği tarafı.