TARAYICILAR (BROWSER) NASIL ÇALIŞIR ?

Chrome, İşletim Sistemi ve Donanımı Nasıl Kullanıyor — 2 ?

Bu yazımda Chrome tarayıcısının çalışırken altyapıdaki donanımı ve işletim sistemini nasıl kullandığını inceleyeceğim.

--

Bu yazıya başlamadan önce Concurrency vs Paralel, Process vs Thread, Senkron vs Asenkron, CPU, GPU ve İşletim Sistemi konularda yeterince bilgi sahibi değilseniz, bu yazının 1nci yazısı olan Temel Bilgiler okumanızı öneririm.

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

Şimdi gelelim Chrome Tarayıcımız nasıl işletim sistemi ve donanımı kullanıyor ?

Chrome’da diğer uygulamalarda olduğu gibi katmanlı bir yapı ile öncelikle → İşletim Sistemi erişimini gerçekleştirir ve işletim sistemi servislerinden faydalanır. İşletim sistemide → donanım katmanına erişerek CPU(İşlemci), GPU(Ekran Kartı), Memory(Bellek) ve Disk erişimlerine izin vererek Chrome çalışması gerçekleştirilir.

https://developers.google.com/web/updates/2018/09/inside-browser-part1 (Katmanlar)

Kısa Not:

Bilgisayarlar bir çok işlem paralel şekilde yapılabilmesi için Multi-Core yapılı hale gelmiştir.

CPU’lar kendilerine her türdeki matematiksel işlemleri ve görevleri yerine getirir

GPU(Ekran Kartları) ise işlemcilere göre çok çok fazla core sahiptir. Ama daha kısıtlı bir alanda matematiksel ağırlıklı işlemleri yerine getirirler daha çok Rendering, Physics ve AI Calculation amaçlı kullanılmaktadır.

https://developers.google.com/web/updates/2018/09/inside-browser-part 1 — CPU vs GPU

Chrome bir uygulama olarak işletim sistemi üzerinde çalıştığını belirtmiştik. Chrome makinenizin gücüne ve yeteneklerine göre kendisinin çalışacağı Process ve bu process’ lerin içerisindeki Thread sayısını belirler.

Aşağıdaki örnekte makinemizin çok kuvvetli olduğu iyi bir CPU, GPU ve Belleğe sahip olduğunu düşünelim. Bu durumda neredeyse her process içerisinde bir thread çalıştıracak şekilde kendisini konumlandırır.

https://developers.google.com/web/updates/2018/09/inside-browser-part 1 — Mimari

Eğer ki makinenizin zayıf ise bu durumda Browser Process içerisine Network, Storage, UI , Device Thread ekleyerek çalıştıracak bu durumda aynı process içerisinde bir den fazla farklı thread ile işlerini halletmeye çalışacaktır. Bu duruma Chrome Servicification denir.

Peki Chrome hangi Process lerin çalıştığını nasıl görebiliriz ? Chrome sağ üst köşesinde bulunan 3 noktaya tıklayarak More ToolsTask Manager altından çalışan tüm task ’lara erişebilirsiniz. Her task ayrı Process ID sahiptir.

Task Manager

Chrome Mimarisi

Chrome çalışma mimarisini incelediğimizde Tarayıcının Üst Seviye Mimarisini anlattığım yazımdaki bir mimariye sahip olduğunu görebiliriz.

https://developers.google.com/web/updates/2018/09/inside-browser-part1- Chrome Mimarisi

Browser Process: Adres çubuğu, bookmarks, ileri geri düğmesi, tarayıcının menüleri altındaki ekranları , dosya erişimi ve network isteğinin çalıştırılır.

Renderer Process: Web sayfasının render edildiği tab içerisindeki tüm görüntülenme işlemlerinden sorumludur.

Plugin: Web sayfasına tarafından kullanılan pluginleri yönetir ve çalıştırır (Örneğin Flash vb..)

GPU: Ekran yüzeylerinin grafik kartı tarafından çizilmesi işlemini gerçekleştirir.

Utility : Tracing, Audio , Network vb diğer donanımlara erişim işlemlerini gerçekleştirir.

Multi-Process Mimarinin Avantajı

Örneğin her bir tabın ayrı rendering process olarak çalıştırılması, bu sayfaların birisinde bir sorun olduğunda tüm Chrome çökmesi durumunu ortadan kaldırır. Tabiki dezavantajı sistem kaynaklarını çok fazla şekilde tüketmesi .

https://developers.google.com/web/updates/2018/09/inside-browser-part1- Avantaj

Diğer bir avantajda security & sandboxing çünkü process ler işletim sistemi tarafından ayrı bellek alanlarına erişim sağlamaya zorladıkları için hem Tablarda yapılan Rendering işlemi olsun, hemde V8 Engine içerisinde çalıştırılan JS olsun ayrı sandbox içerisinde çalıştırılmış ve güvenlik sağlanmış olur. Not: Tabiki process limitine ulaştığında aynı process içerisinden thread ile bu işlemi yapmak zorunda kalacaktır.

Uygulama üzerinde gösterilen 2 tane sarı üçgen aslında bir Rendering Process içerisinden yönetilen bir bellek alanında tutulur.

https://developers.google.com/web/updates/2018/09/inside-browser-part1- Process , Memory

Diyelimki 2 process birbiri ile konuşması ve iletişim kurması gerekiyor. Network Request sonrasında gelen HTML,CSS vb.. Rendering Process iletmesi durumunu Inter Process Communication ile gerçekleştirir.

https://developers.google.com/web/updates/2018/09/inside-browser-part1- IPC

Site Isolation

Diğer bir konuda aynı web sayfası içerisinden başka sitelere ait içerikleri iFrame içerisinde rendering sırasında gerçekleşir. Same Origin Policy tarayıcı güvenliği nedeniyle Örneğin a.com sitesindeki bir sayfa içerisinde b.com ve c.com sayfalarından çekilmiş verilerin iFrame rendering gerçekleştirilirken ayrı Rendering Process gerçekleştirilmesi güvenliğin daha üst seviyede sağlar.

Detay için: Meltdown/Spectre inceleyin.

https://developers.google.com/web/updates/2018/09/inside-browser-part1- Site Isolation

Referanslar

Okumaya Devam Et 😃

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

--

--