İşletim Sistemleri
Bir işletim sistemi, bir bilgisayarın donanımını yöneten ve uygulamalara hizmet sağlayan, işlemciyi, belleği, depolamayı ve aygıtları programlar arasında çoklayarak koruma ve soyutlama sağlayan yazılım katmanıdır.
Tanım
Bir işletim sistemi, donanım kaynaklarını yöneten, süreçler, dosyalar ve adres alanları gibi soyutlamalar sağlayan ve izolasyon ile adil paylaşım sağlarken uygulama programları ile temel makine arasında arabuluculuk yapan sistem yazılımıdır.
Kapsam
Bu alan, işletim sistemlerinin prensiplerini ve yapısını kapsar: süreçler ve iş parçacıkları, CPU zamanlaması, bellek yönetimi ve sanal bellek, dosya sistemleri, eşzamanlılık ve senkronizasyon, aygıt ve G/Ç yönetimi ve koruma. İşletim sistemini donanım ve uygulamalar arasındaki kaynak yöneticisi ve soyutlama katmanı olarak ele alır. Bellek hiyerarşisi ve önbellekler (sanal belleği yönetir) ile depolama ve G/Ç sistemleriyle (aygıtları ve kalıcılığı yönetir) sınırlıdır ve dağıtık ve paralel bilişim altında ele alınan makineler arası dağıtık koordinasyonu dışlar.
Alt konular
Temel sorular
- İşletim sistemi, paylaşılan donanım üzerinde bağımsız süreçler ve iş parçacıkları soyutlamasını nasıl oluşturur?
- Zamanlayıcı, hangi hazır görevin çalıştırılacağına ve hangi hedeflerle karar verir?
- İşletim sistemi belleği nasıl yönetir ve sanal bellek ile sayfalamayı nasıl uygular?
- Dosya sistemleri, depolama aygıtlarındaki kalıcı verileri güvenilir bir şekilde nasıl düzenler?
- İşletim sistemi, kaynaklara koruma, izolasyon ve kontrollü erişimi nasıl sağlar?
Anahtar kavramlar
- çekirdek ve kullanıcı modu
- süreç ve iş parçacığı
- bağlam anahtarı
- CPU zamanlaması
- sanal bellek ve sayfalama
- dosya sistemi
- eşzamanlılık ve senkronizasyon
- kilitlenme (deadlock)
- sistem çağrıları
- koruma ve izolasyon
Temel kuramlar
- Süreç ve adres alanı soyutlaması
- İşletim sistemi, her programın makineye sahipmiş gibi çalışması için CPU'yu ve belleği sanallaştırır: bir süreç, bir adres alanı, yürütme bağlamı ve kaynakları bir araya getirir ve çekirdek, süreçler arasında geçiş yapar ve onları birbirinden korur.
- Çalışma kümesi bellek yönetimi
- Denning'in çalışma kümesi modeli, bir sürecin belirli bir zaman diliminde aktif olarak kullandığı sayfa kümesini karakterize eder; her sürecin çalışma kümesini bellekte tutmak, 'thrashing'i (aşırı sayfalama) önler ve sanal bellek sistemlerinde sayfalama ve kabul kararlarına rehberlik eder.
Mekanizmalar
Çekirdek (kernel) ayrıcalıklı bir modda çalışır ve donanıma erişimi sağlar. Çalışan programları süreçler ve iş parçacıkları olarak temsil eder, bir zamanlayıcı tarafından yönlendirilen bağlam anahtarları (context switch) aracılığıyla aralarında geçiş yapar. Bellek, sayfalama (paging) ve sanal adres çevirisi (virtual address translation) yoluyla yönetilir; kalıcı veriler dosya sistemleri tarafından düzenlenir; ve paylaşılan durum, kilitler (locks), semaforlar (semaphores) ve monitörler (monitors) gibi senkronizasyon ilkelleriyle koordine edilir. Sistem çağrıları (system calls), uygulamalara çekirdek hizmetlerine kontrollü giriş imkanı verir.
Klinik önem
İşletim sistemleri, sunuculardan ve masaüstü bilgisayarlardan telefonlara ve gömülü cihazlara kadar neredeyse tüm bilişimin temelini oluşturmaktadır. Tasarımları performans, güvenilirlik ve güvenliği belirlemektedir — zamanlama duyarlılığı, bellek yönetimi verimi etkilemekte, izolasyon mekanizmaları ise sistem güvenliği ve sanallaştırmanın temelini oluşturmaktadır. Linux ve Windows gibi yaygın olarak kullanılan çekirdekler, bu prensipleri küresel ölçekte uygulamaktadır.
Tarihçe
İşletim sistemleri, 1950'lerdeki toplu iş monitörlerinden (batch monitors) 1960'lardaki CTSS ve Multics gibi çoklu programlama (multiprogramming) ve zaman paylaşımlı (time-sharing) sistemlere doğru evrilmiştir. Thompson ve Ritchie tarafından 1970 civarında oluşturulan UNIX, modern sistemlerde hala görülebilen kalıcı soyutlamalar oluşturmuştur. Dijkstra'nın semaforlar ve eşzamanlılık üzerine çalışmaları ile Denning'in çalışma kümesi modeli (working-set model) teorik temelleri atmış, kişisel, mobil ve sanallaştırılmış sistemler ise sonraki on yıllarda alanı genişletmiştir.
Tartışmalar
- Monolitik çekirdek ve mikroçekirdek tasarımı
- Uzun süredir devam eden bir tartışma, performans için çoğu hizmeti ayrıcalıklı modda çalıştıran monolitik çekirdekleri, modülerlik ve güvenilirlik için hizmetleri kullanıcı alanına taşıyan mikroçekirdeklere karşı değerlendirmektedir; modern sistemler her iki yaklaşımı da harmanlamaktadır.
Öne çıkan isimler
- Edsger W. Dijkstra
- Peter J. Denning
- Per Brinch Hansen
- Ken Thompson
- Dennis Ritchie
- Abraham Silberschatz
- Andrew S. Tanenbaum
İlgili konular
Temel eserler
- silberschatz2018
- tanenbaum2014os
- denning1968
Sıkça sorulan sorular
- Süreç ile iş parçacığı arasındaki fark nedir?
- Süreç, kendi adres alanı ve kaynakları olan bağımsız bir program yürütmesidir. İş parçacığı ise bir süreç içindeki bir yürütme birimidir; birden fazla iş parçacığı, sürecin adres alanını paylaşır, bu da iletişimi ucuz hale getirir ancak yarış durumlarını (race conditions) önlemek için senkronizasyon gerektirir.
- Çekirdek, sıradan programların yapamadığı ne yapar?
- Çekirdek, donanıma doğrudan erişmesine, bellek eşlemelerini yönetmesine, kesmeleri (interrupts) işlemesine ve süreçleri değiştirmesine olanak tanıyan ayrıcalıklı bir işlemci modunda çalışır. Uygulamalar, bu ayrıcalıklı hizmetleri kendileri gerçekleştirmek yerine sistem çağrıları aracılığıyla talep eder, bu da izolasyonu ve korumayı sağlar.