Подтвердить что ты не робот

Как Google Chrome может изолировать вкладки в отдельные процессы, когда они выглядят как одно приложение?

Нам сообщили, что Google Chrome запускает каждую вкладку в отдельном процессе. Поэтому сбой на одной вкладке не вызовет проблем на других вкладках.

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

Как это делает Chrome?

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

4b9b3361

Ответ 1

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

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

Браузер:. Существует только один процесс браузера, который управляет вкладками, окнами и "хромом" браузера. Этот процесс также обрабатывает все взаимодействия с диском, сетью, пользовательским вводом и отображением, но не пытается анализировать или отображать любой контент из Интернета.

Renderers: В процессе браузера создается много процессов рендеринга, каждый из которых отвечает за рендеринг веб-страниц. Процессы рендеринга содержат всю сложную логику обработки HTML, JavaScript, CSS, изображений и т.д. Chrome достигает этого, используя механизм рендеринга WebKit с открытым исходным кодом, который также используется веб-браузером Apple Safari. Каждый процесс визуализации запускается в песочнице, что означает, что он практически не имеет прямого доступа к диску, сети или дисплею. Все взаимодействия с веб-приложениями, в том числе событиями ввода пользователя и картиной экрана, должны проходить через браузер. Это позволяет браузеру отслеживать процессы визуализации для подозрительной активности, убивая их, если он подозревает, что произошел эксплойт.

Плагины: В процессе браузера также создается один процесс для каждого типа подключаемого модуля, такого как Flash, Quicktime или Adobe Reader. Эти процессы просто содержат сами подключаемые модули, а также некоторый код клея, позволяющий им взаимодействовать с браузером и рендерингами.

Источник: Блог Chromium: многопроцессорная архитектура

Ответ 3

В большинстве работ по рендерингу веб-страницы выясняется, куда именно идут вещи (например, где разместить каждую картинку, какой цвет отображать каждую часть текста). Эта работа выполняется в отдельном процессе. Как только отдельный процесс выяснил, куда все идет, он передает эту информацию в основной процесс Chrome, который рисует все элементы на экране.

Непонятно, как настроена ваша система sdk для видео. Но у вас может быть один процесс, который распаковывает видео и другой процесс, который отображает его на дисплее. Скорее всего, вы используете opengl или DirectX. Эти API-интерфейсы накладывают определенные ограничения на то, как вы разделяете вещи между различными процессами.

Ответ 4

Я только что дал первый ответ (тот, который объясняет "плагины" vs 'renderers' vs 'browser' всплеск... который кажется самым полным и имеет смысл для меня.

Единственное, что я добавлю, это всего лишь несколько комментариев о ПОЧЕМУ Google design так оно и есть, и дать мнение о том, почему это всегда было моим первым выбором для общего/ежедневного браузера. (Я понимаю, что КАК (а не ПОЧЕМУ) вопрос задан.)

Конструирование так, чтобы отдельные компоненты имели свой код в отдельных процессах, OS to'memory-protect 'процессов от случайного (или специально) изменения каждого другими способами, явно не разработанными.

Единственными частями в такой конструкции, которые могут считывать и записывать общие данные, являются те которые предназначены для НУЖНОГО доступа к этим данным и позволяют контролировать, что доступ - это просто "чтение" доступа или "чтение" и "запись" доступа и т.д. И, поскольку эти средства контроля доступа реализованы на оборудовании, они являются надежными гарантиями что правила доступа не могут быть нарушены. Таким образом, плагины и расширения от других авторов и компаний, работающих в отдельных вкладках/процессах, не может сломать друг друга.

Такая конструкция приводит к тому, что она минимизирует шансы на изменение некоторый код или данные, которые не были предназначены для изменения. Это для безопасности причины и делает более надежным и менее ошибочный код.

Сам факт, что у Google такой замысловатый дизайн, для меня, хорошее свидетельство факт, что Google, похоже, прекрасно понимает эти концепции и имеет построил превосходный продукт. (Тем не менее, как веб-разработчик, мы все еще должны тестировать наш веб-код с несколькими браузерами. И, например, браузеры, такие как Firefox, были в течение долгого времени и имели отличную группу веб-разработчиков, связанных "Дополнения" все еще имеют некоторые преимущества для некоторых задач.)

Но для повседневного использования в браузере для почти всех задач браузер Chrome стал моим первым выбором. (Просто мое мнение, и, конечно же, YMMV.)

Ответ 5

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