Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Зачем процессы разделяют себя на другие процессы и подпроцессы?

Kredwi Мудрец (11808), открыт 2 дня назад

Chromium постоянно так делает, да и не только он....
Для чего? Зачем?

И чем это отличается от перекладывание задач на другие потоки?
Дополнен 2 дня назад
Спасибо за "Вопрос-лидер".
11 ответов
Макс Поминов Знаток (437) 2 дня назад
это как в государстве - один государь не сможет справиться с судом, издачей законов, армией и тд. он для этого нанимает министров и помощников
KredwiМудрец (11808) 2 дня назад
Во, во!
Тут так же, ты убил один процесс, на этот процесс пришла замена, и так пока не убьешь главный процесс!
Макс Поминов Знаток (437) Kredwi, мудрец
Федор Новиков Искусственный Интеллект (361875) 2 дня назад
чтобы проще было обрабатывать разные события: на каждую открытую страницу по процессу, еще один - чтобы за всеми присматривать и т.д.
KredwiМудрец (11808) 2 дня назад
А чем это отличается от перекладывание страниц на потоки?
Зачем создавать тонны процессов?
Федор Новиков Искусственный Интеллект (361875) Kredwi, не во всех операционных системах поток создать проще, чем копию процесса. А браузер - кроссплатформенный, вот и пишут, как проще. Вопрос только в лени программиста
Иван Гончарик Мастер (2407) 2 дня назад
Программа состоит из множества микросервисов которые отвечают за разные функции с целью оптимизации процесса.
KredwiМудрец (11808) 2 дня назад
А чем это отличается от перекладывание функций на потоки?
Зачем создавать тонны процессов?
Александр Кислов Знаток (312) 2 дня назад
Чтобы делегировать задачи между ними и лучше работать, как в реальной жизни
KredwiМудрец (11808) 2 дня назад
А почему бы не использовать потоки?
Александр Кислов Знаток (312) Kredwi, У каждого процесса разные задачи, и они как раз используют потоки, как и остальные
dev11.sys Просветленный (25361) 2 дня назад
Для стабильной работы в том числе, многозадачность.
Когда скрипт на одной вкладке не отвечает - зависает, то "вкладка-процесс" может быть заверешена, а на остальных вкладках эта проблема практически не отразится. Распараллеливание такое.

Почитай про IPC - межпроцессное взаимодействие.
KredwiМудрец (11808) 2 дня назад
А потоки? Почему бы их не использовать?
dev11.sys Просветленный (25361) Kredwi, Наверное дело в том что процесс и поток, совершенно разные вещи. Процесс - некая программа или подпрограмма (с подключенными модулями, библиотеками), работающая в текущее время. Процессы работают изолированно друг от друга, тем самым расходуется больше памяти, но зато стабильнее. А потоки, в едином процессе. https://ru.m.wikipedia.org/wiki/Поток_выполнения
KredwiМудрец (11808) 2 дня назад
Хорошо, почитаю.
mаrssiсk Искусственный Интеллект (147655) 2 дня назад
А как ты думаешь процессы параллелятся на несколько потоков цп ?
KredwiМудрец (11808) 2 дня назад
Абсолютно не знаю, наверное да
mаrssiсk Искусственный Интеллект (147655) Kredwi, ну вот теперь знай - так наглядно реализовывается мощь мнагапаааатооока. так и не научились один процесс выполнять на нескольких ядрах, но научились дробить один процесс на несколько поменьше
В.А, Мастер (1637) 2 дня назад
Процесс разделяет себя на другие процессы и подпроцессы по нескольким ключевым причинам, связанным с производительностью, стабильностью и безопасностью. Рассмотрим эти моменты подробнее:

1. Изоляция и безопасность
Каждый процесс в операционной системе работает в своём собственном изолированном пространстве памяти. Это предотвращает утечку данных и сбои. Например, в браузере Chromium разделяет каждый вкладку или веб-приложение на отдельный процесс. Это означает, что если один веб-сайт вызывает сбой или содержит вредоносный код, он не повлияет на остальные вкладки или сам браузер. Каждое приложение или часть системы изолируется в своём процессе, и операционная система обеспечивает, чтобы они не вмешивались в память других процессов.

2. Производительность
В современных многозадачных операционных системах лучше использовать несколько процессов, чем один процесс, потому что это позволяет эффективнее распределять нагрузку по многим ядрам процессора. Процессы могут работать параллельно на разных ядрах, что значительно повышает общую производительность системы.

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

3. Управление памятью и стабильность
Если один процесс выходит из строя, операционная система может изолировать его и не допустить разрушения всей системы. При этом другие процессы продолжат работать нормально. Это особенно важно для приложений, которые требуют высокой доступности, таких как браузеры, серверы и базы данных.

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

Чем отличается от многозадачности в рамках одного процесса (потоки)?
Многозадачность с использованием потоков работает немного иначе:

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

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

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

Пример: Chromium
Chromium использует процессы для обеспечения изоляции безопасности (каждая вкладка — отдельный процесс), а также для улучшения производительности. Если одна вкладка или процесс зависает, это не влияет на другие вкладки. Потоки в рамках одного процесса Chromium могут использоваться для параллельной обработки данных, но критические части системы (например, рендеринг или обработка пользовательского ввода) изолируются в отдельные процессы.
Семён Куликов Мыслитель (6051) 11 часов назад
Чтобы независло основное приложение. Как бы нагрузка распределяется на процессы, балансировка приложения. В вебраузерах допустим нужно для ассинхронной работы (ajax, async и await), или декодирования музыки и видео (mp3, ogg, ogv, mp4, webm). Если бы веб браузер не делился на процессы, вы бы не могли переключаться между вкладками, и веб браузер был страшно тормозил.
Похожие вопросы