What is the difference between multiprogramming and multiprocessing?
multiprogramming: multiple programs resident in memory at any one time. multiprocessing: multiple processors available at any one time difference: one refers to programs in memory, the other to CPUs Processes are necessary for multiprogramming as they provide a mechanism for OSes to encapsulate resources needed for a running program, monitor resource usage of those running programs, switch from a program blocked on an I/O to another which is able to use the CPU, create/suspend/destroy processes, etc. What is a deadlock? A deadlock is a situation in which two computer programs sharing the same resource are effectively preventing each other from accessing the resource, resulting in both programs ceasing to function. The earliest computer operating systems ran only one program at a time. All of the resources of the system were available to this one program. Later, operating systems ran multiple programs at once, interleaving them. Programs were required to specify in advance what resource