- One set of operating-system services provides functions that are helpful to the user.
- User interface. Almost all OSs have a user interface (UI). Command - Line Interface (CLI). Batch Interface. Graphical User Interface (GUI).
- Program execution. The system must be able to load a program into memory and to run that program. The program must be able to end its execution, either normally or abnormally (indicating error).
- I/O operations. A running program may require I/O, which may involve a file or an I/O device.
- File-system manipulation. Programs need to read and write files and directories. They also need to create and delete them by name, search for a given file, and list file information. Finally, some programs include permissions management to allow or deny access to files or directories based on file ownership.
- Communications. There are many circumstances in which one process needs to exchange information with another process. Communications may be implemented via shared memory or through message passing, in which packets of information are moved between processes by the OS.
- Error detection. The OS needs to be constantly aware of possible errors. Errors may occur in the CPU and memory hardware (such as a memory error or a power failure), in I/O devices (such as a parity error on tape, a connection failure on a network, or lack of paper in the printer), and in the user program (such as an arithmetic overflow, an attempt to access an illegal memory location, or a too-great use of CPU time). For each type of error, the OS should take the appropriate action to ensure correct and consistent computing.
- Another set of operating-system functions exists not for helping the user but rather for ensuring the efficient operation of the system itself.
- Resource allocation. When there are multiple users or multiple jobs running at the same time, resources must be allocated to each of them. Many different types of resources are managed by the OS.
- Accounting. We want to keep track of which users use how much and what kinds of computer resources.
- Protection and security. When several separate processes execute concurrently, it should not be possible for one process to interfere with the others or with the OS itself. Protection involves ensuring that all access to system resources is controlled.