Cabe señalar que al principio del hardware (antes de 1960), la E / S era mucho más simple. Puede leer una tarjeta, perforar una tarjeta o imprimir una línea en la impresora, cada una con una sola instrucción: el tamaño del búfer fue fijo y, a menudo, la dirección del búfer también.
Incluso a principios de los años 60, con procesadores más sofisticados (por ejemplo, el 7090), aún podía leer o perforar tarjetas con una pequeña rutina (aproximadamente 20 instrucciones), que se copiaba fácilmente en cada programa.
Dado que la computadora estaba completamente dedicada a un solo trabajo, no importaba si el procesador estaba inactivo mientras esperaba que el lector de tarjetas estuviera listo para leer la próxima tarjeta, o que la impresora de línea alimentara la siguiente línea.
Bueno, sí importaba, porque el tiempo de computación era realmente costoso. Esta es la razón por la cual las personas inventaron el procesamiento múltiple, el tiempo compartido, las E / S asíncronas agregadas, las interrupciones, los controladores de dispositivos y los sistemas operativos. Las interfaces del dispositivo de hardware se volvieron más complejas, para el programador, dando acceso a registros de E / S de nivel inferior, lo que requería más complejidad de los controladores del dispositivo. Este costo de complejidad (memoria, tiempo de programación) se amortizó en varios programas utilizando los dispositivos "simultáneamente", multiplexados por el sistema operativo.
Todavía en los años 80 estaba usando una computadora basada en un microprocesador, emulando uno de esos sistemas más antiguos. Las instrucciones de la máquina tenían un formato uniforme de más de 80 bits (10 octetos), y la instrucción para leer el primer sector del primer disco duro y almacenarlo en la memoria en la dirección 0 era muy conveniente: 0000000000. Por lo tanto, el procedimiento de arranque consistía todas las mañanas para escribir esta instrucción en el terminal, que la almacenó en la dirección 0 y la ejecutó, que luego cargó el sector de arranque y continuó la ejecución en la siguiente instrucción (en la dirección 10). El sistema de archivos consistía en una tabla estática que asignaba "nombres" de archivos a rangos de sectores, que se asignaban manualmente. La E / S se realizó en ensamblador de esos archivos leyendo o escribiendo directamente los sectores, compensados por la posición del archivo en el disco duro que fue recuperado por el "