The OpenNET Project / Index page

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

В WebKit2 планируют кардинально увеличить надежность и избавиться от блокировок

09.04.2010 17:38

В списке рассылки разработчиков браузерного движка WebKit представлен проект WebKit2, в рамках которого планируется перейти на многопроцессную модель работы, при которой обработка разного web-контента (выполнение JavaScript, парсинг HTML, вывод на экран) производится в изолированных друг от друга процессах. Технология изоляции в WebKit2 очень близка по своей сути к методам, реализованным в браузере Google Chrome и отличается главным образом лишь тем, что модель разделения обработки по разным процессам будет встроена непосредственно во фреймворк, давая возможность использовать данную технологию во всех построенных на базе WebKit браузерах.

В браузерах на базе WebKit2 часть движка, ответственная за рендеринг заданного контента (web-приложения), будет выполняться в полностью изолированном окружении, исключающем получение доступа к внешним данным и влияние на обработку другого контента (например, крах движка от скрипта или плагина в одной вкладке не повлияет на другие). При этом ядро движка и интерпретатор JavaScript будут вынесены в отдельный процесс, взаимодействие с которым будет организовано при помощи специального IPC-механизма, т.е. логика обработки web-приложений будет отделена от базового движка. Обработка в разных процессах позволит повысить безопасность (можно изолировать обработку каждой вкладки), увеличит отзывчивость интерфейса и даст возможность обрабатывать контент параллельно, более рационально расходуя ресурсы многоядерных процессоров.

Второй целью создания WebKit2 является предоставление разработчикам API, работающего полностью в неблокируемом режиме. Т.е. разработчик вызывает определенный метод (например, рендеринга web-страницы), устанавливает callback-обработчики для заданных стадий обработки, продолжает в программе выполнение каких-то других действий, а по мере выполнения в WebKit операции, получает специальные уведомления.

Проект WebKit был основан компанией Apple в 2002 году и базировался на разработанном в рамках проекта KDE движке KHTML. В настоящее время на базе WebKit построено около десятка web-бразуеров (Safari, Google Chrome, Midori, Arora, OWB, Epiphany, BOLT Browser, Shiira ), код webKit интегрирован в такие платформы как Qt, Symbian и Android. Исходные тексты WebKit доступны под лицензиями LGPL и BSD.

  1. Главная ссылка к новости (https://lists.webkit.org/piper...)
  2. OpenNews: Началось официальное бета-тестирование Linux версии браузера Google Chrome
  3. OpenNews: Разработчики Mozilla начали перевод Firefox на многопроцессную архитектуру
  4. OpenNews: Компания Google анонсировала проект по созданию собственного web-браузера
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: webkit, browser, web
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (48) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
  • 1.2, polymorphm1 (ok), 18:37, 09/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    распределение всё по процессам -- это АКТУАЛЬНЕЙШАЯ задача современных програм!

    вот только как они буду портировать это на Windows ? тамже сплошником только и принто использовать "Нити" ("Threads")... (а в данный момент времени -- "Нити используются" всё чащще стали использоваться не для увеличения производительности, а для задания НЕ_ЛИНЕЙНОЙ логике работы алгоритма)

    ...так как -- тут и к гадалке не ходи -- нужно использовать КЛОНИРОВАНИЕ процессов (системный вызов 'fork(...)')

     
     
  • 2.10, минона (?), 21:20, 09/04/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    вообще-то fork (и vfork) в линухе реализованы через системный вызов clone. отличие только в параметрах передаваемых clone.
    более того, в линухе для обеспечения многопоточных приложений используются облегчённые процессы.

    другими словами, разница в линухе между процессами и потоками размыта настолько, насколько это возможно. а параметры clone таковы, что между "потоком" и процессом есть ещё целый ряд вариантов.
    в общем, в то, что что-то там распухнет я не верю. вернее точно знаю, что это не так.

     
     
  • 3.14, polymorphm1 (ok), 23:14, 09/04/2010 [^] [^^] [^^^] [ответить]  
  • –3 +/
    ну я не такой спец в ядре .. даж и не знал что есть функция clone(..)

    когда писал про клонирвоание -- как раз и имел ввиду fork(..) семейство :-)

    > в общем, в то, что что-то там распухнет я не верю. вернее точно знаю, что это не так.

    ну я тож думаю что не расспухнет сильно. а если и распухнет -- то во благо производительности и надёжности.


    я хотел затронуть тему портирования на windows... как там дела у Windows с fork(...) ?

    (только если не рассматривать в Windows -- специальную posix-подсистему, которая используется чутьли только не в лабораторных целях, и которая не во всех версиях Windows)

     
     
  • 4.17, минона (?), 23:29, 09/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    не просто функция. системный вызов.
    функция в ядре - do_fork.
    и это семейство не только по работе с процессами, но и с потоками.
    >ну я тож думаю что не расспухнет сильно. а если и распухнет -- то во благо производительности и надёжности.

    если действительно продумают этот момент, то может даже уменьшится.
    >я хотел затронуть тему портирования на windows... как там дела у Windows с fork(...) ?

    ну значит я не дорасказал - обычно для всей этой батвы используется библиотека-посредник.
    если такая библа будет и для винды (а она будет. и уже есть. и уже не одна), то проблем - скомпили и используй.

     
  • 4.21, Michael Shigorin (ok), 23:58, 09/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так и не пишите про fork(2), а читайте про ps(1) :)  Там есть целый раздел THREAD DISPLAY.  А потом посмотрите на тот же firefox через полученный таким образом бинокль.
     
  • 4.25, haku (??), 01:57, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >>как там дела у Windows с fork(...) ?

    да всё так же, вызов функции с одиннадцатью параметрами, шесть из которых -- структуры... венда же ж...

     
  • 4.44, dRiZd (?), 18:04, 11/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    А что на счет OpenMP, или все забыли про него?
     
  • 2.13, Ariel (ok), 22:36, 09/04/2010 [^] [^^] [^^^] [ответить]  
  • –2 +/
    ну вообще-то для параллельного программирования используют именно нити (pthread.h) в адресном пространстве одного процесса, то есть просто параллельные функции http://www.opengroup.org/onlinepubs/007908799/xsh/pthread.h.html

    клонирование процессов с помощью fork() используется в основном для запуска иного процесса с exec()

     
     
  • 3.16, polymorphm1 (ok), 23:28, 09/04/2010 [^] [^^] [^^^] [ответить]  
  • –4 +/
    как раз таки я и хотел скахать что применение нитей posix_threads -- сейчас ис... текст свёрнут, показать
     
     
  • 4.20, минона (?), 23:44, 09/04/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >....а сейчас -- принято использовать сборшики мусора (сложные модели данных с цеклическими зависимостями -- как могут обойтись без сборщика мусора?) , который блокируют сразу ВСЕ нити (одного процесса) при своей деятельности.

    глупости.
    это вообще компромисс между признанием "да, я пишу кривые проги" и хоть какой-то стабильностью кода типа - "ну она же не жрёт больше, чем есть в этой системе?"
    и к потокам/процессам не имеет отношения.

     
  • 4.27, IGX (?), 02:03, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    всё сказанное - полная чушь, имеющая отношение только к реальности оратора
     
  • 4.31, qpq (ok), 07:33, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    фантазер... :)

    либо у Вас богатая фантазия на благодатной почве обрывочных знаний, либо Вы так умело издеваетесь над местной публикой

     
  • 3.19, минона (?), 23:40, 09/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    pthread.h - это всего лишь заголовочный файл POSIX-совместимой библиотеки, использующей облегчённые процессы (в том числе и линухе). в любом случае, они оперируют теми же системными вызовами, но на более высоком уровне.
    примеры POSIX-совместимых библ - LinuxThread, NTPL, NGPT...
     
     
  • 4.26, Ariel (ok), 02:03, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >pthread.h - это всего лишь заголовочный файл POSIX-совместимой библиотеки, использующей облегчённые процессы
    >(в том числе и линухе). в любом случае, они оперируют теми
    >же системными вызовами, но на более высоком уровне.
    >примеры POSIX-совместимых библ - LinuxThread, NTPL, NGPT...

    В смысле, что нет разницы между процессом и нитью? Насколько я знаю, каждый процесс имеет по крайней мере одну нить (main thread). Если нитей несколько, то они существуют в одном адресном пространстве и разделяют ресурсы процесса и могут выполняться параллельно; в чём и смысл.
    fork() же порождает именно новый процесс со своим адресным пространством, который обычно заменяется с помощью exec(), что является намного более дорогим. Во всяком случае в Darwin pthreads основаны на mach threads

     
     
  • 5.29, Ariel (ok), 02:35, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Сейчас смотрел исходники fork(), и кроме копирования ресурсов и много чего прочего, происходит создание нити дочернего процесса. Ну это на Mac OS X / Darwin
     
  • 5.34, минона (?), 12:59, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >В смысле, что нет разницы между процессом и нитью?

    разница в деталях. не больше и не меньше.
    >fork() же порождает именно новый процесс со своим адресным пространством,

    я уже писал как работает fork (и как работает clone). не вижу смысла повторятся.
    зы:
    раньше ядро вообще не предполагало поддержку многопоточности. потоки создавались на пользовательском уровне (например при помощи библиотеки pthread). для ядра же все эти ветви выполнения были одним процессом.
    сейчас используются облегчённые процессы. всё остальное - это структуры в пользовательском пространстве, реализованные по стандарту POSIX или нет.
    ззы:
    прочитайте уже про облегчённые процессы. тогда не будете глупости писать

     
     
  • 6.37, Ariel (??), 16:00, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    в Mac OS X нет понятия облегчённого процесса,  киньте ссылку - скажу спасибо;
    на низком уровне (mach) есть tasks и threads, и многопоточность была изначально,
     
     
  • 7.39, минона (?), 16:41, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    да не собираюсь я вам что-либо кидать! :D
    речь шла про винды и линух. и местами про POSIX потоки. ах, вы захотели про мак? ну, хотеть не вредно.
    зы:
    главное помнить, что потоки - это абстрактные структуры и цпу до них нет дела. в отличие от процессов. ну а если вы точно хотите поговорить о потоках в маке, то внимательно прочитайте вот эту документацию:
    >Threads are one of several technologies that make it possible to execute multiple code paths concurrently inside a single application. Although newer technologies such as operation objects and Grand Central Dispatch (GCD) provide a more modern and efficient infrastructure for implementing concurrency, Mac OS X and iPhone OS also provide interfaces for creating and managing threads.

    http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Multith
    и далее по тексту. :D

     
     
  • 8.41, Ariel (??), 17:23, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Cпасибо за ссылку - но я её само собой читал И где там сказано, что процессы ... текст свёрнут, показать
     
     
  • 9.42, минона (?), 19:03, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    где написано в устаревшей документации к признанной ими же устаревшей технологи... текст свёрнут, показать
     
     
  • 10.45, Ariel (??), 01:55, 12/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Что устарело Насколько я знаю все multithreading API основаны на much threads, ... текст свёрнут, показать
     
     
  • 11.46, минона (?), 11:34, 12/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    контейнер, начинка всё это абстрактные понятия спуститесь на уровень ниже и ... текст свёрнут, показать
     
     
  • 12.47, Ariel (ok), 17:40, 12/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    gt оверквотинг удален clone есть лишь в Linux, почему вы меряете по ней Dar... текст свёрнут, показать
     
     
  • 13.48, минона (?), 18:27, 12/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    да при чём тут clone к слову, от mach а там мягко говоря мало что осталось со... текст свёрнут, показать
     
     
  • 14.49, минона (?), 18:39, 12/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    зы просто с clone и облегчёнными процессами а это уже стандарт в терминологии ... текст свёрнут, показать
     
     
  • 15.50, Ariel (ok), 22:09, 12/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    от mach там много чего, в том числе и потоки - mach thread и оно не куцое, а изм... текст свёрнут, показать
     
     
  • 16.51, Ariel (ok), 22:13, 12/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    забыл сказать, что на Mac принято использовать fork только вместе с exec , и ... текст свёрнут, показать
     
     
  • 17.52, Ariel (ok), 22:43, 12/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    http developer apple com mac library documentation Darwin Conceptual KernelPro... текст свёрнут, показать
     
     
  • 18.53, минона (?), 01:26, 13/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    всё это понятно, но я ещё раз пытаюсь сказать, что мы говорим о разных вещах ес... текст свёрнут, показать
     
     
  • 19.54, Ariel (ok), 14:50, 15/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    я лишь написал о том, что процессы и потоки реализованы на уровне Mach именно от... текст свёрнут, показать
     
     
  • 20.55, минона (?), 23:55, 15/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    ну а я перечислил как это легко, непринужденно и эстетично решается при помощ... текст свёрнут, показать
     

  • 1.6, User294 (ok), 20:34, 09/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > распределение всё по процессам -- это АКТУАЛЬНЕЙШАЯ задача современных програм!

    Да, знакомый чувак открыл в хромиуме 150 табов. Система начала тормозить, список задач засрался процессами а суммарное потребление памяти сделало FF в несколько раз. Актуально, мля, особенно когда это уродство и в FF сделают - будет на что поюзать 8 гигз оперативы, блин ;(

     
     
  • 2.8, Anon (?), 20:49, 09/04/2010 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Память - расходный материал. Не жалко. А вот нагрузку на процессор что хром, что огнелис неслабую дают. Что очень критично на мобильных железках.

     
     
  • 3.12, Frank (??), 22:12, 09/04/2010 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Память - расходный материал. Не жалко.

    Расскажи это сисадминам, админящим сетки на тонких клиентах. Запасись предварительно зелёнкой и бинтами ;)

     
  • 3.30, аноним (?), 05:05, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Любой расходный материал
    - когда-нибудь кончается
    - может пригодится для более важных вещей

    С таким подходом возвращаемся во времена DOS - может работать только одна задача - недобраузер типа хрома или недософт на java. Все, памяти больше нет - расходный материал, хренли.

     
  • 2.15, svchost (ok), 23:24, 09/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Блин, а я вот пользуюсь Firefox 3.7 и в нем отключил этот mozilla-runtime, так как он жутко тормозил браузер.
     
  • 2.18, polymorphm1 (ok), 23:36, 09/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >> распределение всё по процессам -- это АКТУАЛЬНЕЙШАЯ задача современных програм!
    >
    >Да, знакомый чувак открыл в хромиуме 150 табов. Система начала тормозить, список
    >задач засрался процессами а суммарное потребление памяти сделало FF в несколько
    >раз. Актуально, мля, особенно когда это уродство и в FF сделают
    >- будет на что поюзать 8 гигз оперативы, блин ;(

    везде есть свои минусы :-(

    ...бывает приходиться осознанно жертвовать чемто.

    может оно так и хорошо в FF...
    ..может показаться...

    ...но ведь -- по сути -- каждый сайт (вкладка с сайтом) -- это отдельная программа(?). разве по смыслу -- это не так(?)

    мы же не жалуемся что --
    "почему при открытии Gajim и emerge -- открывается ДВЕ копии процесса python? для уменьшения потребления ОЗУ -- моглибы и открывать в двух нитях ОДНОГО процесса!"
    ...так как ясно что разные программы нада "отделить"

     
     
  • 3.22, Michael Shigorin (ok), 00:02, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >мы же не жалуемся что --

    Уважаемый, почитайте про mmap(2) и cow (copy-on-write), а потом -- лучше через год-два -- Ваши слова на эту тему не будут вызывать смех, пропорциональный квадрату их количества.

    Ну чесслово, не надо.

     
     
  • 4.24, минона (?), 00:41, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    ну не надо так строго то.
    сегодня он что-то (надеюсь) для себя открыл. завтра (надеюсь) "мы" будем с ним советоваться.
     
  • 4.33, polymorphm1 (ok), 12:23, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    прочитал, спасибо вобщемто знал про mmap и раньше но использовать в прик... текст свёрнут, показать
     
     
  • 5.43, Michael Shigorin (ok), 01:37, 11/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Именно Эх При использовании памяти, о котором вообще-то говорили Дело в этом... текст свёрнут, показать
     

  • 1.9, Аноним (-), 20:52, 09/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    при которой обработка разного web-контента (выполнение JavaScript, парсинг HTML, вывод на экран) производится в изолированных друг от друга процессах
    ====
    по моему это должен решать разработчик а не framework
     
  • 1.23, nitrogear (?), 00:27, 10/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ух-ты, не думал что болт на движке вебкит. А еще удивлялся как это этому бровсеру удалось справиться со страничками лучше чем опера мини.
     
  • 1.28, Аноним (-), 02:09, 10/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > а по мере выполнения в WebKit операции, получает специальные уведомления.

    Бог ты мой, 15 лет прошло, чтобы эти программасты додумались до удобной модели "переиспользования"! Пипец, прогресс... Не удивительно, что до сих пор нет внятного браузера - то дырявые, то медленные, то неуклюжие... что ж за позорники их писали всё это время?

     
     
  • 2.32, Аноним (-), 12:02, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Возможно, над каждым стояли менеджер с маркетологом и вопили наперебой - "Релиз давай! Реклама оплачена! Срок настает! Пофигу качество!"
     
  • 2.40, Ян Злобин (ok), 17:19, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >15 лет прошло, чтобы эти программасты додумались до удобной модели "переиспользования"!

    Насколько я понимаю, речь идет, всего лишь, об асинхронном режиме работы отдельных компонентов.

     

  • 1.35, anon1 (?), 15:38, 10/04/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Unfortunately, the open-source WebKit2 is not yet supported on Linux. Apple has just provided support for Windows and Mac OS X

    То есть выпустить тулкит только для макоси и винды(!), но при этом пропустить линукс... так можно было сделать только специально.

     
     
  • 2.38, минона (?), 16:17, 10/04/2010 [^] [^^] [^^^] [ответить]  
  • +/
    apple никогда этого и не делала.
    что тут удивительного то?

    зы:
    основной мотив - сделать как в хроме или лучше.
    вот и фф туда же движется.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

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