Biscuit: монолитное POSIX-совместимое ядро на Go
Ядро было написано аспирантом MIT Cody Cutler в рамках исследования «The benefits and costs of writing a POSIX kernel in a high-level language» и доступно на GitHub странице MIT PDOS (Parallel and Distributed Operating Systems group at MIT CSAIL) под лицензией MIT.
Biscuit неплохо документирован и содержит 27 тысяч строк на Go, из которых всего 90 функций содержат небезопасные вызовы («unsafe»), необходимые для задач вроде доступа к регистрам процессора. Есть также небольшой загрузчик, написанный на ассемблере.
Особенности:
Скомпилировать и опробовать ядро довольно просто:
git clone https://github.com/mit-pdos/biscuit.git cd biscuit/src ./make.bash && make -C ../biscuit qemu CPUS=2 При этом сборка с нуля занимает всего 38 секунд, из которых 33 секунды приходится на немного модифицированный рантайм Go, и всего 5 секунд непосредственно на сборку ядра.
Интересны результаты исследования. После проведения тестов производительности на таких приложениях, как NGINX, Redis, и CMailbench — обнаружилось, что сравнение производительности эквивалентного кода на Си и на Go показало всего 15% разницы. Учитывая наличие garbage collector — неожиданно.
>>> Подробности
Biscuit неплохо документирован и содержит 27 тысяч строк на Go, из которых всего 90 функций содержат небезопасные вызовы («unsafe»), необходимые для задач вроде доступа к регистрам процессора. Есть также небольшой загрузчик, написанный на ассемблере.
Особенности:
Скомпилировать и опробовать ядро довольно просто:
git clone https://github.com/mit-pdos/biscuit.git cd biscuit/src ./make.bash && make -C ../biscuit qemu CPUS=2 При этом сборка с нуля занимает всего 38 секунд, из которых 33 секунды приходится на немного модифицированный рантайм Go, и всего 5 секунд непосредственно на сборку ядра.
Интересны результаты исследования. После проведения тестов производительности на таких приложениях, как NGINX, Redis, и CMailbench — обнаружилось, что сравнение производительности эквивалентного кода на Си и на Go показало всего 15% разницы. Учитывая наличие garbage collector — неожиданно.
>>> Подробности
Ещё новости по теме:
18:20