The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Запуск WebAssembly runtime как модуля ядра Linux, opennews (??), 27-Сен-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


16. "Запуск WebAssembly runtime как модуля ядра Linux"  –1 +/
Сообщение от Кирилл (??), 27-Сен-18, 19:29 
Так главная идея этого модуля в том, чтобы выкинуть эту самую песочницу с высокими стенками и дать коду привилегии ядра и полный доступ к памяти и прочим ресурсам.
Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

18. "Запуск WebAssembly runtime как модуля ядра Linux"  –1 +/
Сообщение от Orduemail (ok), 27-Сен-18, 19:39 
> Так главная идея этого модуля в том, чтобы выкинуть эту самую песочницу
> с высокими стенками и дать коду привилегии ядра и полный доступ
> к памяти и прочим ресурсам.

Можно цитату со ссылкой, где эта "главная идея изложена"?

Если пройти по ссылке на github, то там написано следующее:

> primary target is a Linux kernel module that can host Emscripten-generated WebAssembly
> modules. In this configuration it runs WebAssembly modules in kernel-space (ring 0)
> and provides access to system calls as normal function calls. This configuration avoids
> user-kernel transition overhead, as well as scheduling overheads from swapping page tables.

Тут нет ни слова о "привилегиях ядра" и о "полном доступе к памяти и прочим ресурсам".

Ответить | Правка | Наверх | Cообщить модератору

20. "Запуск WebAssembly runtime как модуля ядра Linux"  +2 +/
Сообщение от Аноним (20), 27-Сен-18, 19:51 
> Here are the current developments goals in order of priority:
> * Implement enough Emscripten host-bindings to run nginx.wasm
> ...

Это означает, как минимум, доступ к сети, а также, скорее всего, еще и к диску.

Ну и "In this configuration it runs WebAssembly modules in kernel-space (ring 0) and provides access to system calls as normal function calls." как бы намекает.

Ответить | Правка | Наверх | Cообщить модератору

22. "Запуск WebAssembly runtime как модуля ядра Linux"  +/
Сообщение от Orduemail (ok), 27-Сен-18, 20:58 
>> Here are the current developments goals in order of priority:
>> * Implement enough Emscripten host-bindings to run nginx.wasm
>> ...
> Это означает, как минимум, доступ к сети, а также, скорее всего, еще
> и к диску.

То есть необходимый набор сисколлов, чтобы было как у юзерспейс процесса, так ведь?

> Ну и "In this configuration it runs WebAssembly modules in kernel-space (ring
> 0) and provides access to system calls as normal function calls."
> как бы намекает.

Что это намекает? У nginx в user-space есть доступ ко всем сисколлам, значит ли это, что у него есть полный доступ к памяти ядра?

Ответить | Правка | Наверх | Cообщить модератору

26. "Запуск WebAssembly runtime как модуля ядра Linux"  +/
Сообщение от Аноним (25), 27-Сен-18, 21:44 
> Что это намекает? У nginx в user-space есть доступ ко всем сисколлам,
> значит ли это, что у него есть полный доступ к памяти ядра?

Там как бы есть один жирный плюс: изоляция кернел-юзер аппаратно энфорсится железками. И это по скорости вообще ничего не стоит - проверки делаются прямо железками в момент выполнения команд. А переключение контекста - оно как бы да, но его как бы совершенно не обязательно делать на каждый пшик, как при наивной реализации. И ядерщики Linux об этом как-то догадались и заимплементили.

Ответить | Правка | Наверх | Cообщить модератору

29. "Запуск WebAssembly runtime как модуля ядра Linux"  +/
Сообщение от Orduemail (ok), 27-Сен-18, 22:24 
>> Что это намекает? У nginx в user-space есть доступ ко всем сисколлам,
>> значит ли это, что у него есть полный доступ к памяти ядра?
> Там как бы есть один жирный плюс: изоляция кернел-юзер аппаратно энфорсится железками.

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

> И это по скорости вообще ничего не стоит - проверки делаются
> прямо железками в момент выполнения команд.

Стоит. Частота процессора ограничена возможностями отведения тепла. Чем больше проверок, тем больше выделяется тепла, тем ниже частота процессора при той же мощности теплоотведения.

> А переключение контекста - оно
> как бы да, но его как бы совершенно не обязательно делать
> на каждый пшик, как при наивной реализации. И ядерщики Linux об
> этом как-то догадались и заимплементили.

И тем не менее, как подсказывают ниже, некоторые запиливают юзерспейсные tcp/ip-стеки, дабы уменьшить количество переключений контекста ещё ниже того, что позволяет API построенное вокруг socket и epoll.

Ответить | Правка | Наверх | Cообщить модератору

47. "Запуск WebAssembly runtime как модуля ядра Linux"  +/
Сообщение от eganruemail (?), 30-Сен-18, 13:43 
насколько я помню ядро linux выполняется в одном адресном пространстве.
если не ошибаюсь, то в общем случае из ring 0 есть возможность управлять mmu, что означает полный доступ к памяти.

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

Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

49. "Запуск WebAssembly runtime как модуля ядра Linux"  +/
Сообщение от Orduemail (ok), 30-Сен-18, 15:00 
> насколько я помню ядро linux выполняется в одном адресном пространстве.
> если не ошибаюсь, то в общем случае из ring 0 есть возможность
> управлять mmu, что означает полный доступ к памяти.

Угу. А ещё выполнение в ring3 означает доступ к сисколлам, так? Попробуй из wasm в браузере вызвать сисколл.

Ответить | Правка | Наверх | Cообщить модератору

50. "Запуск WebAssembly runtime как модуля ядра Linux"  +/
Сообщение от eganruemail (?), 30-Сен-18, 16:32 
[i]А ещё выполнение в ring3 означает доступ к сисколлам, так?[/i] - конечно нет. выполнение в ring3 позволяет выполнять вызовы ядра, если ядро предоставило возможность себя вызывать. вызовом ядра Вы же фактически просто исключение вызываете. и не более.

web-assembly еще только в начале пути. наверняка abi и прочее будут какое-то время меняться.
и, естественно, без syscall сфера применения web-assemly существенно уже, чем с ними.

Ответить | Правка | Наверх | Cообщить модератору

51. "Запуск WebAssembly runtime как модуля ядра Linux"  +/
Сообщение от Orduemail (ok), 30-Сен-18, 18:18 
> [i]А ещё выполнение в ring3 означает доступ к сисколлам, так?[/i] - конечно
> нет. выполнение в ring3 позволяет выполнять вызовы ядра, если ядро предоставило
> возможность себя вызывать.

Абсолютная аналогия с вызовами из виртуальной машины наружу. Что vm позволит, то и будет.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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