Skip to content

Kernel and userspace separation policy

This issue covers which components may be moved to userspace, or should continue stay in the kernel.

Kernel

  • CPU drivers - performance
  • Memory manager - performance, and moving that to userspace is hard
  • Context switch - core part of the kernel
  • Capability system - the kernel needs to implement at least the bare minimum to be able to isolate processes from each other
  • Scheduler - performance

Userspace currently

  • cwd handling
  • initfs
  • fork and execv
  • most drivers
  • filesystem
  • everything else

Possible to move to userspace

  • RTC driver
  • path parsing (would require openat)
  • the current namespace implementation (would also require openat)
  • (part of) the file descriptor table (descriptors, not descriptions) - allows optimizing lseek, fcntl, POSIX pipes, etc.
  • process management, including uid/gid/(not yet implemented:) supplementary groups
  • application processor startup
  • file descriptor allocation (where the lowest available number must be picked)
  • virtual memory range allocation
Edited by Jacob Lorentzon