Modern internet tarayıcısına içeriden bakış [PART:1] Çevrildi/Dil Takımı

DrEngerek

Kıdemli Üye
20 Kas 2015
2,344
1
Teşkilat

CPU, GPU, Bellek ve çok işlemli mimari

Bu 4 bölümlük blog dizisinde, üst düzey mimariden oluşma işleminin özelliklerine ve Chrome tarayıcısının içine bakacağız. Tarayıcının kodunuzu işlevsel bir web sitesine nasıl dönüştürdüğünü merak ettiyseniz veya performans iyileştirmeleri için neden belirli bir tekniğin önerildiğinden emin değilseniz, bu seri tam size göre.

Bu serinin 1. bölümü olarak, temel bilgi işlem terminolojisine ve Chrome'un çok işlemli mimarisine bir göz atacağız.

Not: CPU / GPU ve işlem / iş parçacığı fikrini biliyorsanız Tarayıcı Mimarisine geçebilirsiniz
.


Not: CPU / GPU / iş parçacığı fikrini biliyorsanız Tarayıcı Mimarisine geçebilirsiniz .​

Bilgisayarın merkezinde CPU ve GPU var

Tarayıcının çalıştığı ortamı anlamak için birkaç bilgisayar parçasını ve ne yaptığını anlamamız gerekir.

İşlemci

Öncelikle "Central Processing Unit"(Merkezi İşlem Birimi)veya CPU'dur .
CPU bilgisayarınızın beyni olarak düşünülebilirsiniz. Burada bir ofis çalışanı olarak resmedilen bir CPU çekirdeği,
geldikleri gibi birçok farklı görevi tek tek halledebilir.
Bir müşteri çağrısına nasıl cevap verileceğini bilirken matematikten sanata her şeyi halledebilir.
Geçmişte çoğu CPU tek bir yongaydı. Çekirdek, aynı çipte yaşayan başka bir CPU gibidir. Modern donanımda,
genellikle birden fazla çekirdeğe sahip olursunuz,
bu da telefonlarınıza ve dizüstü bilgisayarlarınıza daha fazla bilgi işlem gücü sağlar.


CPU.png


Şekil 1: Her bir masada oturan ofis çalışanları olarak geldiklerinde 4 CPU çekirdeği

GPU

Graphics Processing Unit - yada diğer adı ile GPU
Grafik işlemcisi bilgisayarın önemli bir parçasıdır. CPU'nun aksine,
GPU basit görevleri yerine getirmede iyidir, ancak aynı anda birden fazla çekirdekte.
Adından da anlaşılacağı gibi, ilk olarak grafikleri işlemek için geliştirildi.
Bu nedenle "GPU kullanma" veya "GPU destekli" grafik bağlamında hızlı oluşturma ve sorunsuz etkileşim ile ilişkilendirilir.
Son yıllarda, GPU hızlandırmalı hesaplama ile, yalnızca GPU'da giderek daha fazla hesaplama mümkün hale geliyor.


GPU.png


Şekil 2: Anahtarlı, sınırlı bir görevi üstlendiklerini gösteren birçok GPU çekirdeği

Bilgisayarınızda veya telefonunuzda bir uygulama başlattığınızda, CPU ve GPU uygulamaya güç veren uygulamalardır. Genellikle, uygulamalar İşletim Sistemi tarafından sağlanan mekanizmaları kullanarak CPU ve GPU üzerinde çalışır.

hw-os-app.png


Şekil 3: Bilgisayar mimarisinin üç katmanı. Altta Makine Donanımı, ortada İşletim Sistemi ve üstte Uygulama.

İşlemci ve İş Parçacığı üzerinde program yürütme

Tarayıcı mimarisine girmeden önce kavramanız gereken bir diğer kavram Süreç ve İş Parçacığı. Süreç, uygulamanın yürütme programı olarak tanımlanabilir.
Bir iş parçacığı, işlemin içinde yaşayan ve işlem programının herhangi bir bölümünü yürüten iş parçacığıdır.
Bir uygulamayı başlattığınızda, bir işlem oluşturulur. Program, işine yardımcı olmak için iş parçacıkları oluşturabilir, ancak bu isteğe bağlıdır.
İşletim Sistemi, işleme çalışmak için bir bellek "levhası" verir ve tüm uygulama durumu bu özel bellek alanında tutulur. Uygulamayı kapattığınızda, işlem de kaybolur ve İşletim Sistemi belleği boşaltır.


process-thread.png


memory.svg


Şekil 5: Bellek alanı kullanan ve uygulama verilerini depolayan bir işlemin şeması

Bir işlem, İşletim Sisteminden farklı görevleri gerçekleştirmek için başka bir işlemi hızlandırmasını isteyebilir.
Bu olduğunda, yeni işlem için belleğin farklı bölümleri ayrılır. İki süreçli bir konuşma gerekiyorsa, IPC kullanarak bunu yapabilirsiniz Inter Process Communication (IPC) . Birçok uygulama bu şekilde çalışacak şekilde tasarlanmıştır,
böylece bir çalışan işlem yanıt vermezse, uygulamanın farklı bölümlerini çalıştıran diğer işlemleri durdurmadan yeniden başlatılabilir.


workerprocess.svg


Şekil 6: IPC üzerinden iletişim kuran ayrı işlemlerin şeması

Tarayıcı Mimarisi

Peki, süreçler ve iş parçacıkları kullanılarak bir web tarayıcısı nasıl oluşturulur? Pek çok farklı iş parçacığı olan bir işlem veya IPC üzerinden iletişim kuran birkaç iş parçacığı olan birçok farklı işlem olabilir.

browser-arch.png


Şekil 7: İşlem / iş parçacığı diyagramındaki farklı tarayıcı mimarileri

Burada dikkat edilmesi gereken önemli nokta, bu farklı mimarilerin uygulama detayları olmasıdır. Bir web tarayıcısının nasıl oluşturulacağına dair standart bir şart yoktur. Bir tarayıcının yaklaşımı diğerinden tamamen farklı olabilir.

Bu blog dizisi uğruna, Chrome'un aşağıdaki şemada açıklanan son mimarisini kullanacağız.



En üstte, uygulamanın farklı bölümleriyle ilgilenen diğer işlemlerle koordinasyon yapan tarayıcı işlemi bulunur. Oluşturucu işlemi için, her sekmeye birden çok işlem oluşturulur ve atanır. Çok yakın zamana kadar Chrome, her sekmeye olabildiğince bir işlem verdi; şimdi iframe'ler de dahil olmak üzere her siteye kendi sürecini vermeye çalışır


browser-arch2.png


Şekil 8: Chrome'un çok işlemli mimarisinin diyagramı. Her sekme için birden çok Oluşturucu İşlemi çalıştıran Chrome'u temsil etmek için Oluşturucu İşlemi altında birden çok katman gösterilir.

Hangi süreç neyi kontrol eder?

Aşağıdaki tabloda her bir Chrome işlemi ve nelerin kontrol ettiği açıklanmaktadır:

Süreç ve neyi kontrol ettiği:


Tarayıcı: Adres çubuğu, yer imleri, geri ve ileri düğmeleri dahil olmak üzere uygulamanın "krom" bölümünü kontrol eder.
Ayrıca, bir web tarayıcısının ağ istekleri ve dosya erişimi gibi görünmez, ayrıcalıklı bölümlerini de işler.

Oluşturucu: Bir web sitesinin görüntülendiği sekmenin içindeki her şeyi kontrol eder.
Eklenti: Web sitesi tarafından kullanılan tüm eklentileri kontrol eder, örneğin, flash.

GPU: GPU görevlerini diğer işlemlerden ayrı olarak işler. GPU'lar birden fazla uygulamadan gelen istekleri ele aldıkları ve aynı yüzeyde çizdikleri için farklı bir sürece ayrılmıştır.






Chrome'da çok işlemli mimarinin avantajı


Daha önce, Chrome'un birden fazla oluşturma işlemi kullandığından bahsetmiştim. En basit durumda, her sekmenin kendi oluşturucu işlemi olduğunu hayal edebilirsiniz. Diyelim ki 3 sekmeniz var ve her sekme bağımsız bir oluşturma işlemi tarafından çalıştırılıyor. Bir sekme yanıt vermiyorsa, yanıt vermeyen sekmeyi kapatabilir ve diğer sekmeleri canlı tutarken devam edebilirsiniz. Tüm sekmeler bir işlemde çalışıyorsa, bir sekme yanıt vermiyorsa, tüm sekmeler yanıt vermez. Bu üzücü.


tabs.svg


Şekil 10: Her sekmeyi çalıştıran birden çok işlemi gösteren diyagram

Tarayıcının çalışmasını birden çok işleme ayırmanın bir diğer yararı da güvenlik ve korumalı alan oluşturmadır. İşletim sistemleri işlemlerin ayrıcalıklarını kısıtlamak için bir yol sunduğundan, tarayıcı belirli işlemleri belirli özelliklerden korumalı hale getirebilir. Örneğin, Chrome tarayıcı, oluşturucu işlemi gibi rastgele kullanıcı girişini işleyen işlemler için rasgele dosya erişimini kısıtlar.

İşlemlerin kendi özel bellek alanları olduğundan, genellikle ortak altyapının kopyalarını içerirler (Chrome'un JavaScript motoru olan V8 gibi). Bu, aynı işlem içinde iş parçacıkları olsaydı paylaşılamayacakları için daha fazla bellek kullanımı anlamına gelir. Bellekten tasarruf etmek için Chrome, kaç işlem yapabileceği konusunda bir sınır koyar. Sınır, cihazınızın ne kadar bellek ve CPU gücüne sahip olduğuna bağlı olarak değişir, ancak Chrome sınıra ulaştığında, tek bir işlemde aynı siteden birden fazla sekme çalıştırmaya başlar


Daha fazla bellek tasarrufu - Chrome'da bakım


Aynı yaklaşım tarayıcı işlemine de uygulanır. Chrome, tarayıcı programının her bir parçasını farklı işlemlere kolayca bölünmesine veya tek bir işlemde toplanmasına izin veren bir hizmet olarak çalıştırmak için mimari değişiklikler geçiriyor.

Genel fikir, Chrome güçlü bir donanımda çalışırken, her hizmeti daha fazla kararlılık sağlayan farklı işlemlere bölebileceğidir, ancak kaynak kısıtlayıcı bir cihazdaysa Chrome, hizmetleri tek bir işlemde bellek kapladığı yerden birleştirir. Bu değişiklikten önce Android gibi platformlarda daha az bellek kullanımı için konsolidasyon süreçlerinin benzer yaklaşımı kullanılmıştır.


servicfication.svg



Kare başına oluşturucu işlemleri - Site Yalıtımı

Site düzenlemesi , Chrome'da yakın zamanda tanıtılan ve siteler arası iframe için ayrı bir oluşturucu işlemi çalıştıran bir özelliktir. Siteler arası iframe'lerin tek bir oluşturucu işleminde farklı siteler arasında bellek alanı paylaşarak çalışmasına izin veren sekme modeli başına bir oluşturucu işleminden bahsediyoruz. A.com ve b.com'u aynı oluşturucu işleminde çalıştırmak iyi görünebilir. Aynı Kökeni Politikası ağın çekirdek güvenlik modelidir; bir sitenin izni olmadan başka sitelerden verilere erişememesini sağlar. Bu politikayı atlamak, güvenlik saldırılarının birincil hedefidir. Süreç yalıtımı siteleri ayırmanın en etkili yoludur. İle Meltdown ve Spectre, siteleri süreçleri kullanarak ayırmamız gerektiği daha da belirgin hale geldi. Chrome 67'den beri varsayılan olarak masaüstünde Site Yalıtımı etkinken, bir sekmedeki her siteler arası iframe ayrı bir oluşturucu işlemi alır.


isolation.png


Şekil 12: Alan izolasyon şeması; bir site içindeki iframe'lere işaret eden birden fazla oluşturucu işlemi

Site İzolasyonunu etkinleştirmek bir mühendislik çalışması sergilemek gerekir . Site Yalıtımı, farklı oluşturucu işlemleri atamak kadar basit değildir; iframe'lerin birbirleriyle konuşma biçimini temelden değiştirir. Farklı süreçlerde çalışan iframe'leri olan bir sayfada devtools açmak, devtools'un sorunsuz görünmesi için sahne arkası işi uygulamak zorunda olduğu anlamına gelir. Bir sayfada bir kelime bulmak için basit bir Ctrl + F çalıştırmak bile farklı oluşturucu işlemlerinde arama yapmak anlamına gelir. Tarayıcı mühendislerinin neden Site İzolasyonunun piyasaya sürülmesinden büyük bir kilometre taşı olarak bahsettiklerini görebilirsiniz!

Wrap-up

Bu yazıda, tarayıcı mimarisinin üst düzey bir görünümünü ele aldık ve çok işlemli bir mimarinin faydalarını ele aldık. Ayrıca, çok işlemli mimariyle derinden ilişkili olan Chrome'da Hizmet ve Site Yalıtımı'nı da ele aldık. Bir sonraki gönderide, bir web sitesini görüntülemek için bu süreçler ve iş parçacıkları arasında neler olduğuna dalmaya başlayacağız.


q5yU9e.png

Konu İngilizce Linki : Buraya Tıklayın (Forum içi )
Konu İngilizce Linki: Buraya Tıklayın ( Kendi sitesi )
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.