Modern web tarayıcısına yakından bakış (1. bölüm)

Mariko Kosaka

CPU, GPU, Bellek ve çoklu işlem mimarisi

Bu 4 bölümlük blog dizisinde, üst düzey mimariden oluşturma ardışık düzeninin ayrıntılarına kadar Chrome Tarayıcı'nın içine göz atacağız. Tarayıcının, kodunuzu nasıl çalışan bir web sitesine dönüştürdüğünü merak ettiyseniz veya performans iyileştirmeleri için neden özel bir tekniğin önerildiğinden emin değilseniz bu seri tam size göre.

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

Bilgisayarın merkezinde CPU ve GPU bulunur

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

CPU

CPU
Şekil 1: Her masada oturan ve görevleri yerine getiren ofis çalışanları olarak 4 CPU çekirdeği

İlki C Ceklif Cnit (veya C) şeklindedir. CPU, bilgisayarınızın beyni görünür. Burada ofis çalışanı gibi gösterilen bir CPU çekirdeği, gelene kadar pek çok farklı görevi teker teker ele alabilir. Matematikten sanata kadar her şeyi halledebilir ve müşteri aramalarına nasıl yanıt verileceğini bilir. Geçmişte çoğu CPU, tek çipti. Çekirdek, aynı çipte yaşayan başka bir CPU gibidir. Modern donanımlarda genellikle birden fazla çekirdek bulunur. Bu da telefon ve dizüstü bilgisayarlarınıza daha fazla bilgi işlem gücü sağlar.

GPU

GPU
Şekil 2: İngiliz anahtarı bulunan birçok GPU çekirdeği, sınırlı bir görevi yerine getirmelerini önermektedir

Grafiği Girme Unt'u (veya GPU) bilgisayarın başka bir bölümüdür. GPU, CPU'nun aksine basit görevleri yerine getirme konusunda iyidir ancak aynı anda birden fazla çekirdekte işlem yapar. Adından da anlaşılacağı gibi, ilk olarak grafikleri işleyecek şekilde geliştirildi. "GPU kullanan" veya "GPU destekli" grafikler söz konusu olduğunda, bu nedenle hızlı oluşturma ve sorunsuz etkileşim söz konusudur. Son yıllarda GPU ile hızlandırılmış bilgi işlem sayesinde yalnızca GPU'da giderek daha fazla işlem mümkün hale geliyor.

Bilgisayarınızda veya telefonunuzda bir uygulama başlattığınızda, uygulamayı çalıştıran güç CPU ve GPU'dur. Uygulamalar genellikle İşletim Sistemi tarafından sağlanan mekanizmaları kullanarak CPU ve GPU'da çalışır.

Donanım, İşletim Sistemi, Uygulama
Şekil 3: Üç bilgisayar mimarisi katmanı. Altta Makine Donanımı, ortada İşletim Sistemi, üstte ise Uygulama.

Process and Thread'de program yürütme

işlem ve iş parçacıkları
Şekil 4: Sınırlayıcı kutu olarak işlem, bir süreçte yüzen soyut balık gibi ipler

Tarayıcı mimarisinin ayrıntılarına dalmadan önce öğrenmeniz gereken bir diğer kavram da Process and Thread'dir. Süreç, bir uygulamanın yürütme programı olarak tanımlanabilir. İş parçacığı, sürecin içinde yaşayan ve süreç programının herhangi bir bölümünü yürüten öğedir.

Başvurunuzu başlattığınızda bir süreç oluşturulur. Program, çalışmasını sağlamak için ileti dizileri oluşturabilir ancak bu isteğe bağlıdır. İşletim Sistemi, işleme üzerinde çalışabileceği bir bellek "levası" sağlar ve tüm uygulama durumu bu özel bellek alanında tutulur. Uygulamayı kapattığınızda işlem de kaybolur ve İşletim Sistemi bellekte yer açar.

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

Bir işlem, farklı görevleri çalıştırmak için işletim sisteminden başka bir işlem başlatmasını isteyebilir. Böyle bir durumda, yeni işlem için belleğin farklı bölümleri ayrılır. İki işlemin iletişim kurması gerekiyorsa bunu İçtikle Ortaklaştırma (IPC) kullanarak yapabilirler. Birçok uygulama, çalışan bir işlemin yanıt vermemesi durumunda uygulamanın farklı parçalarını çalıştıran diğer işlemler durdurulmadan yeniden başlatılabilmesi için bu şekilde çalışacak şekilde tasarlanmıştır.

çalışan süreci ve IPC
Şekil 6: IPC üzerinden iletişim kuran ayrı süreçlerin şeması

Tarayıcı mimarisi

Peki bir web tarayıcısı işlemler ve iş parçacıkları kullanarak nasıl oluşturulur? Birçok farklı iş parçacığı içeren tek bir işlem veya IPC üzerinden iletişim kuran birkaç iş parçacığı içeren birçok farklı işlem olabilir.

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

Burada unutulmaması gereken önemli nokta, bu farklı mimarilerin uygulama ayrıntıları olduğudur. Bir web tarayıcısının nasıl oluşturulacağına ilişkin standart bir spesifikasyon yoktur. Bir tarayıcının yaklaşımı diğerinden tamamen farklı olabilir.

Bu blog dizisinde Chrome'un Şekil 8'de açıklanan güncel mimarisini kullanıyoruz.

En üstte, uygulamanın farklı parçalarını ele alan diğer işlemlerle koordine edilen tarayıcı işlemi yer alır. Oluşturucu işlemi için birden fazla işlem oluşturulur ve her sekmeye atanır. Çok kısa süre öncesine kadar Chrome, mümkün olan her sekmeye bir işlem uyguluyordu. Şimdi ise iframe'ler dahil olmak üzere her siteye kendi işlemini vermeye çalışıyor (bkz. Site İzolasyonu).

tarayıcı mimarisi
Şekil 8: Chrome'un çok işlemli mimarisini gösteren şema. Chrome'un her sekme için birden fazla Oluşturucu İşlemi çalıştırdığını göstermek üzere 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 neleri kontrol ettiği açıklanmaktadır:

Süreç ve neleri kontrol ettiği
Tarayıcı Uygulamanın adres çubuğu, yer işaretleri, geri ve ileri düğmeleri gibi "chrome" bölümünü kontrol eder.
Ayrıca, 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 sitesinin kullandığı tüm eklentileri (ör. flash) kontrol eder.
GPU GPU görevlerini diğer işlemlerden ayrı olarak ele alır. GPU'lar birden fazla uygulamadan gelen istekleri ele alıp aynı yüzeyde çizdikleri için bu veriler farklı süreçlere ayrılır.
Chrome işlemleri
Şekil 9: Tarayıcı kullanıcı arayüzünün farklı bölümlerine işaret eden farklı işlemler

Uzantı işlemi ve yardımcı program işlemleri gibi başka işlemler de vardır. Chrome'unuzda kaç tane işlemin çalıştığını görmek istiyorsanız sağ üst köşedeki seçenekler menüsü simgesini tıklayın, Diğer Araçlar'ı ve ardından Görev Yöneticisi'ni seçin. Çalışmakta olan işlemlerin listesini ve bunların ne kadar CPU/Bellek kullandıklarını içeren bir pencere açılır.

Chrome'da çok işlemli mimarinin faydaları

Daha önce Chrome'un birden fazla oluşturucu işlemi kullandığından bahsetmiştim. En basit şekilde, her sekmenin kendi oluşturucu işlemi olduğunu düşünebilirsiniz. 3 sekmenizin açık olduğunu ve her sekmenin bağımsız bir oluşturucu işlemi tarafından çalıştırıldığını varsayalım.

Bir sekme yanıt vermiyorsa, yanıt vermeyen sekmeyi kapatıp diğer sekmeleri etkin halde tutarak işleme devam edebilirsiniz. Tüm sekmeler tek bir işlemde çalışıyorsa bir sekme yanıt vermediğinde tüm sekmeler yanıt vermez. Üzgünüz.

sekmeler için birden çok oluşturucu
Şekil 10: Her sekmede birden fazla işlemi gösteren şema

Tarayıcının çalışmasını birden çok işleme ayırmanın bir başka yararı da güvenlik ve korumalı alan kullanımıdır. İşletim sistemleri işlemlerin ayrıcalıklarını kısıtlamak için bir yol sağladığından, tarayıcı belirli işlemleri belirli özelliklerden korumalı alana alabilir. Örneğin Chrome tarayıcı, oluşturucu işlemi gibi rastgele kullanıcı girişlerini işleyen işlemler için rastgele dosya erişimini kısıtlar.

İşlemlerin kendi özel bellek alanları olduğundan, genellikle ortak altyapının (Chrome'un JavaScript motoru olan V8 gibi) kopyalarını içerir. Bu da aynı işlem içinde iş parçacıkları olması durumunda olduğu şekilde paylaşılamayacakları için daha fazla bellek kullanımı anlamına gelir. Chrome, bellekten tasarruf etmek için hızlandırabileceği işlem sayısına bir sınır koyar. Sınır, cihazınızın belleği ve CPU gücüne bağlı olarak değişir. Ancak Chrome sınıra ulaştığında aynı siteden birden fazla sekmeyi tek işlemde çalıştırmaya başlar.

Daha fazla bellek tasarrufu - Chrome'da hizmet

Tarayıcı işlemi için de aynı yaklaşım uygulanır. Chrome, tarayıcı programının her bölümünü farklı işlemlere bölünüp tek bir işleme birleştirilmesini sağlayan bir hizmet olarak çalıştırmak için mimari değişikliklerinden geçiyor.

Genel olarak, Chrome güçlü donanımlarla çalışırken her hizmeti farklı işlemlere bölerek daha fazla kararlılık sağlar. Ancak Chrome kaynak kısıtlaması olan bir cihazdaysa, bellek ayak izi tasarrufu sağlayan hizmetleri tek bir işlemde birleştirir. Daha az bellek kullanımı için işlemleri birleştirme yaklaşımına benzer bir yaklaşım, bu değişiklikten önce Android gibi platformlarda kullanılıyordu.

Chrome hizmeti
Şekil 11: Chrome'un farklı hizmetleri birden çok işleme ve tek bir tarayıcı işlemine taşıma şeması

Kare başına oluşturucu işlemleri - Site İzolasyonu

Site İzolasyonu, Chrome'da kısa süre önce kullanıma sunulan ve her siteler arası iframe için ayrı bir oluşturucu işlemi çalıştıran bir özelliktir. Her sekme modeli için, siteler arası iframe'lerin farklı siteler arasında bellek alanı paylaşarak tek bir oluşturucu işleminde çalışmasına olanak tanıyan bir oluşturucu sürecinden bahsetmiştik. a.com ve b.com'u aynı oluşturucu işleminde çalıştırmak sorun teşkil etmeyebilir. Aynı Kaynak Politikası, web'in temel güvenlik modelidir ve bir sitenin izin almadan diğer sitelerdeki verilere erişememesini sağlar. Bu politikanın atlanması, güvenlik saldırılarının birincil hedeflerinden biridir. İşlem izolasyonu, siteleri ayırmanın en etkili yoludur. Meltdown ve Spectre ile, süreçleri süreçler kullanarak siteleri ayırmamız gerektiği daha da belirginleşti. Site İzolasyonu, Chrome 67'den itibaren masaüstünde varsayılan olarak etkinleştirildiğinde, bir sekmedeki her siteler arası iframe'ler ayrı bir oluşturucu işlemi alır.

site izolasyonu
Şekil 12: Site izolasyonu şeması; bir site içindeki iframe'leri işaret eden birden fazla oluşturucu işlemi

Site İzolasyonu'nu etkinleştirmek, yıllardır süren bir mühendislik çalışmasıdır. Site İzolasyonu, farklı oluşturucu işlemleri atamak kadar basit değildir; iframe'lerin birbirleriyle iletişim şeklini temelden değiştirir. Geliştirici Araçları'nın farklı işlemlerde çalışan iframe'lerin bulunduğu bir sayfada açılması, geliştirici araçlarının sorunsuz görünmesi için arka planda çalışma yapması gerektiği anlamına gelir. Bir sayfada bir kelimeyi bulmak için basit bir Ctrl+F tuş kombinasyonunu çalıştırmak bile farklı oluşturucu işlemlerinde arama yapılması anlamına gelir. Tarayıcı mühendislerinin, Site İzolasyonu'nun kullanıma sunulmasından çok önemli bir kilometre taşı olarak bahsetmelerinin nedenini görebilirsiniz.

Özet

Bu yayında, tarayıcı mimarisinin kuş bakışı bir görünümünü ele aldık ve çok işlemli mimarinin faydalarını işledik. Ayrıca, Chrome'da çok işlemli mimariyle yakından ilişkili olan Hizmet ve Site İzolasyonu konularını da ele aldık. Bir sonraki gönderide, web sitesini görüntülemek için bu süreçler ve ileti dizileri arasında neler olduğuna ayrıntılı olarak değineceğiz.

Gönderiyi beğendiniz mi? Gelecekteki gönderimizle ilgili sorularınız veya önerileriniz varsa Twitter'daki @kosamari adresinden sizinle iletişime geçmekten memnuniyet duyarım.

Sonraki konu: Navigasyonda ne olur?