The kernel is the interface between the computer hardware and the userspace. It handles everything from file and process management to resource allocation, computer interfaces like keyboards/mice and networking features. This interface is mainly established using syscalls (features/syscall.c
).
While the main goal of Melvix is definitely not the security aspect, the kernel should be fairly secure. It implements memory protecting features like paging and address validation, SMEP/SMAP, ASLR, ring 3 processes, protected memory sharing, process based syscall validation (abstraction to default, super and kernel processes) and much more.
The directory structure consists of drivers/
, the home of all hardware-interacting device drivers, and features/
, the home of interfaces that are not directly tied to the hardware but rather to other features of the kernel or userspace. The inc/
directory is the location of all kernel header files.