A+: Operating Systems Intro
The operating system, or 'OS', communicates with PC hardware so users can give input & get output. It provides standardized disk and file management, access to devices, manages memory and formats the output from the system to display, storage and printing devices. Some tasks a computer does are used so often that it makes sense to move those tasks into the OS so the application developer does not need to duplicate the efforts of other developers.
Driver software tells the OS how to control and work with specific hardware. Again, offloading the development of drivers, like the development of the OS, away from the application, allows quicker development of programs, as well as greater diversity and faster innovation in computer peripheral development.
Applications supplement the commands within the OS to do jobs not built in to the OS.
Software, whether a driver, an application or the OS, has a version number, so the administrator or user can see which version of a program is on hand, so they can be assured what that program can do.
Programs are almost always written in a high-level 'language', which has a grammar and a syntax which allows programmers to more efficiently develop the program. The text in that language for the program can either be available to anyone, in which case it is 'open' source, and can be reviewed for errors and security risks, or unavailable, 'closed' or 'proprietary', in which case only the programmer knows completely what the program can do and how it works. CP/M, AppleDOS, PC-DOS, MS-DOS, Windows and MacOS are closed source; Linux and FreeDOS are open source.
Originally, business computer programs only used a keyboard for input, with every command hand typed or replayed from storage media (punch cards, paper tape or magnetic tape) but an important innovation was the 'shell' program which allows not only a menu to pick commands from but also, later, the use of a GUI, or Graphic User Interface, where a pointing device such as a mouse and a point-and-click interface can be used to select commands instead of typing the commands.