abstracting out the standard input and output to predictible interfaces to be used by programs and the OS itself