The term waste is misleading as used above. It says that running the same program on two machines gives different timings, and all other things being equal, we would prefer the faster machine. Of course, things really aren't equal, because multiprogramming can't be done on the older, faster machine unless all the addresses are rewritten, which introduces delays and problems of its own. So we use the term overhead instead of waste and mean by it the cost in performance that we have to pay in order to get the new capabilities. Overhead is also used to apply to operating systems in general. Every microsecond spent doing an instruction in the OS code is one that could have been spent doing user code, or so one might think. However, it is impossible to imagine living without the services of the operating system anymore so we have to be willing to let it run some of the time. Moreover, the OS lets several programs use the overall system, including CPU, main memory, I/O controllers and I/O devices, much more efficiently than just one program could. Again, we are willing to live with a certain overhead because the alternative is to go back to the dark ages of computing and batch processing. |