In a similar vein, operating systems provide a foundation for programs so that they can run on different types of hardware. This is important because two computers running the same operating system may have different components. This is true even for Apple computers, which tend to be less modular than other personal computers. A Macintosh from several years ago may have different processors and other hardware than a new Mac, but both models might be running the same operating system.
The operating system creates an abstract environment for programs. In a sense, the program tells the OS what it needs in order to work properly. The operating system then can take care of the requirements by allocating the physical resources available on the computer. It doesn't matter what type of hardware the computer has -- the OS handles the details.
Without this feature, software engineers would have tough choices to make. They would have to write programs for specific sets of components. If your computer's hardware didn't match that set selected by the programmers, the program might not work at all on your machine. The operating system keeps things running smoothly across multiple hardware configurations, freeing up software developers to concentrate on making the best program they can write.