The One with the Operating System Tango
Working with Operating System Services
Computers are complex machines. They can have many different forms, different peripherals, and different functions. Yet, a lot of different machines can run the same software. As long as the hardware fits in a pretty broad set of boundaries (for instance, running a specific CPU architecture), your software does not care what the underlying machine looks like.
The reason this all works is that we have abstraction. You hardly ever deal with the actual hardware. There are always layers of software to go through, each layer adding a level of abstraction. That sounds complicated, but it is a good thing. Without this, we would have to rewrite our software for all possible combinations of hardware. Imagine a user swapping out an old-style hard drive with spinning discs for a more modern, faster SSD. Then, they have to come to you so you can recompile your system to accommodate that. I am sure you do not want...