5 ms·
Agree this is interesting, and user mode looks like legacy for some major domains. For example, if you are building a grid computer, you don't need mechanisms
by cturner 6y ago
Agree this is interesting, and user mode looks like legacy for some major domains.
For example, if you are building a grid computer, you don't need mechanisms that were designed to protect university students from one another. Consider if everything is driven from a single codebase. Your type system can provide protections that have traditionally been done by the kernel.
I am currently playing with this. Have a boot loader up, and a handoff to c++. Today I am looking at page-management.
There are some interesting trade-offs that come from unconventional approaches like this. For example, I have read that if you make SIMD registers available to the kernel, it hurts the performance of context-switching. (https://os.phil-opp.com/minimal-rust-kernel/ https://os.phil-opp.com/minimal-rust-kernel/)
A mitigation I am considering: do all interrupt handling on one core, and then have all other cores for work-processing. Use channels to communicate between the burnt interrupt core and the worker cores. Downside of this: worker cores would need to poll for new messages. In low-activity periods, I could slow the poll interval. I would be interested to hear from anyone who has gone deep on this, or knows of papers.
- dirtydroog 6y agoTechnologies such as DPDK are designed to get the kernel out of the way. For some applications it has no reason to play a part once the system has booted, it's just an overhead. For what you're doing I recall reading about IncludeOS[1] which seems to have similar goals [1] https://www.includeos.org https://www.includeos.org
- cturner 6y agoThanks for the reference to includeos. They do seem to have built something in the spirit of what I have been looking into.