TARAYICILAR (BROWSER) NASIL ÇALIŞIR ?

Chrome, İşletim Sistemi ve Donanımı Nasıl Kullanıyor — 1 (Temel Bilgiler) ?

Onur Dayıbaşı
Frontend Development With JS
7 min readOct 10, 2020

--

Chrome Tarayıcısının çalışırken alt yapısında kullandığı donanım (CPU, GPU, Memory) ve işletim sistemi üzerindeki Process ve Thread nasıl kullandıklarını anlatmadan önce bu yazıda bazı temel bilgilerden bahsetmek istiyorum. Bu konularda deneyiminiz var ise 2nci yazıya direk geçebilirsiniz 😄.

Not: Ayrıca Chrome Nasıl Çalışır Yazı Serisine bu linkten erişebilirsiniz.

  • Concurrency vs Paralel?
  • İşlemci(CPU) hangi işlemi önce yapacağına nasıl karar verir ?
  • Process vs Thread ?
  • Senkron ve Asenkron arasındaki fark nedir ?
  • Ekran Kartı Nasıl Çalışır ?
  • İşletim Sistemi Nasıl Çalışır ?

1. Concurrency vs Paralel

Eşzamanlı çalışma ve paralel çalışma arasındaki temel fark aslında Paralel sizin birden fazla task(görevi) aynı anda çalıştırabilmenizdir. Bunun için multi-core işlemcilere ihtiyacınız vardır. Eğer tek bir işlemciniz varsa birden fazla uygulamayı nasıl aynı anda çalıştırıyoruz?

Multi-tasking yani bu süre içerisinde işlemci processor iş bölümlemesi yaparak birden fazla uygulamayı örneğin Spotify, Tarayıcı, Word vb parça parça zaman vererek çalıştırır. Bu işlemi çok hızlı yaptığı için son kullanıcılar bu durumu hissetmez. Hatta işletim sistemi seviyesinde bir çok görevi bu scheduler tarafından çalıştırılır. Özetle CPU süre paylaşımını gerçekleştirir.

2. İşlemci(CPU) hangi işlemi önce yapacağına nasıl karar verir ?

CPU yani fiziksel işlemciler kendilerine verilen işlemleri gerçekleştirmekten sorumludur. Birden fazla işlem var ise bunlardan hangisinin önce çalışacağına, sırasının ne olacağına karar verme işlemi İşletim Sistemleri tarafından gerçekleştirilir (Windows, MacOS, Linux, Unix, Android iOS vb)

İşletim sisteminin yaptığı bu işleme CPU Scheduling veya Processor Scheduling işlemi verilir. Bu işlemi gerçekleştirebilmek için Scheduling Algoritmalarını kullanır ve bir takım hedefler gözetilerek bu algoritmalar çalıştırılır.

  • Fairness : İşlemler arası adaletli bir dağıtım
  • Policy Enforcement: Sistem politika ve kurallarının doğru şekilde çalışmasının sağlanması
  • Efficiency: Sistem bileşenlerinin ve işlemcinin en etkin şekilde kullanılması
  • Response Time: Kullanıcı etkileşimde çok hızlı cevap dönebilmesi
  • Turnaround: İşlem üzerinde uzun zaman beklemesini minimize etmesi.
  • Throughput: İşlemin bitmeden diğer işleme geçişi, yani bir iş bitmeden işlemden işleme atlama olayını minimize etmesi

Scheduling algoritmaları ikiye ayrılır.

  • Preemptive : İşlemin bitmeden diğer işlemlere geçebildiği
  • Non-Preemptive : İşlemin CPU tarafından alınıp bitirilinceye kadar bırakılmadığı

3. Process vs Thread

Process işletim sistemi seviyesinde bir uygulama başlattığınızda gördüğünüz işlemciler gibi düşünebilirsiniz. komut satırına yazdığınızda hangi process ‘lerin hangi id ile çalıştığını görebilirsiniz.

ps -a
process

Yukarıda bahsettiğimiz scheduler bu process zaman vererek tüm uygulamaların birlikte çalışmasına olanak sağlar. O process içerisinde tek bir thread çalıştırılabileceği gibi SingleThread EventLoop’daki gibi. Java’daki Servlet içerisindeki gibi multi-thread yaklaşımlarda uygulanabilir.

Multi-Thread vs Single Thread

4. Senkron vs Asenkron (Sync/Async)

Senkron yapıyı incelediğimizde process içerisindeki kod işletilirken hep sonraki satırın işletilmesini bekler. Örneğin dosyaya bir şey yazdırıyorsunuz, dosyaya yazma işlemini bekliyorsanız ProcessB işlemin bitmesini bekliyorsanız bu yapılara Senkron, eğerki beklemeden ProcessB görevi verip diğer işlemleri yapmaya devam ediyorsanız. ProcessB cevap geldiğinde o işe o zaman bakıyorsanız bu tip çalışma mantıklarınada async denir.

5. Ekran Kartı Nasıl Çalışır (GPU)

Radeon 9700 Pro Ekran kartına yakından göz gezdirdiğimizde VPU(Visual Processing Unit) işlemcisi aşağıdaki şekildeki gibidir.

Ekran Kartının İç Yapısı

Radeon 9700 yongası hala 15µ teknolojisiyle üretiliyor ve 110 milyonu aşkın transistörü ile oldukça büyük bir alana sahip.

AGP 8X Arayüzü: İşlemciden, grafik işlemcisine 2GB/s bir bant genişliğinin sağlaması. Bu sayede işlemciden aktarılacak olan vertex transferindeki darboğaz bir müddet daha önleyebilecek.

Bellek Denetleyicisi: İşlemci üzerinde ne kadar büyüklükte bellek desteklediği ve bu bellek alanlarının kontrolünün nasıl gerçekleştiği ile ilgilenen bu kısımda Radeon 9700, 256(64*4) bit veri yolu, 256 MB 310 Megahertz DDR bellekler kullanılacak.

Vertex Shader Üniteleri: Bu konuyu şu anda kısaca inceleyelim ileride 3D Yazılım içerisinde ayrıntılı olarak değineceğiz.

Vertex Shader

Vertex Shading işlemi aşağıdaki şekilde de görüldüğü gibi sabit bir fonksiyon sırasına sahip olan rendering pipeline sırasında T&L(Transform ve Lighting) işlemi sırasında fonksiyon sırasını kendi üzerine alarak pipeline üzerinde by-pass uygulamaktadır.

Bu sayede T&L sağlayamadığı popüler vertex hesaplamalarına bir alternatif sağlanmış olur. Ayrıca bazı efektlerin T&L sıkı sıkıya bağlı olduğu bir durumda, bu kısmı kendinizin programlamanızı sağlayarak(assembly) çok daha iyi efektleri ortaya çıkarma imkanı sunar.

Mesela aşağıdaki işlemleri Vertex Shader operasyonları ile yerine getirebilirsiniz.

  • Procedural Geometry (cloth simulation, soap bubble [Isidoro /Gosslin])
  • Advanced Vertex Blending for Skinning and Vertex Morphing (Tweening) [Gosselin]
  • Texture Generation [Riddle/ Zecha]
  • Advanced Keyframe Interpolation (complex facial expression and speech)
  • Particle System Rendering
  • Real-Time Modifications of the Perspective View (lens effects, underwater effect)
  • Advanced Lighting Models (often in cooperation with the pixel shader) [Bendel]
  • First Steps to Displacement Mapping [Calver]

Bu çerçeve içerisinde ekran kartının bu kısmıda vertex shader’ları çalıştıracak birimleri içerir.

Pixel Shader

Pixel Shader Üniteleri niye vardır ? Yine biraz önceki şekle bakarsanız. MultiTexturing safhasında pipeline karışarak by-pass yaptığını görebilirsiniz. En önemli başarısı 64 bit, 128 bit kayar nokta renk hassaslığı ve aşağıdaki bir takım efektlerin ve gerçekçi görüntülerin oluşmasına olanak sağlamasıdır.

  • Single-pass, per-pixel lighting (see next part)
  • True Phong shading [Beaudoin/Guardado]
  • Anisotropic lighting [Isidoro/Brennan]
  • Non-Photorealistic-Rendering: cartoon shading, hatching, Gooch lighting, image-space techniques [Card/Mitchell]
  • Per-pixel fresnel term [Brennan]
  • Volumetric effects [Kraus][Hart]
  • Advanced bump mapping (self-shadowing bump maps (also known as Horizon Mapping)
  • Procedural textures [Zecha] and texture perturbation [Isidoro / Riguer]
  • Bidirectional reflectance distribution functions [Moravánsky]

Hyper-Z: Radeon görünmeyen yüzeylerin çizimini önlemek için kullandığı tekniği Hyper-Z olarak adlandırıyor.

Smoothvision 2.0 — Anisotropic Filtering: Anisotropic Filtreleme, kişiye geniş bir açısı olan yüzeylerdeki (mesela bir koridor boyunca uzanan duvarlar) kaplamaların kalitesini oldukça yükselten özel bir tekniktir.

Gerek bi-linear gerekse de tri-linear kaplama filtrelemesinin burada iyi bir iş çıkaramamasının sebebi, varolan pikselin yukarıda anlatılan filtreleme tekniklerinde pixel rengini tanımlamak için kullanılan dört ya da sekiz teksel örneğinden daha büyük bir kısmını kaplamasıdır.

Anisotropic filtreleme, pikselin rengini tanımlamak için, yüzeyin eğimi boyunca 16 bi-linear veya tri-linear örneği almaktadır.

ATi Video Shader: ATi, video shader’ ın düşük bant genişliğinde akan bir videodaki karelenmeleri gerçek zamanlı olarak nasıl önlediğini, ya da ‘blurring’, ‘embossing’ ve ‘outlining’ gibi özel efektlerin bir video sinyaline nasıl uygulanabileceğini gösterdi.

6. İşletim Sistemi Nasıl Çalışır ?

İşletim Sistemi Nedir ? İşletim sistemi bilgisayar kullanıcısı ile bilgisayar donanımı arasında işleyen bir programdır.

Amaçları Nelerdir ?

  • Kullanıcı programlarını çalıştırmak ve problemlere çözüm üretmek
  • Bilgisayar Sistemini kullanılmaya uygun hale getirmek
  • Bilgisayar donanımını en etkili yoldan kullanmak

Bilgisayar Sistemi İçerisindeki Yeri Nedir ?

İşletim Sistemi Yapısı
  • Hardware: Ana işlem kaynaklarının sağlanması (CPU, bellek, I/O)
  • İşletim Sistemi: Donanım ile kullanıcılar için hazırlanmış farklı uygulama programları arasında kontrol ve koordinenin sağlanmasından sorumludur.
  • Uygulama Programları: Kullanıcı problemlerini çözmek için sistem kaynaklarının nasıl kullanılacağı belirler.(compiler, veritabanı sistemleri)
  • Kullanıcılar: (insanlar, makinalar, diğer bilgisayarlar)

İşletim Sisteminin Hangi Bölümlerden Oluşur ?

Süreç(process) Yönetimi: Süreç proğramın işletilmesidir. Süreç görevini yerine getirebilmek için belli kaynaklara ihtiyaç duyar. (CPU zamanı, bellek, dosya, I/O aygıtları)İşletim sistemi aşağıdaki aktivitelerden süreç yönetimi ile sorumludur.

  • Süreç yaratma ve silme
  • Süreci askıya alma ve tekrar başlatma
  • Süreç Senkronizasyonu ve Süreç iletişimi

Bellek Yönetimi: Bellek büyük miktarda word ve byte’ lerin oluşturduğu kendi adresi olan array’ dir. Ana bellek geçici bellek aygıtıdır.İşletim sistemi aşağıdaki aktivitelerden bellek yönetimi ile sorumludur.

  • Kullanılmakta olan bellek alanlarının izlerini tutmak
  • Bellek alanı boşaldığında hangi sürecin belleğe yükleme yapacağına karar vermek.
  • İhtiyaca göre yer tahsisi ve serbest bırakımını gerçekleştirmek

Dosya Yönetimi: Oluşturucusu tarafından bir araya getirilmiş ilişkili bilgilerdir. Genellikle dosyalar proğramları ifade eder.(tüm obj formları, kaynak dosyaları ve veriler) İşletim sistemi aşağıdaki aktivitelerden dosya yönetimi ile sorumludur.

  • Dosya yaratma ve silme
  • Dizin oluşturma ve silme
  • Dosyalar ve dizinler üzerinde değişiklik yapabilmek için ilkel ilkel yetenekleri desteklemek
  • Dosyaları ikinci bellekte aynen eşleştirebilmek(mapping)
  • Dosyaların yedeklerini sabit diske alabilmek

I/O Sistem Yönetimi: Buffer-caching sistemi, Genel aygıt-sürücü arayüzleri Sürücüye özel donanım aygıtlarını kapsar.

İkincil Bellek Alanı Yönetimi: Birinci bellek alanı verileri geçici olarak tutabilmesi ve çok küçük olması sebebiyle tüm programlar ve verileri sürekli olarak ana bellekte tutulmaz. İşte burada ikincil bellek alanı birincil bellek alanının backup’ı olarak kullanılır.Birçok bilgisayar sistemi backup edilecek proğram ve veriler için diskler (sabit diskler) kullanır.İşletim sistemi aşağıdaki aktivitelerden ikincil bellek yönetimi ile sorumludur.

  • Boş alan yönetimi
  • Depolama yer tahsisi
  • Disk paylaştırımı

Networking (Distributed Sistem): Distributed Sistemden kasıt aynı bellek alanını ve saatini paylaşmayan işlemci topluluğu.İşlemciler sisteme network aracılığı ile bağlanır.İletişim belli bir protokol aracılığı ile gerçekleşir. Distributed Sistem kullanıcıların başka sistem kaynaklarına erişebilmesini sağlar. Bu da

  • İşlem hızının arttırılmasına
  • Veri erişebilirliğinin arttırılması
  • Gelişmiş güvenilirlik sağlar.

Koruma(Protection) Sistemi: Kullanıcıların, programlarını süreçlerin sisteme ve kullanıcı kaynaklarına erişimini kontrol eden mekanizmadır.Koruma mekanizması

  • Yetkili veya yetkisiz kullanımı ayırt edebilmeli.
  • Aldatmaları belirleyebilmeli
  • Zorlayıcı olabilmeli

Komut Yorumlayıcı Sistemi: Kontrol deyimi olarak bir çok komutun işletim sistemine verilmesi. Bunlar;

  • Süreç yaratma ve yönetme,
  • I/O handling
  • İkincil bellek yönetimi
  • Birincil bellek yönetimi
  • Dosya Sistemine erişim
  • Koruma
  • Network

Referanslar

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--