İşletim Sistemi Geliştirme Kavramları
Rust bağlamında bellek yönetimi, görev planlama ve kesmeler dâhil olmak üzere işletim sistemi geliştirmenin temel kavramlarını keşfedin.
İşletim Sistemi Geliştirme Kavramları, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 3 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 3 dersten oluşur.
OS Geliştirme Kavramlarına Hoş Geldiniz
İşletim Sistemi (OS), bilgisayar donanımı ve yazılım kaynaklarını yöneten temel yazılımdır. Bilgisayarınızı kullanılabilir hâle getiren beyindir.
Bu derste, özellikle Rust'ın modern güvenlik güvenceleriyle düşük seviyeli denetim sunan bir çekirdek oluşturmak için nasıl kullanılabileceğini inceleyerek OS geliştirmenin ardındaki temel kavramları ele alacağız.
Çekirdeğin Temel Sorumlulukları
Çekirdek, bir OS'nin merkezi bölümüdür. Bilgisayar başladığında yüklenen ilk programdır ve her şey üzerinde tam denetime sahiptir.
Temel sorumlulukları şunlardır:
- Bellek yönetimi: Bellek ayırmak ve belleği korumak.
- Süreç/Görev yönetimi: Çalışan programları zamanlamak ve aralarında geçiş yapmak.
- Donanımla etkileşim: Girdi/çıktıyı (I/O) ve kesmeleri işlemek.
- Sistem çağrıları: Kullanıcı uygulamalarına hizmetler sağlamak.
Sanal Belleği Anlama
Sanal bellek, her programın belleği kendi yalıtılmış görünümüyle görmesini sağlayan güçlü bir tekniktir. Fiziksel bellek parçalanmış olsa bile her programın büyük ve bitişik bir bellek bloğuna sahip olduğu izlenimini oluşturur.
Programların birbirlerinin belleğine müdahale etmesini önler ve bir programın yalnızca gerekli bölümlerini belleğe yükleyerek fiziksel RAM'in verimli kullanılmasını sağlar.
Sayfalama: Sanal Adresleri Fiziksel Adreslerle Eşleme
Sayfalama, sanal belleği uygulamak için kullanılan yaygın bir yöntemdir. Bellek, sayfalar (sanal adresler için) ve çerçeveler (fiziksel adresler için) adı verilen sabit boyutlu bloklara ayrılır.
OS, sanal sayfa numaralarını fiziksel çerçeve numaralarıyla eşleyen veri yapıları olan sayfa tablolarını tutar. CPU bir sanal adrese eriştiğinde Bellek Yönetim Birimi (MMU), bu tabloları kullanarak adresi karşılık gelen fiziksel adrese çevirir.
Görev Zamanlama: CPU'yu Paylaşma
Görev (genellikle işlem veya iş parçacığı olarak adlandırılır), bağımsız bir iş birimidir. Modern OS'ler tek bir CPU çekirdeğinde birçok görevi eş zamanlı olarak çalıştırır.
Zamanlayıcı, herhangi bir anda CPU üzerinde hangi görevin çalışacağına karar veren bir çekirdek bileşenidir. Amacı, etkin tüm görevler arasında CPU zamanını adil ve verimli biçimde dağıtarak paralel yürütme izlenimi oluşturmaktır.
Görevler Arasında Bağlam Değiştirme
Zamanlayıcı bir görevden diğerine geçmeye karar verdiğinde bir bağlam değiştirme işlemi gerçekleştirir. Bu kritik işlem şunları içerir:
- Mevcut görevin tüm CPU durumunu (ör. yazmaçlar, program sayacı ve yığın göstericisi) ilgili veri yapısına kaydetmek.
- Çalıştırılacak sonraki görevin kaydedilmiş CPU durumunu yüklemek.
Bu sayede görevler tam olarak kaldıkları yerden devam edebilir ve hepsi aynı anda çalışıyormuş gibi görünür.
Donanım Kesintileri: Olayları Ele Alma
Kesinti, bir olayın gerçekleştiğini ve hemen ilgilenilmesi gerektiğini bildiren, donanımdan (klavye, fare, disk sürücüsü veya zamanlayıcı gibi) CPU'ya gönderilen bir sinyaldir.
Bir kesinti gerçekleştiğinde CPU:
- Mevcut yürütmesini duraklatır.
- Mevcut durumunu kaydeder.
- Belirli olayı ele almak üzere tasarlanmış, çekirdekteki özel bir işlev olan Kesme Hizmeti Yordamına (ISR) geçer.
ISR tamamlandıktan sonra CPU kaydedilmiş durumunu geri yükler ve önceki işine devam eder.
Yazılım Kesintileri ve İstisnalar
Donanım kesintilerinin yanı sıra yazılım kesintileri de vardır. Bunlara genellikle istisna adı verilir ve aşağıdakiler gibi bir programdaki hatalar nedeniyle CPU'nun kendisi tarafından tetiklenir:
- Sıfıra bölme
- Geçersiz bir bellek adresine erişme (bölümlendirme hatası)
- Yasadışı bir yönergeyi yürütme
Başka bir yazılım kesintisi türü de sistem çağrısıdır. Bu çağrı, kullanıcı programlarının çekirdekten açıkça bir hizmet istemesine olanak tanır (ör. bir dosyayı okuma veya yeni bir işlem oluşturma).
OS Geliştirmede Rust'ın Avantajı
Rust, aşağıdakilerin benzersiz birleşimi sayesinde OS geliştirme için giderek daha popüler bir seçenektir:
- Bellek Güvenliği: Sahiplik ve ödünç alma sistemi, boş göstericiler, iki kez serbest bırakma ve veri yarışları gibi yaygın bellek hatalarını derleme zamanında önler.
- Eşzamanlılık Güvenliği: Rust'ın tür sistemi, birçok durumda açık kilitler kullanmadan iş parçacığı açısından güvenli kod yazmaya yardımcı olur.
- Çıplak Donanımla Uyumluluk: Rust, karmaşık bir çalışma zamanı veya çöp toplayıcı olmadan çalışabilir; bu da onu düşük seviyeli çekirdek ortamları için ideal kılar.
Bu özellikler, geliştiricilerin daha az hatayla sağlam ve yüksek performanslı çekirdek kodu yazmasını sağlar.
Bilginizi Sınayın
Temel İşletim Sistemi kavramlarını anlayıp anlamadığınızı kontrol edelim.
Özet: OS Temelleri
Bu derste işletim sistemi geliştirmenin temel kavramlarını inceledik:
- Bellek Yönetimi: RAM'i yalıtmak ve verimli kullanmak için sanal bellek ve sayfalama.
- Görev Zamanlama: CPU'nun bağlam değiştirme kullanarak farklı görevler arasında nasıl geçiş yaptığı.
- Kesintiler: Çekirdeğin olaylara yanıt vermesini sağlayan, hem donanım tarafından tetiklenen sinyaller hem de yazılım tarafından tetiklenen istisnalar ve sistem çağrıları.
Rust'ın güçlü güvenlik özellikleri ile düşük seviyeli denetimi birleştiğinde, sağlam ve güvenilir çıplak donanım çekirdek kodu oluşturmak için mükemmel bir dil ortaya çıkar. Bu temel anlayış, sistem düzeyinde programlama yapan herkes için çok önemlidir!
Sıkça Sorulan Sorular
“İşletim Sistemi Geliştirme Kavramları” dersi ücretsiz mi?
Evet — “İşletim Sistemi Geliştirme Kavramları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 3 dersten oluşur.
“İşletim Sistemi Geliştirme Kavramları” dersinde ne öğreneceğim?
Rust bağlamında bellek yönetimi, görev planlama ve kesmeler dâhil olmak üzere işletim sistemi geliştirmenin temel kavramlarını keşfedin. Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 3. dersidir.
“İşletim Sistemi Geliştirme Kavramları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Gömülü Rust'a Giriş
- HAL'ler ve Aygıt Sürücüleri
- İşletim Sistemi Geliştirme Kavramları