HelenOS in the Year of the Pig HelenOS in the Year of the Pig - - PowerPoint PPT Presentation

helenos in the year of the pig helenos in the year of the
SMART_READER_LITE
LIVE PREVIEW

HelenOS in the Year of the Pig HelenOS in the Year of the Pig - - PowerPoint PPT Presentation

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


slide-1
SLIDE 1

HelenOS in the Year of the Pig HelenOS in the Year of the Pig

Jakub Jermář

j a k u b @ j e r m a r . e u

http://www.helenos.org http://www.helenos.org

slide-2
SLIDE 2

Jakub Jermář, FOSDEM 2020, February 2nd HelenOS in the Year of the Pig 2

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
slide-3
SLIDE 3

Jakub Jermář, FOSDEM 2020, February 2nd HelenOS in the Year of the Pig 3

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

slide-4
SLIDE 4

Jakub Jermář, FOSDEM 2020, February 2nd HelenOS in the Year of the Pig 4

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)
slide-5
SLIDE 5

Jakub Jermář, FOSDEM 2020, February 2nd HelenOS in the Year of the Pig 5

HelenOS IPC Recap HelenOS IPC Recap

Task Task Task Task Task Task

Answerbox Answerbox Answerbox Answerbox Phones Answerbox Answerbox Phones Phones ipc_call_async_fast(2, method, arg1, arg2, arg3, ...) ipc_wait_for_call_timeout ipc_wait_for_call_timeout ipc_answer_fast(callid, retval, arg1, arg2, arg3, arg4) ipc_forward_fast(callid, 5, method, arg1, arg2, ...) ipc_wait_for_call_timeout

slide-6
SLIDE 6

Jakub Jermář, FOSDEM 2020, February 2nd HelenOS in the Year of the Pig 6

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?

slide-7
SLIDE 7

Jakub Jermář, FOSDEM 2020, February 2nd HelenOS in the Year of the Pig 7

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

slide-8
SLIDE 8

Jakub Jermář, FOSDEM 2020, February 2nd HelenOS in the Year of the Pig 8

Simple Roundtrip Simple Roundtrip

b = buf_alloc(); ep = ep_create(); buf_send(b, ep); buf_receive(ep, tmp_b); buf_wait(b); buf_finish(tmp_b); buf_free(b); ep_destroy(ep);

slide-9
SLIDE 9

Jakub Jermář, FOSDEM 2020, February 2nd HelenOS in the Year of the Pig 9

Multiple buffers and endpoints Multiple buffers and endpoints

bcl = caplist_create(); b1 = buf_alloc(); b2 = buf_alloc(); ecl = caplist_create(); ep1 = ep_create(ecl); ep2 = ep_create(ecl); buf_send(b1, ep1, bcl); buf_send(b2, ep2, bcl); buf_receive(ecl, tb); buf_wait(bcl); buf_wait(bcl); buf_finish(tb); buf_free(b1); buf_free(b2); caplist_destroy(bcl); ep_destroy(ep1); ep_destroy(ep2); caplist_destroy(ecl);

slide-10
SLIDE 10

Jakub Jermář, FOSDEM 2020, February 2nd HelenOS in the Year of the Pig 10

HelenOS as Anykernel (WiP) HelenOS as Anykernel (WiP)

slide-11
SLIDE 11

Jakub Jermář, FOSDEM 2020, February 2nd HelenOS in the Year of the Pig 11

HelenOS as Anykernel HelenOS as Anykernel

client kernel IPC server client kernel IPC VFS server

user space kernel space direct call syscall upcall

slide-12
SLIDE 12

Jakub Jermář, FOSDEM 2020, February 2nd HelenOS in the Year of the Pig 12

HelenOS as Anykernel HelenOS as Anykernel

client kernel kernel IPC VFS server

user space kernel space direct call syscall upcall

slide-13
SLIDE 13

Jakub Jermář, FOSDEM 2020, February 2nd HelenOS in the Year of the Pig 13

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
slide-14
SLIDE 14

Jakub Jermář, FOSDEM 2020, February 2nd HelenOS in the Year of the Pig 14

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
slide-15
SLIDE 15

Jakub Jermář, FOSDEM 2020, February 2nd HelenOS in the Year of the Pig 15

Q&A Q&A

http://www.helenos.org https://github.com/HelenOS/helenos @HelenOSOrg @jjermar Thank you!