Абстрактное представление об архитектуре веб-браузеров

Что такое процессы?

Просто процесс - это исполняемая программа. Каждый процесс предоставляет ресурсы, необходимые для выполнения программы. Любой процесс управляется блоком управления процессом. Этот блок содержит такую ​​информацию, как приоритет процесса, идентификатор процесса, состояние процесса, ЦП, регистр и т. Д. Подпроцесс процесса называется дочерним процессом.

Что такое потоки?

Поток - это объект внутри процесса, который можно запланировать для выполнения. Это означает, что процесс может иметь несколько потоков. У потока есть 3 состояния: запущено, готово и заблокировано. Все потоки процесса совместно используют его виртуальное адресное пространство и системные ресурсы. Поток является легковесным и может управляться независимо планировщиками. Это помогает повысить производительность за счет использования параллелизма.

Уловите эту простую идею в уме

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

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

Так как же их используют веб-браузеры?

В те дни веб-страницы были очень простыми, и в них было очень мало или совсем не было активного кода. Таким образом, для веб-браузеров было легко отображать все страницы, которые вы посещали, за один процесс. Тем не менее, сегодня веб-разработка сделала большой поворот, и в них много активного контента, такого как JavaScript, Flash и т. Д. Большинство частей этих приложений запускаются в браузере, как обычные приложения, работающие в ОС.

С другой стороны, коды HTML, CSS и JavaScript для веб-страниц стали сложными. Таким образом, невозможно удержать их в одном процессе. Что касается надежности, скорости отклика и безопасности, веб-браузеры помещают веб-приложения и плагины в отдельные процессы. Это означает, что сбой механизма рендеринга в одном веб-приложении не повлияет на другие веб-приложения.

Давайте посмотрим, как они используются в Google Chrome

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

Google Chrome создает три разных типа процессов: браузер, средства визуализации и плагины.

  • Браузер: управляет вкладками и окнами. Этот процесс также обрабатывает все взаимодействия с диском, пользовательским вводом и отображением. Это не повлияет на веб-контент.
  • Средства визуализации. Браузерный процесс создает различные средства визуализации, отвечающие за отображение различных веб-страниц. Он обрабатывает все HTML, JavaScript, CSS, изображения и т. Д.
  • Подключаемые модули. Процесс браузера также создает по одному процессу для каждого типа подключаемого модуля, который используется, например Flash, Quicktime или Adobe Reader.

В каждом процессе Chrome есть

  • основной поток: обновляет пользовательский интерфейс в процессе браузера.
  • поток ввода-вывода : обрабатывает IPC и сетевые запросы в процессе браузера.
  • еще несколько специализированных потоков
  • и резьбы общего назначения

Давайте посмотрим, как их использует Mozilla Firefox

В настоящее время Firefox запускает пользовательский интерфейс браузера и веб-контент в отдельных процессах. Все вкладки браузера выполняются в рамках одного процесса, а пользовательский интерфейс браузера работает в отдельном процессе.

Процесс, который запускается при запуске Firefox, называется родительским процессом . Первоначально этот процесс работает аналогично однопроцессному Firefox: он открывает окно, отображающее browser.xul, которое содержит все основные элементы пользовательского интерфейса для Firefox. Первое, где многопроцессный Firefox отличается от однопроцессного Firefox, - это то, что каждый элемент <browser> имеет атрибут remote="true". Когда такой элемент браузера добавляется в документ, запускается новый процесс содержимого. Этот процесс называется дочерним процессом. Создается канал IPC, который связывает родительский и дочерний процессы. Первоначально дочерний элемент отображает about:blank, но родитель может отправить дочернему элементу команду для перехода в другое место.

Спасибо.