The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"В Firefox появилась многопроцессная обработка контента и Qua..."
Отправлено Аноним, 12-Ноя-16 23:55 
SIGSEGV - это показатель того, что где-то в программе что-то сильно пошло не так. Во-первых, не всегда понятно где именно это случилось, во-вторых не на любую проблему возникнет SIGSEGV. Например, поток 2 может проехаться по стеку потока 1 (механизма защиты от такого нет), а потом поток 1 упадет, или сделает что-то плохое (отправит номер кредитки на сервер злоумышленника)... SIGSEGV в момент модификации потоком 2 стека потока 1 будет молчать. Вот от такой проблемы отдельные процессы защищают хорошо.

По личному опыту я бы сказал, что отдельные процессы повышают живучесть программы до 95-99% (тут многое будет зависеть от интенсивности IPC и его возможностей). SIGSEGV в лучшем случае даст живучесть 70% при рандомных ошибоках в программе (в случае Windows SEH, или Access violation в дельфи/билдере). При целенаправленной атаке процент живучести и защиты от потенциальных уязвимостей падать до нуля. На линуксе этот процент живучести вообще 0 - программа либо завершается, либо пытается перезапуститься (это в целом правильно, ошибка обнаружена, может произойти все что угодно, лучше вообще прибить все нафиг; но в дельфи можно хотя бы попытаться сохраниться...).

Конкретно в случае с браузерами неприятно, когда при 100+ вкладках из-за ошибки в браузере при падении одной вкладки приходится перезапускать весь браузер... Поэтому в отдельных процессах есть свой шарм. Какой из вариантов лучше (processes vs threads) я не могу сказать, и у одних есть плюсы и у других. Каких-то сильных оверхедов от процессов, ИМХО, не будет, если сделать аккуратно. Ну как бы разы могут быть, но не порядки... при хорошей оптимизации так вообще 10-20% разницы будет. И еще вопрос кто победит, MySQL может вообще на отдельной машине работать и при этом часто оказывается быстрее SQLite, которая в том же адресном пространстве.

P.S. Еще не стоит исключать, что самым банальным объяснением "каждая вкладка в отдельном процессе" может быть ограничение гугловского javascript (v6, v8 или как он там). И просто пришлось сделать каждую вкладку в отдельном процессе (по сути одну страницу в браузере). А живучесть браузера при падении вкладки - это вообще случайный side-эффект.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру