Kitap 13 · Özet sayfa
İşletim Sistemleri
Her programın altında olanlar: süreçler ve iş parçacıkları, bellek, dosyalar, kabuk ve hepsini çalıştıran çekirdek.
Software Dictionary · softwaredictionary.org/tr/kutuphane/operating-systems/ozet
- 01BootloaderÖnyükleyici
- Bootloader, bilgisayarın firmware'i başladıktan sonra çalışan, işletim sistemi kernel'ını belleğe yükleyen ve denetimi ona devreden küçük bir programdır.
- Bootloader, firmware'den sonra ve işletim sistemi kernel'ından önce çalışır.
- Kernel'ı bulur, belleğe yükler ve ona başlatma seçeneklerini iletir.
- UEFI sistemlerde EFI System Partition üzerinde bulunur.
- 02Context SwitchBağlam Geçişi
- Context switch, işletim sisteminin çalışan thread veya process'in durumunu kaydedip CPU'yu kullanabilmesi için başka birinin durumunu geri yüklemesidir.
- Context switch, bir görevin CPU durumunu kaydeder ve başka birininkini geri yükler.
- Zaman dilimlerinin bitmesi, bloke eden I/O, kilitler veya daha yüksek öncelikli iş tarafından tetiklenir.
- Doğrudan maliyeti mikrosaniyelerdir, ancak soğuk önbellekler gizli ek yük getirir.
- 03CPUMerkezî İşlem Birimi
- CPU (merkezî işlem birimi), program talimatlarını yürüten ve her yazılımın üzerinde çalıştığı aritmetik, mantık ve kontrol işlerini yapan işlemcidir.
- CPU program talimatlarını yürütür: getir, çöz, yürüt.
- GHz cinsinden saat hızı saniyedeki döngü sayısıdır, ama hikâyenin tamamı değildir.
- Modern CPU'ların birden çok çekirdeği ve küçük, hızlı önbellekleri vardır.
- 04CPU Önbelleği
- CPU önbelleği, işlemcideki küçük ve çok hızlı bir bellektir; RAM'den yakın zamanda kullanılan verinin kopyalarını tutar, böylece CPU belleği daha az bekler.
- CPU önbelleği, işlemcide RAM'deki verinin kopyalarını tutan hızlı bellektir.
- Önbellekler seviyelidir: L1 en küçük ve en hızlı, L3 en büyük ve paylaşımlıdır.
- Veri, tipik olarak 64 bayt uzunluğundaki cache line'lar halinde hareket eder.
- 05CPU Zamanlama
- CPU zamanlama, işletim sisteminin her CPU çekirdeğinde hangi hazır process ya da thread'in ne kadar çalışacağına karar vermesidir; işlemci adil paylaşılır.
- Zamanlayıcı, kernel'ın her CPU çekirdeğinde hangi görevin çalışacağını seçen bölümüdür.
- Kesintili zamanlama görevlere kısa zaman dilimleri verir ve gerektiğinde onları keser.
- Görevler arasında geçiş bir bağlam geçişi gerektirir ve küçük bir performans maliyeti vardır.
- 06DaemonArka Plan Servisi
- Daemon, kullanıcı arayüzü olmadan arka planda çalışan, genellikle açılışta başlatılan ve günlükleme, zamanlama veya SSH gibi bir hizmet sunan programdır.
- Daemon, terminali veya kullanıcı arayüzü olmayan bir arka plan process'idir.
- Daemon'lar genellikle açılışta başlar ve istekleri veya olayları bekler.
- systemd gibi servis yöneticileri daemon'ları başlatır, durdurur ve yeniden başlatır.
- 07DeadlockKilitlenme
- Deadlock, iki ya da daha fazla thread veya process'in kaynakları bırakmaları için birbirini sonsuza dek beklediği ve hiçbirinin ilerleyemediği durumdur.
- Deadlock, her birinin bir başkasının tuttuğu kaynağı beklediği bir taraflar döngüsüdür.
- Karşılıklı dışlama, tut ve bekle, kesintisizlik ve döngüsel bekleme gerektirir.
- Kilitleri tutarlı bir sırayla almak onu önlemenin en yaygın yoludur.
- 08Device DriverAygıt Sürücüsü
- Device driver, işletim sisteminin belirli bir donanımı denetlemesini sağlayan ve genel işletim sistemi isteklerini aygıta özgü komutlara çeviren yazılımdır.
- Sürücü, genel işletim sistemi isteklerini aygıta özgü komutlara çevirir.
- Çoğu sürücü kernel modunda, çoğu zaman yüklenebilir kernel modülleri olarak çalışır.
- Sürücüler bir aygıtın interrupt'larını ve veri aktarımlarını yönetir.
- 09Dosya İzinleri
- Dosya izinleri, bir dosyayı kimin okuyup değiştirebileceğini ya da çalıştırabileceğini belirleyen ve işletim sisteminin her erişimde uyguladığı kurallardır.
- Her dosyanın bir sahibi, bir grubu ve sahip, grup ve diğerleri için izinleri vardır.
- Temel izinler okuma, yazma ve çalıştırmadır.
- Sekizlik gösterim okuma (4), yazma (2) ve çalıştırmayı (1) toplar; 755 ya da 600 gibi.
- 10Dosya Sistemi
- Dosya sistemi, işletim sisteminin bir depolama aygıtındaki veriyi dosya ve klasörlere düzenleyen ve her parçanın nerede saklandığını izleyen bölümüdür.
- Dosya sistemi, ham depolamayı adlandırılmış dosya ve dizinlere düzenler.
- Meta veri, her dosyanın boyutunu, izinlerini, zaman damgalarını ve veri bloklarını izler.
- Journaling, bir dosya sisteminin çökmelerden veya elektrik kesintisinden sonra toparlanmasına yardımcı olur.
- 11File DescriptorDosya Tanıtıcısı
- File descriptor, Unix benzeri bir işletim sisteminin process'e açık bir dosya, socket, pipe ya da başka bir girdi/çıktı kaynağı için verdiği küçük tamsayıdır.
- File descriptor, açık bir I/O kaynağına başvuran, process başına bir tamsayıdır.
- 0, 1 ve 2 numaralı tanıtıcılar standart girdi, standart çıktı ve standart hatadır.
- Dosyalara, pipe'lara, socket'lere ve aygıtlara tanıtıcılar üzerinden erişilir.
- 12GPUGrafik İşlem Birimi
- GPU (grafik işlem birimi), binlerce küçük çekirdeğiyle aynı hesabı çok büyük veri üzerinde aynı anda yapan işlemcidir; grafik ve yapay zekâ için kullanılır.
- GPU'da paralel çalışan binlerce basit çekirdek vardır.
- Grafik için yapıldı, bugün yapay zekâyı da çalıştırıyor.
- 2007'den CUDA, GPU'ları genel hesaplama için programlanabilir yaptı.
- 13Heap Belleği
- Heap belleği, boyutu ya da ömrü önceden bilinmeyen, çalışma zamanında ayrılan ve onu oluşturan fonksiyondan uzun yaşayabilen verilerin tutulduğu bölgedir.
- Heap, boyutu ve ömrü esnek, çalışma zamanında ayrılan veriyi tutar.
- Bir fonksiyon çağrısından daha uzun yaşayan nesneler heap'te yaşar.
- C ve C++ onu elle serbest bırakır; Rust sahiplik, diğerleri çöp toplama kullanır.
- 14Hypervisor
- Hypervisor, tek bir fiziksel bilgisayarın CPU, bellek ve aygıtlarını paylaştırarak yalıtılmış sanal makineler oluşturan ve çalıştıran yazılımdır.
- Hypervisor, tek bir fiziksel bilgisayarda sanal makineler oluşturur, çalıştırır ve yalıtır.
- Tip 1 hypervisor'lar bare-metal üzerinde, tip 2 hypervisor'lar bir işletim sisteminin üzerinde çalışır.
- Modern CPU'lardaki donanım sanallaştırma, konukların yerele yakın hızda çalışmasını sağlar.
- 15InterruptKesme
- Interrupt, CPU'ya bir olayın acil ilgi gerektirdiğini bildiren sinyaldir; CPU mevcut işini duraklatır ve kernel'daki özel bir işleyiciyi çalıştırır.
- Interrupt, CPU'nun acil bir olayı ele almak için mevcut işini duraklatmasını sağlar.
- Kernel eşleşen interrupt işleyicisini çalıştırır ve ardından kesilen işe devam eder.
- Donanım aygıtları, zamanlayıcılar ve CPU istisnalarının hepsi interrupt yükseltebilir.
- 16İşletim SistemiOS
- İşletim sistemi (OS), bilgisayarın donanımını yöneten temel yazılımdır; bu donanımı programlar arasında paylaştırır ve onu kullanmanın ortak bir yolunu sunar.
- İşletim sistemi donanımı yönetir ve programları çalıştırır.
- Çekirdeği süreçleri, belleği, dosyaları, cihazları ve izinleri yönetir.
- Programlar onun hizmetlerini sistem çağrılarıyla kullanır.
- 17KernelÇekirdek
- Kernel, işletim sisteminin CPU'yu, belleği ve donanım aygıtlarını yöneten ve programların bu kaynaklara nasıl eriştiğini denetleyen çekirdek bölümüdür.
- Kernel, işletim sisteminin çekirdeğidir ve bilgisayar açık olduğu sürece çalışır.
- CPU'yu, belleği, aygıtları ve dosya sistemlerini yönetir.
- Kernel ayrıcalıklı kernel modunda çalışır; uygulamalar kısıtlı kullanıcı modunda çalışır.
- 18Kernel ModeÇekirdek Kipi
- Kernel mode (çekirdek kipi), çekirdeğin donanıma ve belleğe tam erişebildiği ayrıcalıklı CPU durumudur; sıradan programlar kısıtlı kullanıcı kipinde çalışır.
- Çekirdek kipi, işletim sistemi çekirdeğine donanıma ve belleğe tam erişim verir.
- Uygulamalar kısıtlı kullanıcı kipinde çalışır.
- Sistem çağrıları, kesmeler ve hatalar CPU'yu çekirdek kipine geçirir.
- 19Komut Satırı ArayüzüCLI
- Komut satırı arayüzü (CLI), bilgisayarı metinle kullanmanın yoludur: seçenekleri ve argümanlarıyla bir komut yazar, Enter'a basar ve çıktısını okursunuz.
- CLI bir metin arayüzüdür: bir komut yazar, çıktıyı okursunuz.
- Komutlar argümanlar ve --verbose gibi seçenekler alır.
- CLI'lar hızlı, kesin ve betiklemesi, otomatikleştirmesi kolaydır.
- 20Memory LeakBellek Sızıntısı
- Memory leak, bir programın artık ihtiyaç duymadığı belleği tutmayı sürdürdüğü hatadır; bellek kullanımı zamanla artar, sistem yavaşlayabilir ya da çökebilir.
- Memory leak, program artık ihtiyaç duymasa da ayrılmış halde kalan bellektir.
- Sızıntılar bellek kullanımının zamanla istikrarlı biçimde artmasına yol açar.
- Çöp toplama, takılı kalan başvuruların yol açtığı sızıntıları önlemez.
- 21MutexKarşılıklı Dışlama (Mutual Exclusion)
- Mutex, kodun kritik bir bölümüne aynı anda yalnızca bir thread'in girmesine izin veren bir kilittir; thread'ler paylaşılan veriyi aynı anda değiştirip bozamaz.
- Mutex, bir kritik bölümü aynı anda yalnızca bir thread'in çalıştırmasına izin verir.
- Mutex'i kilitli bulan thread'ler serbest bırakılana kadar bekler.
- Bir mutex'i yalnızca onu kilitleyen thread açmalıdır.
- 22PagingSayfalama
- Paging, belleği sabit boyutlu sayfalara bölen ve sayfa tablolarıyla her process'in sanal sayfalarını fiziksel RAM'e eşleyen bir bellek yönetim düzenidir.
- Bellek, yaygın olarak 4 KB olan sabit boyutlu sayfalara, RAM ise çerçevelere bölünür.
- Sayfa tabloları her sanal sayfayı bir fiziksel çerçeveye eşler.
- TLB, aramaların hızlı kalması için son çevirileri önbelleğe alır.
- 23ProcessSüreç
- Process, bir programın çalışan örneğidir; işletim sistemi tarafından yönetilen kendi bellek alanına, kaynaklarına ve en az bir yürütme iş parçacığına sahiptir.
- Process, bir process ID'si (PID) ile tanımlanan, yürütülmekte olan programdır.
- Her process'in kendine ait yalıtılmış bir bellek alanı ve kaynakları vardır.
- Process, kodunu çalıştıran bir ya da daha fazla thread içerir.
- 24Race ConditionYarış Durumu
- Race condition, programın sonucunun paylaşılan veriyi aynı anda kullanan thread, process veya isteklerin öngörülemeyen zamanlamasına bağlı olduğu hatadır.
- Race condition, sonucu eşzamanlı işlemlerin zamanlamasına bağımlı kılar.
- Oku-değiştir-yaz ve kontrol et-sonra-uygula dizileri en yaygın nedenlerdir.
- Yarışlar thread'ler, process'ler veya ayrı web istekleri arasında olabilir.
- 25RAMRastgele Erişimli Bellek
- RAM (rastgele erişimli bellek), bilgisayarın hızlı ve geçici çalışma belleğidir; kullanımdaki programları ve verileri tutar, güç kesilince içeriği kaybolur.
- RAM, çalışan programlar için hızlı ve geçici çalışma belleğidir.
- Uçucudur: güç olmadan içeriği kaybolur.
- Her adres doğrudan okunabilir; rastgele erişim bunu anlatır.
- 26Sanal Bellek
- Sanal bellek, her process'e kendine ait özel bir adres alanı veren ve bunu arka planda fiziksel RAM'e ya da diske eşleyen bir işletim sistemi tekniğidir.
- Her process kendi özel sanal adres alanını alır.
- MMU ve sayfa tabloları sanal adresleri fiziksel adreslere çevirir.
- Bellek, yaygın olarak 4 KB olan sabit boyutlu sayfalarla yönetilir.
- 27Semaphore
- Semaphore, mevcut izinlerin sayacını tutan bir senkronizasyon aracıdır; belirli bir sayıya kadar thread'in bir kaynağı aynı anda kullanmasına izin verir.
- Semaphore, thread'lerin aldığı ve geri verdiği bir izin sayısı tutar.
- Counting semaphore, aynı anda en fazla N thread'in bir kaynağı kullanmasına izin verir.
- Semaphore'un sahibi yoktur; bu yüzden herhangi bir thread bir izni serbest bırakabilir.
- 28ShellKabuk
- Shell, kullanıcının yazdığı ya da bir betikte yazılı komutları okuyup işletim sisteminden çalıştırmasını isteyen, genellikle metin arayüzlü bir programdır.
- Shell komutları yorumlar ve işletim sisteminden çalıştırmasını ister.
- Popüler shell'ler arasında Bash, Zsh, fish ve PowerShell vardır.
- Pipe'lar, yönlendirme ve değişkenler küçük komutları güçlü olanlara dönüştürmenizi sağlar.
- 29Stack Belleği
- Stack belleği, bir thread'in fonksiyonlarının yerel değişkenlerini ve dönüş adreslerini tuttuğu bölgedir; her çağrıda büyür, dönüşte otomatik olarak küçülür.
- Stack her fonksiyon çağrısının çerçevesini tutar: parametreler, yerel değişkenler, dönüş adresi.
- Çerçeveler çağrıda eklenir, dönüşte çıkarılır; bu yüzden ayırma çok hızlıdır.
- Her thread'in kendi küçük, sabit boyutlu stack'i vardır.
- 30sudo
- sudo, izin verilen bir kullanıcının kendi parolasıyla tek bir komutu root ya da başka bir kullanıcının yetkileriyle çalıştırmasını sağlar ve bunu kaydeder.
- sudo, tek bir komutu root'un ya da başka bir kullanıcının yetkileriyle çalıştırır.
- Sizin kendi parolanızı sorar ve her kullanımı kaydeder.
- visudo ile düzenlenen sudoers dosyası kimin neyi çalıştırabileceğini söyler.
- 31Swap AlanıTakas Alanı
- Swap alanı, işletim sisteminin RAM'in taşma alanı olarak kullandığı disk bölgesidir; fiziksel bellek azaldığında az kullanılan bellek sayfaları oraya taşınır.
- Swap alanı, RAM dolduğunda taşma olarak kullanılan disk depolamasıdır.
- Kernel az kullanılan sayfaları swap'a taşır ve talep üzerine geri okur.
- Thrashing denen yoğun takas, sistemi son derece yavaşlatır.
- 32System CallSistem Çağrısı
- System call, bir programın işletim sistemi kernel'ından bir dosyayı okumak ya da process başlatmak gibi ayrıcalıklı bir işlem yapmasını istediği çağrıdır.
- System call, kullanıcı modundaki bir programın kernel'dan ayrıcalıklı bir hizmet istemesinin yoludur.
- Her system call CPU'yu kullanıcı modundan kernel moduna ve geri geçirir.
- Örnekler arasında open, read, write, fork ve mmap vardır.
- 33Terminal
- Terminal, bir metin arayüzü gösteren, tuş vuruşlarınızı bir kabuğa ya da komut satırı programına iletip onun geri gönderdiği metni görüntüleyen programdır.
- Terminal bir metin arayüzü gösterir ve tuş vuruşlarınızı iletir.
- İlk terminaller donanımdı; bugünküler terminal emülatörleridir.
- Komutları gerçekten çalıştıran bir kabuğu başlatır.
- 34Threadİş Parçacığı
- Thread, işletim sisteminin zamanlayabileceği en küçük yürütme birimidir; bir process içinde çalışır ve o process'in belleğini diğer thread'lerle paylaşır.
- Thread, bir process içinde yaşayan yürütme birimidir.
- Aynı process'teki thread'ler belleği paylaşır, ancak her birinin kendi yığını vardır.
- Birden fazla thread, çok çekirdekli bir CPU'da paralel çalışabilir.
- 35Unix
- Unix, 1969'da Bell Labs'ta doğan ve küçük araçlar, dosyalar ve bir kabuktan oluşan tasarımı Linux ve macOS'ta yaşamaya devam eden bir işletim sistemi ailesidir.
- Unix, 1969'da Bell Labs'ta başladı ve kısa süre sonra C ile yeniden yazıldı.
- Felsefesi: her biri tek bir işi iyi yapan, pipe'larla birleştirilen küçük araçlar.
- Neredeyse her şey bir dosyadır ve insanlar bir kabuk üzerinden çalışır.
- 36Unix SignalUnix Sinyali
- Unix signal, kernel'ın bir process'e durdurma isteği, hata ya da dolan bir zamanlayıcı gibi bir olayı bildirmek için ilettiği kısa ve asenkron bir bildirimdir.
- Signal, bir process'e iletilen küçük, asenkron bir bildirimdir.
- Yaygın signal'lar arasında SIGINT, SIGTERM, SIGKILL ve SIGHUP vardır.
- Bir process varsayılan eylemi kullanabilir, signal'i yok sayabilir veya bir işleyici çalıştırabilir.
- 37User SpaceKullanıcı Alanı
- User space, sıradan programların çalıştığı kısıtlı alandır; kernel space'ten ayrıdır, böylece hatalı ya da kötü niyetli bir uygulama tüm sistemi çökertemez.
- User space, uygulamaların kısıtlı ayrıcalıklarla çalıştığı yerdir.
- Kernel space, donanıma tam erişimi olan kernel'a ayrılmıştır.
- CPU sınırı ayrıcalık düzeyleri ve bellek korumasıyla uygular.