Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.15;
Скачать: CL | DM;

Вниз

Приложение разделенное на процессы   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.02 c
2-1233085240
AkimOS
2009-01-27 22:40
2009.03.15
Файл


2-1232645435
Tinky
2009-01-22 20:30
2009.03.15
Надо ли обнулять массивы?


2-1232578097
аврам
2009-01-22 01:48
2009.03.15
stream and stringlist


15-1231425248
Мистер Блин
2009-01-08 17:34
2009.03.15
Рекурсивный метод сортировки


2-1232932287
Тимоха
2009-01-26 04:11
2009.03.15
перехват сообщения "восстановить"