Operating Systems
Undergraduate, Giresun University, Computer Engineering, 2026
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.
- 🖼️Sunum-Giriş (HTML)
- 📄Sunum-Giriş (PDF)
- 📖Ders Notu - Giriş (HTML)
- 📝Çalışma Soruları - Giriş (HTML)
- 💻Kod Örnekleri, Java (GitHub)
- 💻Kod Örnekleri, C (GitHub)
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.
- 🖼️Sunum-İşletim Sistemi Yapıları (HTML)
- 📄Sunum-İşletim Sistemi Yapıları (PDF)
- 📖Ders Notu - İşletim Sistemi Yapıları (HTML)
- 📝Çalışma Soruları - İşletim Sistemi Yapıları (HTML)
- 💻Kod Örnekleri, Java (GitHub)
- 💻Kod Örnekleri, C (GitHub)
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.
- 🖼️Sunum-Süreçler (HTML)
- 📄Sunum-Süreçler (PDF)
- 📖Ders Notu - Süreçler (HTML)
- 📝Çalışma Soruları - Süreçler (HTML)
- 💻Kod Örnekleri, Java (GitHub)
- 💻Kod Örnekleri, C (GitHub)
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.
- 🖼️Sunum-İş Parçacıkları (HTML)
- 📄Sunum-İş Parçacıkları (PDF)
- 📖Ders Notu - İş Parçacıkları (HTML)
- 📝Çalışma Soruları - İş Parçacıkları (HTML)
- 💻Kod Örnekleri, Java (GitHub)
- 💻Kod Örnekleri, C (GitHub)
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.
- 🖼️Sunum-CPU Çizelgeleme (HTML)
- 📄Sunum-CPU Çizelgeleme (PDF)
- 📖Ders Notu - CPU Çizelgeleme (HTML)
- 📝Çalışma Soruları - CPU Çizelgeleme (HTML)
- 💻Kod Örnekleri, Java (GitHub)
- 🕹️CPU Çizelgeleme Simülatörü (HTML)
- 🕹️Gerçek Zamanlı Çizelgeleme Simülatörü (HTML)
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.
- 🖼️Sunum-Senkronizasyon (HTML)
- 📄Sunum-Senkronizasyon (PDF)
- 📖Ders Notu - Senkronizasyon (HTML)
- 📝Çalışma Soruları - Senkronizasyon (HTML)
- 💻Kod Örnekleri, Java (GitHub)
- 🕹️Senkronizasyon Laboratuvarı (HTML)
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.
- 🖼️Sunum-Kilitlenme (HTML)
- 📄Sunum-Kilitlenme (PDF)
- 📖Ders Notu - Kilitlenme (HTML)
- 📝Çalışma Soruları - Kilitlenme (HTML)
- 💻Kod Örnekleri, Java (GitHub)
- 🕹️Kilitlenme ve Bankacı Algoritması Simülatörü (HTML)
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.
- 🖼️Sunum-Bellek Yönetimi (HTML)
- 📄Sunum-Bellek Yönetimi (PDF)
- 📖Ders Notu - Bellek Yönetimi (HTML)
- 📝Çalışma Soruları - Bellek Yönetimi (HTML)
- 💻Kod Örnekleri, Java (GitHub)
- 🕹️Bellek Tahsisi Simülatörü (HTML)
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.
- 🖼️Sunum-Sanal Bellek (HTML)
- 📄Sunum-Sanal Bellek (PDF)
- 📖Ders Notu - Sanal Bellek (HTML)
- 📝Çalışma Soruları - Sanal Bellek (HTML)
- 💻Kod Örnekleri, Java (GitHub)
- 🕹️Sayfa Yer Değiştirme Simülatörü (HTML)
- 🕹️Sayfalama ve Adres Çevirisi Simülatörü (HTML)
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.
- 🖼️Sunum-Dosya Sistemleri (HTML)
- 📄Sunum-Dosya Sistemleri (PDF)
- 📖Ders Notu - Dosya Sistemleri (HTML)
- 📝Çalışma Soruları - Dosya Sistemleri (HTML)
- 💻Kod Örnekleri, Java (GitHub)
- 💻Kod Örnekleri, C (GitHub)
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.
- 🖼️Sunum-Giriş/Çıkış (HTML)
- 📄Sunum-Giriş/Çıkış (PDF)
- 📖Ders Notu - Giriş/Çıkış (HTML)
- 📝Çalışma Soruları - Giriş/Çıkış (HTML)
- 💻Kod Örnekleri, Java (GitHub)
- 🕹️Disk Kolu Çizelgeleme Simülatörü (HTML)
- 🕹️Kesme, DMA ve G/Ç Akışı Simülatörü (HTML)
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.
- 🖼️Sunum-Çok İşlemcili Sistemler (HTML)
- 📄Sunum-Çok İşlemcili Sistemler (PDF)
- 📖Ders Notu - Çok İşlemcili Sistemler (HTML)
- 📝Çalışma Soruları - Çok İşlemcili Sistemler (HTML)
- 🕹️Çok Çekirdekli Çizelgeleme ve Yük Dengeleme Simülatörü (HTML)
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.
- 🖼️Sunum-Güvenlik (HTML)
- 📄Sunum-Güvenlik (PDF)
- 📖Ders Notu - Güvenlik (HTML)
- 📝Çalışma Soruları - Güvenlik (HTML)
- 🕹️İşletim Sistemi Koruma ve İzinler Laboratuvarı (HTML)
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.
- 🖼️Sunum-İşletim Sistemi Tasarımı (HTML)
- 📄Sunum-İşletim Sistemi Tasarımı (PDF)
- 📖Ders Notu - İşletim Sistemi Tasarımı (HTML)
- 📝Çalışma Soruları - İşletim Sistemi Tasarımı (HTML)
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.