Skip to content
Ian Seyler edited this page Dec 7, 2015 · 2 revisions

Why is it written in Assembly?

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.

Why can't we have more than one process?

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.

Why no threads?

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.

Clone this wiki locally