ExoKernels on x86

Discussions on more advanced topics such as monolithic vs micro-kernels, transactional memory models, and paging vs segmentation should go here. Use this forum to expand and improve the wiki!
Post Reply
Maqstcharub
Posts: 4
Joined: Thu Mar 31, 2022 1:39 pm
Libera.chat IRC: gimbo

ExoKernels on x86

Post by Maqstcharub »

Hello im an amateur OSdev who already worked on a simple Monolothic Kernel. Since i started learning Kernel Design Theory i was fascinated by ExoKernels. So i was asking how could i implement my own Exo in x86?
Should I switch to ring3 for applications?
Where do i implement the Memory Manager the common Drivers and the other Kernel services? Is it all done by libOs?

Thanks in advance.
Octocontrabass
Member
Member
Posts: 5531
Joined: Mon Mar 25, 2013 7:01 pm

Re: ExoKernels on x86

Post by Octocontrabass »

Maqstcharub wrote:So i was asking how could i implement my own Exo in x86?
Not too different from how you implement any other kernel, just with fewer abstractions. Instead of filesystems, you have block devices. Instead of a network stack, you have packet devices.
Maqstcharub wrote:Should I switch to ring3 for applications?
Probably, yes. The kernel's job is to multiplex hardware, so running applications in ring 3 ensures that applications can only access things they have permission to access. (Of course, if they can access DMA-capable hardware, they may be able to bypass some of the protection ring 3 offers...)
Maqstcharub wrote:Where do i implement the Memory Manager the common Drivers and the other Kernel services?
Wherever you like. Put those all in the kernel and you'll have a monolithic exokernel. Put those all in userspace and you'll have a micro-exokernel.
Post Reply