Input/output: Algorithms and Architectures