Operating Systems

Undergraduate, Giresun University, Computer Engineering, 2026

operating systems Operating systems are a fundamental part of modern computing. Operating systems manage hardware resources and provide abstractions and services for application software. They coordinate processor time, memory, storage, devices, and communication while supporting protection, isolation, and controlled resource sharing. An operating system provides a platform for programs to run. It acts as a bridge between hardware and software applications. This ensures that applications can interact with hardware using a standardized interface. The operating system handles tasks like memory management, process scheduling, and input/output operations. Without it, a computer is just a collection of hardware components.


Başlangıç Kaynakları


Kısım I: Temeller

Bölüm 1: Giriş

İşletim sistemi donanım ile uygulamalar arasında duran ve ikisini birbirine bağlayan yazılımdır. Bu bölümde işletim sisteminin iki rolü (genişletilmiş makine ve kaynak yöneticisi), çekirdek ve kullanıcı kipi ile kip geçişi, biriktirme ve kaynak paylaşımı, işletim sistemlerinin nesilden nesile tarihi, işletim sistemi için gereken donanım özeti, G/Ç yöntemlerine genel bakış ve işletim sistemi çeşitleri ele alınır.


Bölüm 2: İşletim Sistemi Yapıları

İşletim sistemi uygulamalara hizmetlerini sistem çağrıları üzerinden sunar. Bölüm; süreç, adres alanı, dosya ve boru gibi temel kavramları, çift kipli çalışma ve zamanlayıcıyla korumayı, sistem çağrılarının işleyişini ve POSIX ile Win32 arayüzlerini, standart C kütüphanesini anlatır. Monolitik, katmanlı, mikro çekirdekli, modüler, hibrit ve exokernel yapılar karşılaştırılır; sanal makinelere kısa bir giriş yapılır ve sistemin açılış süreci adım adım izlenir.


Kısım II: Süreç Yönetimi

Bölüm 3: Süreçler

Süreç, çalışmakta olan bir programdır. Bu bölümde sürecin bellekteki yerleşimi, fork, exec ve wait ile süreç oluşturma, kabuğun çalışma biçimi, süreç sonlandırma, zombi ve yetim süreçler, süreç durumları ve süreç kontrol bloğu, hazır ve bekleme kuyrukları, bağlam değiştirme ve maliyeti incelenir. Paylaşımlı bellek, ileti geçirme, borular ve soketlerle süreçler arası iletişim de bu bölümdedir.


Bölüm 4: İş Parçacıkları

İş parçacığı, aynı süreç içinde bağımsız ilerleyen bir yürütme akışıdır. Bölüm; çok iş parçacıklı sunucu tasarımlarını, eş zamanlılık ile paralelliği ve Amdahl yasasını, kullanıcı ve çekirdek düzeyi iş parçacıklarını ve eşleme modellerini, POSIX Pthreads ile Java iş parçacıklarını ve sanal iş parçacıklarını, iş parçacığı havuzu, fork-join ve OpenMP gibi örtük yaklaşımları ve iş parçacıklarının yol açtığı sorunları ele alır.


Bölüm 5: CPU Çizelgeleme

Çizelgeleyici, hazır süreçlerden hangisinin işlemciyi alacağına karar verir. Bu bölümde çizelgeleme ölçütleri, FCFS, SJF, SRTF, öncelik ve Round Robin algoritmaları Gantt şemaları ve bekleme süresi hesaplarıyla, çok düzeyli geri beslemeli kuyruklar, piyango ve stride çizelgeleme anlatılır. Çok işlemcili çizelgelemede afinite ve yük dengeleme, gerçek zamanlı çizelgelemede hız monoton ve EDF ile Liu–Layland testi, son olarak Linux CFS/EEVDF ve Windows çizelgeleyicisi incelenir.


Bölüm 6: Senkronizasyon

Paylaşılan veriye eş zamanlı erişim yarış durumlarına yol açar. Bölüm; kritik bölge problemini ve çözümün üç koşulunu, Peterson algoritmasını ve modern işlemcilerde neden bozulduğunu, atomik donanım komutlarını, spinlock ve mutex’i, semaforları, sınırlı tampon, okur-yazar ve yemek yiyen filozoflar problemlerini, monitörleri ve koşul değişkenlerini, POSIX ve Java senkronizasyon araçlarını, öncelik terslemesini ve Mars Pathfinder olayını ele alır.


Bölüm 7: Kilitlenme

Kilitlenmede bir grup süreç, her biri ötekinin tuttuğu bir kaynağı beklediği için sonsuza dek bekler. Bu bölümde kilitlenmenin dört koşulu, kaynak tahsis çizgesi, tespit ve kurtarma algoritmaları, güvenli durum ve bankacı algoritmasıyla kaçınma, dört koşula saldırarak önleme, canlı kilit ve açlık incelenir; Java’da kilitlenme örnekleri ve jstack, lockdep gibi bulma araçları da gösterilir.


Kısım III: Bellek ve Depolama

Bölüm 8: Bellek Yönetimi

Bellek yöneticisi, süreçlerin belleği güvenle paylaşmasını sağlar. Bölüm; bellek donanımını ve önbelleği, taban ve limit yazmaçlarıyla korumayı, mantıksal ve fiziksel adresi, statik ve dinamik bağlamayı, takası, bitişik tahsisi ve parçalanmayı, boş alan yönetimini, sayfalamayı, TLB ile etkin erişim süresini, çok düzeyli, hash ve ters sayfa tablolarını, kesimlemeyi ve x86, ARM ile RISC-V’deki gerçek düzenleri anlatır.


Bölüm 9: Sanal Bellek

Sanal bellek, süreçlerin fiziksel bellekten büyük adres alanlarıyla çalışmasını sağlar. Bu bölümde talebe bağlı sayfalama ve sayfa hatasının işlenmesi, yazınca kopyalama, bellek eşlemeli dosyalar, FIFO, OPT, LRU, saat ve yaşlandırma gibi sayfa yer değiştirme algoritmaları ve Belady anomalisi, çalışma kümesi ve WSClock, çerçeve tahsisi, thrashing, buddy ve slab ayırıcılarıyla çekirdek belleği ve Linux ile Windows’taki uygulamalar incelenir.


Bölüm 10: Dosya Sistemleri

Dosya sistemi, verinin diskte kalıcı ve düzenli biçimde saklanmasını sağlar. Bölüm; dosya ve dizin kavramlarını, yol çözümlemesini, katı ve sembolik bağları, rwx izinlerini, MBR ve GPT disk düzenini, bitişik, bağlı, FAT ve i-node tabanlı tahsis yöntemlerini, ext4 ve NTFS’yi, boş alan yönetimini, tampon önbelleğini, günlükleme, yazınca kopyalama ve fsck ile tutarlılığı, VFS ve NFS’yi ele alır.


Bölüm 11: Giriş/Çıkış

G/Ç sistemi, çok farklı hızlardaki aygıtları ortak bir arayüzle yönetir. Bu bölümde aygıt denetleyicileri ve yazmaçları, programlanmış G/Ç, kesmeler ve DMA, G/Ç yazılım katmanları ve aygıt sürücüleri, tamponlama, bloke eden ve eş zamansız G/Ç ile epoll ve io_uring, saatler, manyetik disk geometrisi ve disk kolu çizelgeleme algoritmaları, SSD, NVMe, TRIM, RAID ve kararlı depolama incelenir.


Kısım IV: İleri Konular

Bölüm 12: Çok İşlemcili Sistemler

Birden çok işlemci, işletim sistemine yeni sorunlar getirir. Bölüm; UMA ve NUMA mimarilerini, önbellek tutarlılığını ve MESI protokolünü, yanlış paylaşımı, çok işlemcili işletim sistemi modellerini, spinlock’ların ölçeklenmesini, alan paylaşımı ve çete çizelgelemeyi, çoklu bilgisayarları ve RPC’yi, hipervizörler, donanım destekli sanallaştırma ve konteynerlerle sanallaştırmayı ve dağıtık sistemlerdeki ara yazılımları ele alır.


Bölüm 13: Güvenlik

Güvenlik; gizlilik, bütünlük ve erişilebilirliği tehditlere karşı korumaktır. Bu bölümde kriptografinin temelleri ve TLS, koruma etki alanları, erişim denetim listeleri ve yetenekler, Bell-LaPadula ve Biba modelleri, parola saklama, çok faktörlü kimlik doğrulama ve geçiş anahtarları, tampon taşması ve savunmaları, kötü amaçlı yazılımlar, korumalı alan ve SELinux, güvenli önyükleme, TPM ve Spectre gibi yan kanal saldırıları incelenir.


Bölüm 14: İşletim Sistemi Tasarımı

İşletim sistemi tasarımı, birbiriyle çatışan hedefler arasında denge kurmayı gerektirir. Bölüm; arayüz tasarımının ilkelerini, sistem yapısı seçeneklerinin ödünleşimlerini, mekanizma ile politikanın ayrılmasını, adlandırma ve bağlama zamanını, dolaylılık ve yeniden kullanım gibi teknikleri, önbelleğe alma ve yerellikle performansı, büyük yazılım projelerinin yönetimini, çekirdek kodunun test edilmesi ve hata ayıklama araçlarını ve işletim sistemlerindeki güncel eğilimleri ele alır.


Bölüm 15: Linux

Linux, dersin kavramlarını gerçek bir sistemde bir arada gösterir. Bu bölümde UNIX’ten Linux’a gelişim, kabuk ve boru hatları, çekirdek yapısı ve modüller, task_struct, sinyaller ve clone, EEVDF çizelgeleyicisi ve systemd ile açılış, sanal adres alanı ve SLUB ayırıcısı, aygıt dosyaları ve blok katmanı, VFS, ext4 ve /proc, izin hesapları, ad alanları ve cgroups ile konteynerler ve Android’in Linux üzerine kurduğu yapı incelenir.