Мультипроцессная архитектура
В большинстве буду рассматривать 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++ библиотека внутри, которая позволяет создавать изолированные процессы, выполняемые в ограниченной среде. Единственные ресурсы, которые процессы могут свободно использовать - циклы ЦП и память. Например, процессы песочницы не могут записывать что либо на диск. А то, что они могут делать, контролируется явной политикой.
От чего защищает песочница? Она ограничивает возможные последствия ошибок в коде, выполняемого внутри песочницы, такие ошибки не смогут установить постоянное вредоносное ПО или прочитать произвольные файлы. Однако песочница не сможет обеспечить защиту от ошибок в системных компонентах, таких как ядро операционной системы, на котором она работает.
Ссылки по теме
Нашли ошибку или опечатку? Предложите исправление