HelenOS in the Year of the Pig HelenOS in the Year of the Pig http://www.helenos.org http://www.helenos.org Jakub Jermář j a k u b @ j e r m a r . e u
HelenOS in a nutshell HelenOS in a nutshell ● Portable microkernel-based multiserver OS ● Designed and implemented from scratch ● Not a clone of any existing OS / API ● Virtually no third-party code ● Fine-grained userspace components Jakub Jermář , FOSDEM 2020, February 2 nd 2 HelenOS in the Year of the Pig
Since last FOSDEM... Since last FOSDEM... May HelenOS 0.9.1 Armonia L4Re::Treat<2019> Jun / July SUSE Hack Week 19: HelenOS of the <future> August HelenOS quasi-Camp 2019 Jakub Jermář , FOSDEM 2020, February 2 nd 3 HelenOS in the Year of the Pig
Master and beyond Master and beyond ● C++ <future> header (master) ● Switch to the Meson build system (master) ● IPC v2 (WiP, branch) ● HelenOS as anykernel (WiP, branch) ● Display server (WiP, branch) Jakub Jermář , FOSDEM 2020, February 2 nd 4 HelenOS in the Year of the Pig
HelenOS IPC Recap HelenOS IPC Recap Phones Phones Phones ipc_call_async_fast(2, method, arg1, arg2, arg3, ...) ipc_forward_fast(callid, 5, method, arg1, arg2, ...) Answerbox Answerbox Answerbox Answerbox Answerbox Answerbox ipc_wait_for_call_timeout ipc_wait_for_call_timeout ipc_wait_for_call_timeout Task Task Task Task Task Task ipc_answer_fast(callid, retval, arg1, arg2, arg3, arg4) Jakub Jermář , FOSDEM 2020, February 2 nd 5 HelenOS in the Year of the Pig
HelenOS IPC Recap HelenOS IPC Recap Call non-reusable, fixed-size, kernel allocated/managed Phone (unnecessary?) level of indirection between client and server Answerbox asynchronous, waitable (still) one-per task Where should the answer go with >1 answerboxes? How does a server wait for multiple requests? How does a client wait for multiple answers? Jakub Jermář , FOSDEM 2020, February 2 nd 6 HelenOS in the Year of the Pig
IPC v2 (WiP) IPC v2 (WiP) IPC buffer preallocated, reusable, arbitrary size, waitable IPC endpoint asynchronous, waitable Caplists container for other kernel objects similar to Mach port sets / epoll waiting for multiple requests / answers Jakub Jermář , FOSDEM 2020, February 2 nd 7 HelenOS in the Year of the Pig
Simple Roundtrip Simple Roundtrip b = buf_alloc(); ep = ep_create(); buf_send( b , ep); buf_receive( ep , tmp_b); buf_finish(tmp_b); buf_wait( b ); ep_destroy( ep ); buf_free( b ); Jakub Jermář , FOSDEM 2020, February 2 nd 8 HelenOS in the Year of the Pig
Multiple buffers and endpoints Multiple buffers and endpoints bcl = caplist_create(); ecl = caplist_create(); b1 = buf_alloc(); ep1 = ep_create( ecl ); b2 = buf_alloc(); ep2 = ep_create( ecl ); buf_send( b1 , ep1, bcl ); buf_receive( ecl , tb); buf_send(b2, ep2, bcl ); buf_finish(tb); buf_wait( bcl ); buf_wait( bcl ); ep_destroy( ep1 ); buf_free( b1 ); ep_destroy(ep2); buf_free(b2); caplist_destroy( ecl ); caplist_destroy( bcl ); Jakub Jermář , FOSDEM 2020, February 2 nd 9 HelenOS in the Year of the Pig
HelenOS as Anykernel (WiP) HelenOS as Anykernel (WiP) Jakub Jermář , FOSDEM 2020, February 2 nd 10 HelenOS in the Year of the Pig
HelenOS as Anykernel HelenOS as Anykernel user space kernel space syscall direct call VFS upcall server client client server IPC IPC kernel kernel Jakub Jermář , FOSDEM 2020, February 2 nd 11 HelenOS in the Year of the Pig
HelenOS as Anykernel HelenOS as Anykernel user space kernel space syscall direct call upcall client VFS IPC server kernel kernel Jakub Jermář , FOSDEM 2020, February 2 nd 12 HelenOS in the Year of the Pig
Display server (WiP) Display server (WiP) ● Eventually to replace the current compositor ● More modular structure than compositor ● Compositor needs memory for all windows ● Better control of rendering and buffering policies ● HelenOS IPC is just a transport ● Different pixel formats, text mode ● And more, see ticket #816 Jakub Jermář , FOSDEM 2020, February 2 nd 13 HelenOS in the Year of the Pig
Links Links ● http://www.helenos.org/wiki/ReleaseNotes/0.9.1 ● https://blog.kernkonzept.com/retreat/social/201 9/06/06/l4re_treat.html ● https://hackweek.suse.com/19/projects/helenos -of-the ● https://github.com/jxsvoboda/helenos/tree/gfx ● http://www.helenos.org/ticket/816 ● https://github.com/jermar/helenos/tree/ipc Jakub Jermář , FOSDEM 2020, February 2 nd 14 HelenOS in the Year of the Pig
Q&A Q&A http://www.helenos.org https://github.com/HelenOS/helenos @HelenOSOrg @jjermar Thank you! Jakub Jermář , FOSDEM 2020, February 2 nd 15 HelenOS in the Year of the Pig
Recommend
More recommend