Yeah, that's definitely not how I would have explained it. I would say that a traditional OS provides high-level abstractions (think of system calls like open() or fork() — they're very complex compared to the underlying hardware) while the exokernel provides very low-level primitives like memory pages, disk blocks, CPU time, etc.
Throughout history, people have discovered that their OS doesn't provide the right abstractions to allow some apps to take advantage of the hardware's performance potential. The traditional solution was to add features to the OS (Web server not fast enough? sendfile() to the rescue!), but the exokernel proposes the radical alternative of providing simpler, maximally flexible abstractions and letting apps (or libOSes) implement whatever behavior they want.
Exokernel was basically a very early form of a hypervisor. It's not totally novel as hypervisors have been around for a very long time but what makes the Exokernel interesting is that it doesn't try to run unmodified guests but rather runs paravirtual guests.
It's basically a very early (pretty much a full decade) predecessor to Xen.
Throughout history, people have discovered that their OS doesn't provide the right abstractions to allow some apps to take advantage of the hardware's performance potential. The traditional solution was to add features to the OS (Web server not fast enough? sendfile() to the rescue!), but the exokernel proposes the radical alternative of providing simpler, maximally flexible abstractions and letting apps (or libOSes) implement whatever behavior they want.