is a software that has been developed to solve a particular problem for users—to perform useful work on specific tasks or to provide entertainment.
software used to solve specific problems or perform specific tasks
abstraction for the virtualization of memory   each process has a set of addresses that map to bytes  has static and dynamic components