The Linux Philosophy of a kernel that runs on everything from a super computer to a smartphone is sort of misguided I think. You can write much smaller and potentially faster kernels if you focus on one architecture and use case, see for example the Oberon project (it uses a pascal descendant for its system language, also called Oberon) or the Mesa/Cedar system at Xerox Parc. With time I'm sure that kernel designs like the Singularity OS one will take over: Invent a systems programming language that allows for better static analysis and verification of driver protocols. Then run everything at ring 0 and identity mapped virtual address translation, with most of the applications written in memory safe languages or virtualized in app containers. That way context switches, which incur huge overhead, as well as heavy weight processes are a thing of the past.