> 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.
Machine and abstract machine are both overloaded terms. If the set of system calls is considered the “ops” for your OS “machine”, characterizing it as an abstract machine is not incorrect.
Isn't that kind of like saying a collection of function prototypes or HTTP query strings define an abstract machine? It doesn't, the "machine" is already defined and the API is already working within it - it's just the rules/ABI you need to follow to marshal data to and from code on another side.
5 comments
[ 3.0 ms ] story [ 22.3 ms ] threadUnless 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.
No ... it's just an interface. Just the way for usermode code to request or call something on the kernel side.
"Abstract machine" is a concept more having to do with virtual machines, runtimes, bytecode/JIT compilation.