Input and output, as the process names suggest is the data communication going in and out of a machine. More specifically, input is the name given to digital signals and data incoming, while output is the outgoing data. The process of input/output involves input/output operations.
Some examples of input/output devices:
- mouse - human input to a computer
- keyboard - human input to a computer
- monitor - computer output to a human
- speakers - computer output to a human
- modem - computer-computer input and output
- network cards - computer-computer input and output
Of course, these definitions are relative - from the human's perspective, the mouse and keyboard are their output devices where their ideas are turned into digital signals for the computer, while the monitor and speakers do the reverse to give them input from the computer. As an industry standard, however, these devices' direction of data communication is looked at from the computer's point of view; more specifically, the CPU and main memory that make up it's 'brain'. The field of study that covers these philosophical and technical differences is known as the study of human-computer interaction.
Input and output handling must be considered carefully when designing a computer. It is used explicitly in low-level programming, where it is memory-mapped for convenience by the CPU and supporting circuitry. A good algorithm for input/output must exploit locality in its design and function efficiently even when the data it seeks is being held in secondary storage.