İşletim Sistemleri İçin Ön Bilgiler
İşletim sistemleri yazılımı, donanımı, algoritmaları ve alt düzey programlamayı bir araya getirir. Aşağıdaki alanlarda temel bir birikim; çekirdeğin davranışını, süreçlerin yürütülmesini, bellek yönetimini, dosya sistemlerini ve aygıtlarla etkileşimi anlamayı çok kolaylaştırır.
En yararlı hazırlık; programlama, veri yapıları, bilgisayar mimarisi, bellek, komut satırı araçları ve temel ağ bilgisi üzerine pratik deneyimdir.
Temel Bilgi Birikimi
Bu konular süreçlerin, çizelgelemenin, senkronizasyonun, sanal belleğin, dosya sistemlerinin, G/Ç'nin, ağın ve korumanın teknik temelini oluşturur.
Algoritmalar
İşletim sistemi CPU zamanı, bellek, G/Ç (giriş/çıkış) ve kaynak dağıtımı konusunda sürekli karar verir.
Karmaşıklık, çizelgelemedeki ödünleşimler, arama, sıralama, özyineleme ve durum izleme yararlı temellerdir.
Veri Yapıları
Çekirdek; süreçleri, bellek bölgelerini, açık dosyaları, aygıtları, zamanlayıcıları ve ağ durumunu veri yapılarıyla tutar.
Diziler, bağlı listeler, yığınlar, kuyruklar, ağaçlar, hash tabloları ve biteşlemler (bitmap) rahatça kullanılabilmelidir.
Matematik Temelleri
Sayfa tablosu boyutu, adresin sayfa numarası ve konuma bölünmesi, kilitlenme çizgeleri, bankacı algoritmasının matrisleri, etkin erişim süresi ve anahtar değişimi hep temel ayrık matematik ve olasılık üzerine kuruludur.
İkinin kuvvetleri ve KiB/MiB/GiB birimleri, ikili ve onaltılık (hexadecimal) gösterim, logaritma, modüler aritmetik, kümeler, matrisler, yönlü çizgeler ve döngüler, ağırlıklı ortalama ve basit olasılık hesabı tanıdık olmalıdır.
Bilgisayar Mimarisi
İşletim sistemi doğrudan donanım üzerinde çalışır. Koruma ve denetim için mimarinin sunduğu düzeneklere dayanır.
Yazmaçlar (register), komut yürütme, ayrıcalık düzeyleri, kesmeler (interrupt), istisnalar, önbellekler ve adres çevirisi bilinmelidir.
C ile Programlama
Klasik çekirdek arayüzlerinin çoğu ve birçok işletim sistemi gerçeklemesi, C tarzı sistem programlamaya sıkı sıkıya bağlıdır.
İşaretçiler (pointer), diziler, yapılar (struct), bit işlemleri, elle bellek yönetimi ve fonksiyon çağrıları anlaşılmış olmalıdır.
Derleme ve Assembly Okuma
Ders örnekleri C kodunu gcc ile derler, kütüphanelerle bağlar ve sistem çağrılarını, tuzakları ve atomik işlemleri birkaç satırlık assembly ile gösterir.
Kaynak dosyadan nesne dosyasına ve çalıştırılabilir dosyaya giden yol, statik ve dinamik kütüphaneler, derleyici iyileştirmelerinin kodu nasıl değiştirebildiği ve kısa bir assembly listesinin C koduna nasıl karşılık geldiği temel düzeyde bilinmelidir.
Süreç ve İş Parçacığı Temelleri
Çizelgeleme ve senkronizasyondan önce programların nasıl yürütüldüğünü ve iş parçacıklarının süreç kaynaklarını nasıl paylaştığını bilmek işe yarar.
Program, süreç (process) ve iş parçacığı (thread) arasındaki fark; yığın (stack), heap ve yürütme durumu temel düzeyde bilinmelidir.
Bellek Temelleri
İşletim sistemi fiziksel belleği yönetir ve her sürece denetimli bir adres alanı (address space) sunar.
Adresler, baytlar, yığın ile heap arasındaki fark, yerellik (locality) ve sanal adreslerin çevrilmesi gerektiği fikri tanıdık olmalıdır.
Sayısal Mantık ve Donanım
İşletim sistemi işlemcilerle, bellekle ve aygıtlarla donanımın tanımladığı arayüzler üzerinden konuşur.
İkili sayılar, veri yolları, aygıt yazmaçları, kesmeler ve doğrudan bellek erişimi (DMA) hakkında temel bilgi, alt düzey G/Ç'yi anlamayı çok kolaylaştırır.
Komut Satırı ve Linux Araçları
Birçok işletim sistemi kavramı, komut satırında incelendiğinde somutlaşır.
Dosyalar, izinler, süreçler, bellek, diskler ve günlükler için ps, top, chmod, df ve dmesg gibi komutlarla pratik yapmak yararlıdır.
Ağ Temelleri
Modern işletim sistemleri bir ağ yığını içerir ve iletişimi soket (socket) API'leriyle sunar.
IP adresleri, portlar, TCP ile UDP arasındaki fark, istemci/sunucu davranışı ve temel soket kavramları bilinmelidir.
Güvenlik Temelleri
İşletim sistemi kullanıcılar, süreçler, dosyalar ve aygıtlar arasındaki sınırları korur.
Kimlik doğrulama (authentication), yetkilendirme (authorization), izinler, en az ayrıcalık ilkesi ve temel tehdit modellerinin ardındaki fikirler bilinmelidir.
C ile programlama, işaretçiler, veri yapıları, süreçler, bellek ve temel bilgisayar mimarisi.
Kabuk araçları, Linux'ta süreçleri inceleme, ağ komutları, izinler ve sistem tanılama.
Sistem çağrıları, çizelgeleme, senkronizasyon, sanal bellek, dosya sistemleri ve G/Ç derste temelden ele alınır.
Hazırlık Kontrol Listesi
Aşağıdaki ifadelerin çoğu tanıdık geliyorsa hazırlık yeterli demektir.