> The OS hides the details of the hardware and provides an abstraction for user code.
Unless it's an exokernel based OS, which goes out of its way to not abstract the hardware as much as possible, but to simply safely multiplex the hardware. The thought being that user space libraries will do a better job with abstractions that actually assist the applications.