portability
The fact that operating systems shield applications with the hardware information, made me realize why software can be executed in a large variety of machines. The abstraction enables the developers to specialize in the functionality rather than hardware details. In its absence the application development would be far more complex and less portable.