UfoStation

Мультипроцессная архитектура

В большинстве буду рассматривать Google Chrome браузер, поскольку погружался ранее в документацию Chromium Project. Однако уверен, что некоторые параллели можно обнаружить и в документации архитектуры Firefox браузера.

15 лет назад браузеры того времени были чем-то похожи на однопользовательские, мультизадачные операционные системы из еще более дальнего прошлого. При такой архитектуре некорректно работающие приложения могли запросто вывести всю операционную систему из строя, так же как и “некорректные” веб-страницы могли привести к плачевным результатам всей работы браузера. Одна ошибка во время рендеринга страницы или в работе стороннего плагина и весь браузер выводился из строя со всеми открытыми вкладами.

Современные браузеры копируют подход современных операционных систем. Операционные системы помещают приложения в отдельные процессы, которые изолированы друг от друга. Сбой в одном приложении обычно не влияет на другие приложения или целостность операционной системы, и доступ каждого пользователя к данным других пользователей ограничен.

Архитектура современных браузеров — мультипроцессная (multi-process architecture).

В продолжении мультипроцессной архитектуры добавлю, что внутри Google Chromium есть множество процессов: Browser process, Rendering processes, GPU processes, Extension processes, Plugin processes, Utility processes и другие.

Browser process необходим для управления всеми другими процессами, в том числе он берет на себя и управления задачами, например, сетевыми запросами или работой с файловой системой.

Состредоточимся на Rendering process - процесс изолирован, общение с browser process происходит через Inter-process Communication (IPC). Выполняется процесс в песочнице (sandbox). Реализации песочницы внутри браузера зависит напрямую от операционной системы на которой будет запускаться Chromium.

Песочница в Chromium - это используемая C++ библиотека внутри, которая позволяет создавать изолированные процессы, выполняемые в ограниченной среде. Единственные ресурсы, которые процессы могут свободно использовать - циклы ЦП и память. Например, процессы песочницы не могут записывать что либо на диск. А то, что они могут делать, контролируется явной политикой.

От чего защищает песочница? Она ограничивает возможные последствия ошибок в коде, выполняемого внутри песочницы, такие ошибки не смогут установить постоянное вредоносное ПО или прочитать произвольные файлы. Однако песочница не сможет обеспечить защиту от ошибок в системных компонентах, таких как ядро операционной системы, на котором она работает.

Ссылки по теме

Нашли ошибку или опечатку? Предложите исправление

← Вернуться в блог