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