1. Merhaba Ziyaretçi foruma kayıt olarak hediye kodu alabilirsin!
  2. Merhaba Ziyaretçi ! IP: play.LifeMCServer.com SkyBlock Sürüm: 1.7.X-1.8.X Senide aramızda görmek isteriz.
    Duyuruyu Kapat

Bir bilgisayar nasıl çalışır? (Yazılım tarafı)

'Teknoloji' forumunda TheDark_Gamer tarafından 13 Mayıs 2021 tarihinde açılan konu

  1. TheDark_Gamer

    TheDark_Gamer Developer & Owner
    Sunucu Sahibi Forum Kurucusu

    Katılım:
    19 Mart 2017
    Mesaj:
    1.949
    Beğenilmeler:
    4.215
    Bir bilgisayar nasıl çalışır? (Yazılım tarafı)
    Katman katman anlatmamız gerekirse, ki bu gerçekte de bu şekilde, şöyle çalışır:


    Donanım (Hardware)
    Bu konuda yazılım tarafına değineceğinz ancak ilk ve en düşük katmanın donanım olduğunu ve gerçek işin tamamını donanımın yaptığını unutmayın.

    BIOS (Basic Input Output System/Firmware)
    BIOS, Basit Girdi Çıktı Sistemi anlamına gelir ve iki temel konsept ile çalışır - girdi ve çıktı. Girdi donanıma giden istekleri, çıktı ise bu isteklerin sonuçlarını temsil eder.

    Biliyorsunuz ki her anakart farklı özelliklere sahip. İşletim sistemi/kernel geliştiricileri her anakarta ayrı kod yazmasın ve bilgisayarı açmak için bir işletim sistemi gerekmesin diye bu basit ama önemli sistem ortaya çıkıyor: BIOS.

    BIOS basitçe donanım ile diğer halkalar arasında bir katman. BIOS bilgisayar ilk açıldığında devreye girer. Sonrasında da BIOS'a çağrılar olur fakat günümüzdeki kernellerin çoğu donanımla kendisi iletişime geçer çoğu durumda, bunun nedeni kernel/işletim sistemleri kolayca güncellenebilir iken BIOS'ların çoğu zaman bir çok bilgisayarda eski sürüm, buglu, hatalı olmasından kaynaklı.

    Bunun nedeni de BIOS'un anakartın içine gömülü olmasından kaynaklı. BIOS'u kolayca güncelleyemezsiniz. BIOS ayarları da bilgisayarın açılmamasına neden olabilir. BIOS ayarlarının sıfırlanması için CLR CMOS jumper'ı veya BIOS pili sökülmesi gerekir, vesaire. Yazılım ile kolay şekilde kullanım/güncelleme sunmaz çoğu BIOS.

    UEFI (Unified Extensible Firmware Interface)

    BIOS'un yerini alan/almayı hedefleyen UEFI, Birleşik Genişletilebilir Ürün Yazılımı Arayüzü anlamına gelir. BIOS'un yerini alıyor denilse de aslında sadece BIOS ve Kernel arasına yeni bir katman eklemektedir. Eski versiyonu EFI'dir. UEFI ile EFI arasındaki fark EFI Intel tarafından yapılan ilk versiyondur ve son sürümü 1.10'dur. UEFI, EFI'nin yerini almıştır, fakat EFI hala format ve uyumluluk nedeniyle kullanılmaktadır.

    UEFI yazılım katmanında çalışır ve güncellemesi, değiştirmesi kolay bir sistemdir.

    Kernel (Unix, Linux, BSD, DOS, Darwin, Mach vb)

    Kernel, BIOS ve donanım ile iletişime geçen ve işletim sisteminin bir alt katmanıdır. Kernel düşük seviye sistem çağrıları içerir ve tüm RAM, disk yönetimi, donanım ile iletişim, vb. işlemler kernelde elden geçer. Kernel BIOS'u atlayıp donanımla direk iletişime geçebilir veya BIOS'u kullanabilir.

    Kernel bu kadar düşük seviye olduğundan bilgisayarınızda her yetkiye sahiptir ve kendisinden sonraki katmanlara yetki sistemi sayesinde daha az yetki vererek sistemi/donanımı yetkisiz/yanlış erişimden korumakla yükümlüdür.

    Her sistemin/işletim sisteminin bir kerneli vardır, kernel çekirdek, altyapı anlamlarına gelmektedir. Örnek olarak Ubuntu'nun kerneli Linux'dur. Unix basit bir shell (komut satırı) sunan bir kernel ve işletim sistemidir. BSD Unix forkudur (kopyası) ve Unix'i geliştirmeyi amaçlamıştır. DOS (Disk Operating System) sadece bir komut satırı ve disk ile iletişimi sağlayan bir kernel içeren sistemdir. MS-DOS bunun Microsoft uyarlamasıdır ve Windows NT'den önceki sürümlerde kernelin bir parçasıdır.

    Darwin, Mach ve BSD'yi birleştiren Apple tarafından yapılmış ve macOS'da kullanılan kerneldir. Aynı zamanda iOS'da da kullanılmaktadır.

    İşletim Sistemi (Ubuntu, Mac, Windows, Android, iOS vb)

    İşletim sistemi kernel ile iletişime geçen ve kullanıcı katmanındaki uygulamalardan hemen önceki katmandır.

    Bu katman uygulamalardan gelen istekleri kernele ulaştırmakla ve sistemin genel işleyişinden sorumludur. Bir kernel eğer kendi içerisinde basit bir komut satırı vs. içermiyor ise genelde tek başına bir işletim sistemi olmadan işlevsizdir, çünkü çoğu kernel başladığında işletim sisteminin sunması gereken "init" veya Windows'da "System" adlı bir uygulamayı çağırır. Bu uygulama yok ise, açılmaz ise veya hata verir ise kernel'de tek başına bir arayüz veya komut satırı sunamayacağından hata verip kendisini kapatacaktır.

    İşletim sistemlerinin uygulamalardan farklı olduğunu söylemekte fayda var - örneğin Windows'da gördüğünüz System dışında ki bütün görev yöneticisi işlemleri aslında sistemden bağımsız işlevlerdir ve her ne kadar Windows bazılarını kapatınca otomatik mavi ekran verecek veya kendini kapatacak olsa da bunlar olmadan da aslında işletim sistemi yürütülebilir.

    Isolation (Ayrıştırma)

    İşletim sistemleri, bu zorunlu olmasa da, uygulamaları ayrıştırarak çalıştırabilir. Bu güvenliği arttıran bir işlemdir ve uygulamalarının birbirlerini modifiye edemeyeceğini garantiler. Ayrıştırma bir çok seviyede olabilir, örneğin sadece RAM ayrıştırması veya disk ayrıştırması veya tam ayrıştırma yapılabilir.

    Genellikle bir çok işletim sistemi uygulamaları ayrıştırmasa bile en azından sistem işlemlerini ayrıştırır, böylece sistem kolayca virüs benzeri yazılımlar ile bozulamaz veya sistemden bilgi sızması olmaz.

    Android/iOS gibi sistemler tüm uygulamaları ayrıştırma ile çalıştırır ve sadece diskin o uygulamanın kurulduğu bölümüne erişim verir (ve daha fazlasını vermek için ekstra yetki ister) iken Windows, Linux, Mac gibi sistemler genellikle sadece sistem işlemlerini ayrıştırır.

    Komut Satırı/Shell
    Her bir işlemin/görevin (görev yöneticisinde gördüğünüz işlemler gibi) bir komut satırı vardır. Örneğin java -jar x.jar bir komuttur. Bu komutu yürüten işlem komut işleyicisidir. Windows'da bu CMD olup GNU/Linux bazlı sistemlerde bash, zsh'dir.

    Aslında yürütülen her işlem bir komut satırında yürütülmektedir fakat siz bu komut satırlarını veya onların çıktılarını eğer kendiniz CMD'yi vs. açıp komutu girmediyseniz görmezsiniz.


    Kütüphaneler/API'ler
    Kütüphaneler veya API'ler zorunlu olmasa da uygulama geliştiricilerinin yerine bazı yaygın işlemleri gerçekleştirmek için kullanılan sistem çağrılarını kolay şekilde kullanma yöntemi sunan .dll veya Linux'da .so dosyalarıdır.

    Bunlar işletim sistemi tarafından sağlanan mscorelib.dll gibi dosyalar veya dışdan gelebilecek 3. parti kütüphaneler/API'ler olabilir.

    Uygulamalar
    Uygulamalar son katmandır. Uygulamalar shell/komut satırı ile başlatılır (bir kısayola veya exeye tıklamanında sadece uygulamayı arka plandaki bir komut satırında açtığını söylemekte fayda var), kütüphane/apiler yükleyebilir ve işletim sistemi ile iletişime geçebilir.

    Yönetici olarak başlatılmayan uygulamaların (Windows: User Access Control (UAC), Linux: Sudo) bir çok işletim sisteminde Kernel, BIOS veya Donanım ile direkt iletişime geçmesine güvenlik nedeniyle izin verilmez.

    Zaten buna izin vermekte virüs gibi şeyleri yaygınlaştırır çünkü kernel, bios, donanım çok düşük seviye ve yetki sistemi olmayan katmanlardır. Bu nedenle buna izin vermek örneğin uygulamanın direk donanımla iletişime geçip belli yöntemler ile donanımınızı yakmanızı sağlayabilir.

    Genelde yetki sistemini işletim sistemi sağlar. Örneğin işletim sistemi yönetici veya standard hesaplar sunarak bir yetki sistemi sağlayabilir. Veya Android gibi işletim sistemlerinde her uygulamanın belli izinleri vardır.

    Daha üst seviye katmanlar

    Buradan sonrası artık daha çok yazılıma kayıyor ama yine de ufak bir değinmekte fayda var. En son katman Uygulamalar fakat iş burada bitmiyor tabii ki. Uygulamaların da kendi katmanları olabilir. Örneğin VMWare gibi bir sanal makine uygulaması yukarıdaki katmanların 2. kere tekrarlanmasına sebep olabilir. Java gibi yüksek seviye diller JRE (Java Runtime Environment) ile gelir, örneğin siz bir uygulama yürüttüğünüzde aslında o uygulamayı değil JRE'yi (java.exe vb.) yürütürsünüz.

    Daha sonra JRE JAR uygulamasını yükler ve isolation (izole etme/ayrıştırma) kısmını kendi çapında tekrarlar, kendi çapında yetkilendirme sistemi sağlar ve uygulamayı o şekilde yürütür.

    Bazı ilginç şeyler/kendi fikirlerim

    Her ne kadar Linux, Mac, Windows gibi sistemlerin özgürlüğü güzel olsa da sistemde çok fazla şey yapabileceğinizden sizi ana amacınızdan saptırabiliyor bence ve ne kadar donanımınız olursa olsun uygulamalar yavaş gözükebiliyor.

    Telefonlar, iOS/Android gibi işletim sistemleri, sizi sistemin bakımıyla, vs. uğraştırmayıp, her uygulamayı yetkilerle ve erişimi izole ederek çalıştırarak, App Store/Play Store gibi uygulama yüklemek için güvenli tek bir adres sağlayarak bu işi çok daha iyi yapıyor ve sizde işletim sisteminin sorunlarıyla uğraşmak yerine daha productive (üretken) olabiliyorsunuz.


    Konu sonu

    Bir konunun daha sonuna geldik. Umarım konuyu okurken keyif almışsınızdır ve her ne kadar uzun olsa da sıkılmamışsınızdır. :D
     
    #1 TheDark_Gamer, 13 Mayıs 2021
    Son düzenleme: 13 Mayıs 2021
    AssassinDaan, SametDinç ve BugraBerkGG bunu beğendi.
  2. bombacan

    bombacan Beni Patlatamazsın Genç
    Sponsor Üye Vip Üye

    Katılım:
    26 Ocak 2018
    Mesaj:
    412
    Beğenilmeler:
    225
    Sıkılmadan okudum mükemmel olmuş normalde uzun yazıları okumayı sevmem ama ilgi alanıma ve dil kullanımı iyi olduğundan hiç sıkılmadan zevkle okuyabildim teşekkürler :)
     
    TheDark_Gamer bunu beğendi.

Bu Sayfayı Paylaş

Bu Konuya Bakan Kullanıcılar (Kullanıcı: 0, Ziyaretçi: 0)