2016-01-05 3 views
0

Это, вероятно, довольно простой вопрос, но ни один из технических документов на Chrome Native Client и Chromium я рассмотрел до сих пор, кажется, обратиться к этому в прямом порядке:Chrome модель Native Client процесс

Когда Chrome встречает <embed> элемент с application/x-pnal типа внутри html-страницы, загружает модуль собственного клиента в том же пространстве процесса, что и вкладка, на которой размещена текущая страница? Затем, после создания и запуска модуля NaCl, например, внутри метода HandleMessage(const pp:Var&), является ли код запущенным в отдельном потоке из потока, выполняющего встроенный javascript?

ответ

1

Собственный клиент всегда работает в отдельном процессе от Chrome, это часть дизайна песочницы, что все адресное пространство должно находиться под контролем NaCl. Каждая архитектура имеет различную реализацию изолированной программной среды, например on ARM. NaCl зарезервировал нижний 1GiB адресного пространства для ненадежного кода (с защитной страницей в направлении 0 и трамплинов syscall сразу после) и верхнего 3GiB для надежной базы кода. x86-32 вместо этого использует сегментацию для обеспечения ограничений адресного пространства, и x86-64 может быть в процессе (для него достаточно адресного пространства, так как он дает только 4GiB для ненадежного кода), но все еще использует свой собственный процесс, потому что такие вещи, как обработка сигналов и фильтрация системного отказа, для обеспечения существующей конструкции NaCl.

Вас, возможно, интересует how syscalls work.

Смежные вопросы