Buffering
In order to avoid inefficiencies associated with direct transfer from user-process to IO device, buffering schemes can be used.
Buffering smoothes out the peaks in IO demand.
Buffering depends on the type of IO device: Block-oriented (Ex: disks) and Stream-oriented (terminal, comm. ports).
Stream-oriented IO: single buffering;
Block-oriented Devices: double buffer, circular buffer