1. İşletim Sistemi Giriş ve Donanım Organizasyonu
İşletim sisteminin sağladığı yararlar nelerdir?
İşletim sistemi (OS), bilgisayar donanımı ile kullanıcı arasında bir arayüz görevi gören en temel sistem yazılımıdır. Sağladığı temel faydalar şunlardır:
- Donanım Verimliliği: Bilgisayar donanımından (CPU, RAM, G/Ç aygıtları) en iyi şekilde yararlanmayı sağlar. Kaynakların atıl kalmasını önleyerek işlem hacmini artırır.
- Kullanım Kolaylığı: Donanımın karmaşık fiziksel yapısını soyutlayarak, son kullanıcı ve yazılım geliştiriciler için donanımın kullanılmasını kolaylaştırır.
- Yazılım Çözümleri: Bellek yönetimi, dosya sistemleri ve ağ protokolleri gibi çeşitli düşük seviyeli problemlerin işletim sistemi katmanında çözülmesini sağlayarak uygulama geliştirmeyi hızlandırır.
Güncel bir bilgisayar sisteminin organizasyonu ve mimarisi nasıldır?
Modern bilgisayar sistemleri, ortak bir veri yolu (Bus) aracılığıyla bellek ve donanım birimlerine erişen mikroişlemcilerden oluşur.
- Aygıt Kontrolörleri: Her aygıt (ekran, disk, klavye), o aygıtı denetleyen özel bir kontrolöre sahiptir. Kontrolörler veriyi tampon belleklerde toplar.
- Veri Yolu (Bus): İşlemci, bellek ve kontrolörler arasındaki iletişimi sağlayan ana hattır.
- Mimari Türleri: Sistemler işlemci sayısına göre sınıflandırılır:
- Tek İşlemcili Sistemler: Genel kullanım için tek bir ana CPU barındırır.
- Çok İşlemcili (Multiprocessor) Sistemler: İki veya daha fazla çekirdek/işlemci aynı belleği paylaşarak hızı ve güvenilirliği artırır.
- Küme (Cluster) Sistemleri: Ayrı bilgisayarların bir ağ üzerinden birleşerek tek bir sistem gibi çalışmasıdır.
2. Süreç (Process) ve İş Parçacığı (Thread) Anatomisi
Süreç (Process) nedir ve bellekte nasıl bölümlere ayrılır?
Süreç, bilgisayarda o an işlenmekte olan programın aktif halidir. Bir program diskte pasifken, süreç RAM'e yüklenmiş ve kaynak tüketen canlı bir birimdir.
Bellek üzerindeki yerleşimi dört ana kısımdan oluşur:
| Bölüm |
Tanım ve İçerik |
| Text |
Programın derlenmiş makine kodlarını (yönergelerini) içerir. |
| Data |
Küresel (global) ve statik değişkenlerin saklandığı bölümdür. |
| Heap |
Program çalışırken dinamik olarak (malloc, new gibi komutlarla) ayrılan bellek alanıdır. |
| Stack |
Yerel değişkenler, fonksiyon parametreleri ve geri dönüş adreslerinin tutulduğu geçici alandır. |
Süreç durumları (States) ve geçişleri nelerdir?
Bir süreç yaşam döngüsü boyunca farklı durumlarda bulunur:
- New: Sürecin ilk kez yaratıldığı andır.
- Ready: Sürecin işlemciye (CPU) atanmak üzere beklediği hazır durumdur.
- Running: Program yönergelerinin işlemci tarafından bizzat işlendiği andır.
- Waiting: Sürecin bir olayın (örneğin G/Ç işleminin bitmesi veya bir sinyal) gerçekleşmesini beklediği durumdur.
- Terminated: Sürecin işinin bitip sistemden temizlendiği andır.
İş parçacığı (Thread) nedir ve süreç türleri arasındaki farklar nelerdir?
Thread, bir sürecin içindeki en küçük iş birimidir. Klasik süreçler teknik olarak tek bir iş parçacığı olarak çalışır ve bu durum programın aynı anda sadece tek bir işlevi yapabilmesi anlamına gelir.
Kelime İşlemci Örneği: Eğer bir uygulama tek thread ise, siz yazı yazarken program aynı anda yazım denetimi yapamaz; çünkü işlemci sadece "yazı yazma" komutunu işlemektedir. Çoklu iş parçacığı (Multi-threading) ise aynı anda hem yazı kaydetmeye hem de yazım denetimine izin verir.
Klasik Süreç vs. Modern Süreç Farkları
- Klasik Süreç: Tek bir iş parçacığı barındırır. Veri sıralı olarak işlenir ve eşzamanlılık düşüktür.
- Modern Süreç: Çok sayıda iş parçacığı bulunur. Veri iş parçacıkları arasında paylaşılarak paralel bir şekilde işlenir.
3. İşlemci Çizelgeleme ve Zaman Yönetimi
İşletim sisteminin süreç yönetimi görevleri arasında süreçlerin yaratılması, sonlandırılması, kaynak tahsisi ve durumlarının izlenmesi yer alır. Bu yönetimin kalbinde CPU Scheduling (Çizelgeleme) yatar.
Çizelgeleme Algoritmaları
İşlemciyi hangi sürecin kullanacağına karar verilirken şu yöntemler izlenir:
- FCFS (First-Come First-Served): İlk gelen süreç işlemciyi ilk kullanır.
- SJF (Shortest Job First): En kısa sürecek olan işe öncelik verilir.
- Round Robin (RR): Her sürece eşit zaman dilimleri (quantum) verilir; süre bitince diğer sürece geçilir.
Context Switch (İçerik Değişimi): CPU bir süreçten diğerine geçerken, o anki sürecin durumunu (PCB - Process Control Block) kaydeder ve yeni sürecinkini yükler. Bu işlem milisaniyeler bazında gerçekleşen bir zaman yönetimi operasyonudur.
4. Bellek Yönetimi, MMU ve Adresleme
Mantıksal ve fiziksel bellek adresi farkı nedir?
İşletim sistemi bellek güvenliğini ve verimliliğini sağlamak için iki tür adres kullanır:
- Mantıksal Adres: Program tarafından görülen ve kullanılan sanal adrestir.
- Fiziksel Adres: RAM (donanım) üzerindeki gerçek ve somut konumdur.
- Adres Dönüşümü: İşletim sistemi, mantıksal adresi fiziksel adrese dönüştürmekle yükümlüdür.
MMU (Memory Management Unit) nedir?
MMU, işlemci (CPU) ile bellek (RAM) arasında yer alan bir donanım birimidir. Temel görevi, her bellek erişiminde mantıksal adresleri anında fiziksel adreslere tercüme etmektir. Ayrıca süreçlerin birbirlerinin bellek alanına girmesini engelleyerek koruma sağlar.
NUMA (Non-Uniform Memory Access) nedir?
Çok işlemcili sistemlerde, her işlemcinin kendi yerel belleğine daha hızlı erişebildiği mimaridir. İşletim sistemi, süreçleri kendilerine en yakın bellek bölgelerinde çalıştırarak genel sistem performansını artırır.
5. Sistem Çağrıları ve İşlemci Modları
Kernel Kip (Çekirdek Kipi) ve Kullanıcı Kip farkı nedir?
Sistemin güvenliğini korumak için CPU iki farklı yetki modunda çalışır:
- Kernel Kip: Donanıma doğrudan erişim yetkisine sahiptir. İşletim sisteminin çekirdeği bu modda çalışır.
- Kullanıcı Kip: Donanım erişimi sınırlıdır. Uygulamalar bu modda izole bir şekilde çalışır.
Sistem Çağrısı (System Call) nedir?
Sistem çağrısı, kullanıcı alanındaki uygulamaların işletim sistemi çekirdeğinden (Kernel) hizmet talep ettiği programlama arayüzüdür.
Örnek İşlemler: Dosya açma (open), veri okuma (read), veri yazma (write) ve yeni bir süreç oluşturma gibi işlemler sistem çağrıları ile gerçekleştirilir.
6. Süreçler Arası İletişim (IPC) ve Kilitlenme (Deadlock)
Süreçler arası iletişim (Interprocess Communication - IPC) yöntemleri nelerdir?
Farklı süreçlerin birbirleriyle veri alışverişi yapabilmesini sağlayan mekanizmalardır. Yaygın olarak iki yöntem kullanılır:
- Paylaşımlı Bellek (Shared Memory): İki veya daha fazla süreç aynı bellek bölgesine erişir. En hızlı yöntemdir ancak senkronizasyon (kilit yönetimi) gerektirir.
- Mesaj Geçişi (Message Passing): Süreçler işletim sistemi aracılığıyla birbirine mesaj paketleri gönderir. Örn: İstemci-sunucu sistemleri.
Deadlock (Kilitlenme) nedir? Yemek yiyen filozoflar örneği.
Deadlock, süreçlerin ellerindeki kaynakları bırakmadan yeni kaynaklar beklemesi sonucu tüm sistemin kilitlenmesidir.
Yemek Yiyen Filozoflar: Masadaki her filozofun önünde bir tabak ve yanlarında birer çatal vardır. Yemek yemek için 2 çatal gereklidir. Her filozof aynı anda sağındaki çatalı alırsa, solundaki çatalı almak için sonsuza kadar birbirlerini beklerler ve kimse yemek yiyemez. Bu durum klasik bir deadlock örneğidir.