Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.046 c
8-1191654435
Митяй2
2007-10-06 11:07
2009.03.15
Воспроизведение mp3-мелодий


2-1232896639
И. Павел
2009-01-25 18:17
2009.03.15
Как показать модальное окно только после CreateRectRgn?


11-1197877588
Александр 2006
2007-12-17 10:46
2009.03.15
Про KolService


3-1216887060
DelphiN!
2008-07-24 12:11
2009.03.15
SQL Запрос выводит пустоту


4-1206607413
kolj
2008-03-27 11:43
2009.03.15
Tapi -> LineGetId





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский