In Operating Systems, What is the difference between Application Programs and System Programs? Also, what are examples of each?
There aren't hard and fast definitions for this, but here's the basic idea.
A "system program" is a user program (i.e. it does not have kernel privileges) that manages some aspect of the operating system or operating environment. It typically comes installed with the operating system and cannot be uninstalled. It is typically started by the system, and not as the result of a user interaction. It may or may not have a user interface.
Some examples include:
- A login program. On a multi-user operating system, there needs to be some way to log in. This could be a command-line program or a GUI program, but it's still a program.
- A shell. The term "shell" originally referred to the command-line, but can also refer to the part of the graphical user interface that exposes the file system (e.g. Windows Explorer). All of these are programs.
- A service manager. System services need to be started and stopped, possibly as required, and there is typically a program to perform this housekeeping task. Some examples SvcHost in Windows, launchd in macOS, and systemd in Linux.
- Parts of the GUI operating environment, such as the window manager, or system widgets such as the display settings or system volume control.
An "application program", on the other hand, is a program that is user-installable and typically corresponds to a task to which the operating system is "applied". An application program is typically explicitly started by the user, and stops when the user exits the program.
- Word processor, spreadsheet, etc.
There is a fuzzy line between them; some operating environments require a web browser to function, for example.