İşletim Sistemleri · Ön Bilgiler

İş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.

Temel hazırlık
En yararlı hazırlık; programlama, veri yapıları, bilgisayar mimarisi, bellek, komut satırı araçları ve temel ağ bilgisi üzerine pratik deneyimdir.
Temeller · Programlama · Donanım

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.

A

Algoritmalar

Problem çözme · verimlilik · çizelgeleme

İşletim sistemi CPU zamanı, bellek, G/Ç (giriş/çıkış) ve kaynak dağıtımı konusunda sürekli karar verir.

Bilinmesi gerekenler

Karmaşıklık, çizelgelemedeki ödünleşimler, arama, sıralama, özyineleme ve durum izleme yararlı temellerdir.

KarmaşıklıkÇizelgelemeArama
Özetle: Karmaşıklık, çizelgelemedeki ödünleşimler, arama, sıralama, özyineleme ve durum izleme yararlı temellerdir.
DS

Veri Yapıları

Gösterim · arama · kaynak izleme

Çekirdek; süreçleri, bellek bölgelerini, açık dosyaları, aygıtları, zamanlayıcıları ve ağ durumunu veri yapılarıyla tutar.

Bilinmesi gerekenler

Diziler, bağlı listeler, yığınlar, kuyruklar, ağaçlar, hash tabloları ve biteşlemler (bitmap) rahatça kullanılabilmelidir.

ListelerKuyruklarAğaçlarHash tabloları
Özetle: Diziler, bağlı listeler, yığınlar, kuyruklar, ağaçlar, hash tabloları ve biteşlemler rahatça kullanılabilmelidir.
Σ

Matematik Temelleri

Sayı sistemleri · çizgeler · olasılık

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.

Bilinmesi gerekenler

İ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.

İkinin kuvvetleriOnaltılıkÇizgelerOlasılık
Özetle: İkinin kuvvetleri ve KiB/MiB/GiB birimleri, ikili ve onaltılık 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.
CPU

Bilgisayar Mimarisi

CPU · yazmaçlar · ayrıcalık · bellek

İşletim sistemi doğrudan donanım üzerinde çalışır. Koruma ve denetim için mimarinin sunduğu düzeneklere dayanır.

Bilinmesi gerekenler

Yazmaçlar (register), komut yürütme, ayrıcalık düzeyleri, kesmeler (interrupt), istisnalar, önbellekler ve adres çevirisi bilinmelidir.

YazmaçlarKesmelerMMUAyrıcalık
Özetle: Yazmaçlar, komut yürütme, ayrıcalık düzeyleri, kesmeler, istisnalar, önbellekler ve adres çevirisi bilinmelidir.
C

C ile Programlama

İşaretçiler · bellek · sistem 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.

Bilinmesi gerekenler

İşaretçiler (pointer), diziler, yapılar (struct), bit işlemleri, elle bellek yönetimi ve fonksiyon çağrıları anlaşılmış olmalıdır.

İşaretçilerYapılarBellekBit işlemleri
Özetle: İşaretçiler, diziler, yapılar, bit işlemleri, elle bellek yönetimi ve fonksiyon çağrıları anlaşılmış olmalıdır.
CC

Derleme ve Assembly Okuma

Derleyici · bağlayıcı · makine komutları

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.

Bilinmesi gerekenler

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.

gccBağlamaÇalıştırılabilir dosyaAssembly
Özetle: 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.
P/T

Süreç ve İş Parçacığı Temelleri

Yürütme · eş zamanlılık · durum

Ç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.

Bilinmesi gerekenler

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.

Süreçlerİş parçacıklarıYığınHeap
Özetle: Program, süreç ve iş parçacığı arasındaki fark; yığın, heap ve yürütme durumu temel düzeyde bilinmelidir.
MEM

Bellek Temelleri

Adresler · yığın · heap · sanal bellek

İşletim sistemi fiziksel belleği yönetir ve her sürece denetimli bir adres alanı (address space) sunar.

Bilinmesi gerekenler

Adresler, baytlar, yığın ile heap arasındaki fark, yerellik (locality) ve sanal adreslerin çevrilmesi gerektiği fikri tanıdık olmalıdır.

AdreslerYığınHeapYerellik
Özetle: Adresler, baytlar, yığın ile heap arasındaki fark, yerellik ve sanal adreslerin çevrilmesi gerektiği fikri tanıdık olmalıdır.
HW

Sayısal Mantık ve Donanım

Bitler · aygıtlar · veri yolları · kesmeler

İşletim sistemi işlemcilerle, bellekle ve aygıtlarla donanımın tanımladığı arayüzler üzerinden konuşur.

Bilinmesi gerekenler

İ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.

İkili sayılarAygıtlarKesmelerDMA
Özetle: İkili sayılar, veri yolları, aygıt yazmaçları, kesmeler ve DMA hakkında temel bilgi, alt düzey G/Ç'yi anlamayı çok kolaylaştırır.
CLI

Komut Satırı ve Linux Araçları

Kabuk · dosyalar · süreçler · tanılama

Birçok işletim sistemi kavramı, komut satırında incelendiğinde somutlaşır.

Bilinmesi gerekenler

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.

KabukSüreçlerİzinlerGünlükler
Özetle: 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.
NET

Ağ Temelleri

Soketler · TCP/IP · portlar

Modern işletim sistemleri bir ağ yığını içerir ve iletişimi soket (socket) API'leriyle sunar.

Bilinmesi gerekenler

IP adresleri, portlar, TCP ile UDP arasındaki fark, istemci/sunucu davranışı ve temel soket kavramları bilinmelidir.

TCP/IPSoketlerPortlar
Özetle: IP adresleri, portlar, TCP ile UDP arasındaki fark, istemci/sunucu davranışı ve temel soket kavramları bilinmelidir.
SEC

Güvenlik Temelleri

Koruma · kimlik doğrulama · izinler

İşletim sistemi kullanıcılar, süreçler, dosyalar ve aygıtlar arasındaki sınırları korur.

Bilinmesi gerekenler

Kimlik doğrulama (authentication), yetkilendirme (authorization), izinler, en az ayrıcalık ilkesi ve temel tehdit modellerinin ardındaki fikirler bilinmelidir.

İzinlerKimlik doğrulamaKoruma
Özetle: Kimlik doğrulama, yetkilendirme, izinler, en az ayrıcalık ilkesi ve temel tehdit modellerinin ardındaki fikirler bilinmelidir.
Aramaya ya da süzgece uyan konu yok.
Dersten önce en önemlileri

C ile programlama, işaretçiler, veri yapıları, süreçler, bellek ve temel bilgisayar mimarisi.

Dersle birlikte öğrenilebilecekler

Kabuk araçları, Linux'ta süreçleri inceleme, ağ komutları, izinler ve sistem tanılama.

Çekirdek deneyimi gerekmez

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.

✓ Temel C programlarını okuyup yazabiliyorum, gcc ile derleyip çalıştırabiliyorum.
✓ İşaretçileri, dizileri, yapıları, yığını ve heap'i anlıyorum.
✓ Kuyrukları, bağlı listeleri, ağaçları ve hash tablolarını biliyorum.
✓ İkili ve onaltılık sayılarla, ikinin kuvvetleriyle ve basit olasılıkla hesap yapabiliyorum.
✓ CPU yazmaçlarının ve kesmelerin ne olduğunu biliyorum.
✓ Terminali ve temel Linux komutlarını kullanabiliyorum.
✓ Dosyaları, süreçleri, izinleri ve temel ağ kavramlarını anlıyorum.