I know these are idle questions, but I'll try to give them a serious answer because I have some time to kill while I'm installing this new, er..., ahem...
1) Inkjet printers now come with enormous bloat to help sell the vendors other products. They can give away a printer if you just keep on buying their inks, so they want to give you an application that measures the ink levels. Then there's other printer applications, like scanning, copying, networking.
In short, the small price of a printer is subsidized by this bloat.
You probably can just plug in the printer and let the system install it with whatever it finds and it will work just fine.
2) The printer spooling subsystem is enormously complicated. A printer is now part of the network and has it's own accounts and resource managers. It doesn't like to be stopped or interfered with and it takes a while to resynchronize resources.
3) Killing a process involved killing perhaps many threads. Each thread has a life of it's own and sometimes has to wait for other things to timeout. Then things have to be flushed to disk and the disk logs flushed, etc.
4) A reboot is required after an install because some of the files are in use when a program is uninstalled. While they are in use they can't be deleted. The restart is needed to delete the files when they are no longer needed. Then the new files get used for the first time after that restart, so a second restart may be needed to start up the application with all its new-new files.
5) I don't understand that question
Single user systems back in the good old days of DOS had applications that could totally control every part of the system. Now everything is shared and there are countless layers from GUI to kernel and several privilege rings in the CPU execution unit.
Here is an interest experiment. Look up Process Monitor from Sysinternals Suite and run it then load a simple application like Notepad. Open a file. Look at the stream of stuff in Procmon that has to be done just to find the file directory.
Or look at an old web site source code and then something from Google... Things are just getting extremely complicated so that they can appear to be simple for us dummies. No one should have to learn assembly debugging anymore, just as no one should have to know how to take apart a car.
Look at the simple LED lights now - they have a class D switching supply in them that can run on just about any voltage and current source in the world. This simplicity of operation requires enormous engineering complexity.
post edited by arachnaut - 2012/04/25 12:54:59