-
Notifications
You must be signed in to change notification settings - Fork 95
This started as a fun side project to learn more about low-level programming and gradually evolved into something that would be very useful in the IT space. Assembly keeps kernel development focused on the task at hand and keeps unneeded features out as they take longer to code.
Adding support for several processes requires virtual memory, which comes at an inherent cost: virtual to physical address translation for every memory lookup, plus the cost of context switches whenever a process wants to do system calls (it would require switching protection level and address space). Currently BareMetal has no virtual memory, and system calls are just normal function calls. We do support SMP however - the running application is able to use all available CPU cores for processing.
Threads add overhead to the virtual machine: they need context switching, scheduling and periodic timer interrupts. Concurrency in turn requires everything to be reentrant and thread safe. We know how to do this, and we'll probably add threading support later, as an optional feature.