Форум: "Прочее";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];
ВнизПриложение разделенное на процессы Найти похожие ветки
← →
Unknown user © (2009-01-08 18:55) [0]Предлагаю обсудить здесь методику создания программ, запускающих свои задачи в отдельных процессах. Так как это делает новый браузер Google Chrome. В нем каждая вкладка является отдельным процессом. Очень мне эта идея понравилась, но не ясны некоторые детали. В частности можно ли создать отдельный процесс аналогично потоку не запуская внешний исполняемый файл?
← →
Anatoly Podgoretsky © (2009-01-08 19:14) [1]> Unknown user (08.01.2009 18:55:00) [0]
Ты уверен, что отдельным процессом и при этом делать вывод в другом адресном пространстве?
← →
Unknown user © (2009-01-08 19:26) [2]>Ты уверен, что отдельным процессом и при этом делать вывод в другом адресном пространстве?
Да уверен, именно отдельным процессом. Об этом написано в документации http://dev.chromium.org/developers/design-documents и это подтверждает диспетчер задач Windows. Для общения между процессами используются named pipes, так же в исходниках натыкался на модули вроде sharedmem, предполагаю, они создают области памяти разделяемые между процессами.
← →
tesseract © (2009-01-08 19:30) [3]
> они создают области памяти разделяемые между процессами.
Америку ты тут не открыл, хоть shared хоть через глобальную можно сделать. Только смысл в этом есть не всегда.
← →
Petr V. Abramov © (2009-01-08 19:32) [4]а в чем глубокий смысл? чем многопоточное хуже?
← →
Unknown user © (2009-01-08 19:38) [5]>Америку ты тут не открыл, хоть shared хоть через глобальную можно сделать
Да это и не я вовсе, это Гугл.
>а в чем глубокий смысл? чем многопоточное хуже?
Они аргументируют это тем, что отдельные процессы работают надежнее вследствии незасисимости от управляющего процесса. Управление процессом полностью возложено на ОС. Зависание вкладки-процесса не ведет к полному зависанию программы.
← →
Zeqfreed © (2009-01-08 19:41) [6]И процессы, ответственные за рендер, выполняются с урезанными привилегиями.
← →
Unknown user © (2009-01-08 19:43) [7]>И процессы, ответственные за рендер, выполняются с урезанными привилегиями.
ага в так называемой "песочнице" sandbox, чтобы повысить безопасность браузера.
← →
Unknown user © (2009-01-08 19:44) [8]Так вот скажите, пожалуйста, как они запускают отдельные процессы для каждой вкладки? Код этого процесса обязательно должен быть физически вынесен в отдельный модуль, exe или dll?
← →
Eraser © (2009-01-08 19:45) [9]кстати не совсем понял, чем продиктовано такое решение со стороны гугла... у меня обычно открыто не менее 10 вкладок.. обычно штук 20, если для каждой создать процесс - это огромный перерасход памяти и ресурсов получается.
← →
Zeqfreed © (2009-01-08 19:47) [10]> Unknown user © (08.01.09 19:44) [8]
Исходники же есть :)
Еще можно погуглить по запросу "PE Loader".
← →
Unknown user © (2009-01-08 19:50) [11]>кстати не совсем понял, чем продиктовано такое решение со стороны гугла... у меня обычно открыто не менее 10 вкладок.. обычно штук 20, если для каждой создать процесс - это огромный перерасход памяти и ресурсов получается.
Действительно расход памяти гораздо больше чем в том же FireFox, примерно 10 мб на пустую вкладку, против <1 мб в FireFox
← →
Unknown user © (2009-01-08 19:54) [12]>Исходники же есть :)
Да рыться надо :) думал знающие люди подскажут. Но вообще задумка интересная. Однажды в Microsoft SDK наткнулся на такие строки (вольный перевод). Приложения с каждым годом стают все сложнее и универсальнее, чтобы удовлетворить возрастающие требования пользователей. Разобраться в таких приложениях становится все труднее, поэтому тенденция программирования будущего это разделение задач на узкоспециализированные приложения, взаимодействующие между собой. (и это пишут авторы таких монстров как MS Office)
← →
Zeqfreed © (2009-01-08 20:01) [13]> поэтому тенденция программирования будущего это разделение
> задач на узкоспециализированные приложения, взаимодействующие
> между собой
Где-то я это уже видел. Ах, да, вот же они в консоли, юниксвейные утилиты.
← →
Unknown user © (2009-01-08 20:10) [14]Понял как запускаются процессы вкладок в Google Chrome. CreateProcess запускает все тот же модуль chrome.exe, передавая ему специальную командную строку. И уже по этой строке определяется режим работы приложения -вкладка, или главный, управляющий процесс.
← →
Eraser © (2009-01-08 20:13) [15]там мноого чего передается.. вот командная строка для дочернего процесса
"C:\Users\Eraser\AppData\Local\Google\Chrome\Application\chrome.exe" --lang=ru --type=renderer --channel=6224.16aa790.1456532536
← →
Игорь Шевченко © (2009-01-08 20:15) [16]
> Предлагаю обсудить здесь методику создания программ, запускающих
> свои задачи в отдельных процессах
Собственно в Юниксе это делается испокон веков и никто не удивляется
← →
Unknown user © (2009-01-08 20:27) [17]А какие преимущества может дать данный подход, например для графического векторного редактора, где каждый графический документ это отдельное окно?
← →
Zeqfreed © (2009-01-08 20:48) [18]> Unknown user © (08.01.09 20:27) [17]
Если найдут уязвимость, через которую сформировав определенную последовательность пикселей на экране можно отформатировать диск, то этого не получится сделать, т.к. процесс будет работать под ограниченной учетной записью?
← →
Eraser © (2009-01-08 20:51) [19]> [18] Zeqfreed © (08.01.09 20:48)
графический редактор должен работать под ограниченной учетной записью целиком. зачем ему админиские права?
← →
Zeqfreed © (2009-01-08 20:58) [20]> Eraser © (08.01.09 20:51) [19]
Тогда заменим форматирование диска на стирание домашней директории.
← →
DVM © (2009-01-08 21:06) [21]
> Игорь Шевченко © (08.01.09 20:15) [16]
> Собственно в Юниксе это делается испокон веков и никто не
> удивляется
Там долгое время вроде как не было многопоточности как таковой.
← →
Eraser © (2009-01-08 21:20) [22]> [20] Zeqfreed © (08.01.09 20:58)
и что? не понял смысл делать отдельные процессы.
← →
Zeqfreed © (2009-01-08 21:30) [23]> Eraser © (08.01.09 21:20) [22]
Для графического редактора смысла мало.
← →
Игорь Шевченко © (2009-01-08 21:33) [24]DVM © (08.01.09 21:06) [21]
> Там долгое время вроде как не было многопоточности как таковой.
Ну да. И по утверждениям экспертов Unix она там не очень-то и нужна.
← →
Anatoly Podgoretsky © (2009-01-08 22:43) [25]> Игорь Шевченко (08.01.2009 21:33:24) [24]
Виноград кислый.
← →
Unknown user © (2009-01-12 12:31) [26]>Для графического редактора смысла мало.
Я рассуждаю, с точки зрения повышения надежности. Самая большая часть кода для такой программы - это подпрограммы редактирования/обработки изображений. Все они легко выносятся в отдельный процесс. По идее такой подход позволит значительно повысить надежность программы (особенно если она поддерживает плагины, способные вызвать сбои), кроме того задача распараллеливания задач должна решатся лучше чем с использованием потоков. Я прав?
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.03.15;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.044 c