3. adım
İşletim Sistemleri
Birçok programın tek bir donanımı nasıl paylaştığı: süreçler, iş parçacıkları, bellek ve dosya sistemi. Sunucu, mobil ya da gömülü fark etmez, hepsinin altında bu var.
Önce bunları bilBilgisayar MimarisiVeri Yapıları
- Süreçler ve iş parçacıkları
- CPU zamanlaması
- Senkronizasyon
- Kilitlenme
- Sanal bellek
- Dosya sistemleri
- Sistem çağrıları
Neden önemli
Aynı anda tarayıcı, müzik ve derleyici çalışıyor; her biri bilgisayarın tamamı kendisininmiş gibi davranıyor. Bunu sağlayan işletim sistemi. Çok iş parçacıklı bir sunucudaki yarış durumu, telefonda donan bir uygulama, dolan bir disk: hepsinin açıklaması bu derste.
Bilmen gerekenler
- Süreç ve iş parçacığı farkı; bağlam değiştirme (context switch).
- CPU zamanlama algoritmaları: FIFO, round robin, öncelikli.
- Yarış durumu, kilit (mutex), semafor, koşul değişkenleri.
- Kilitlenme (deadlock): koşulları ve önleme yolları.
- Sanal bellek, sayfalama ve sayfa hatası.
- Dosya sistemleri: dosya, dizin, i-node, disk üzerinde yerleşim.
- Sistem çağrıları: fork, exec, open, read.
Alıştırma ve proje
- Linux kullan (WSL yeterli): ps, top, kill ile süreçleri izle.
- C ile fork/exec kullanan küçük bir kabuk (shell) yaz.
- İki iş parçacığının aynı sayacı artırdığı bir program yazıp yarış durumunu kendin üret, sonra kilitle düzelt.
Sık yapılan hatalar
- Konuları sadece slayttan çalışmak; OSTEP'in kısa bölümleri slaytlardan çok daha anlaşılır.
- Senkronizasyon kodunu "bende çalıştı" diye doğru saymak; yarış durumları bazen binde bir çıkar.