- In general, we have no completely adequate definition of an OS.
- The fundamental goal of computer systems is to execute user programs and to make solving user problems easier.
- Since bare hardware alone is not particularly easy to use, application programs are developed. These programs require certain common operations, such as those controlling the I/O devices.
- The common functions of controlling and allocating resources are then brought together into one piece of software: the OS.
- In addition, we have no universally accepted definition of what is part of the OS. A more
common definition is that the OS is the one program running at all times on the computer (usually called the kernel), with all else being systems programs and application programs.
- OS cannot help all the people all the time, but it should help most of the people most of the time.
- What mechanisms?
- What policies?
- Challenges: Desired functionalities of OS depend on outside factors like users' & application's ``Expectations'' and ``Technology changes'' in Computer Architecture (hardware). OS must adapt:
- change abstractions provided to users,
- change algorithms to change these abstractions,
- change low-level implementation to deal with hardware.
- The current OSs are driven by such evolutions.