A programming interface that allows data to pass from one process to another, where those processes are generally running on the same computer. Shared memory between processes is used to facilitate this.