Para un disco leído, el flujo de datos es esencialmente:
- después de que el ensamblaje de lectura / escritura esté en el cilindro solicitado, se selecciona la cabeza de r / w solicitada.
- en cada sector, se lee la ID del sector. Si el número de sector que se leyó coincide con el número de sector solicitado, se leen los datos del sector.
- los datos del sector se leen como una secuencia de bits en serie y se convierten en bytes.
- los bytes del sector se almacenan en un búfer de sector (generalmente SRAM en el controlador); Este búfer de sector es distinto del "caché de disco".
- Una vez que se ha leído todo el sector, los datos se validan mediante ECC y quizás se corrigen.
- una vez validado, los datos del sector se transfieren desde el controlador a la PC host. Nota: la existencia de este búfer de sector no se conoce bien, y existe una información errónea generalizada de que la velocidad de transferencia en la interfaz del host (p. Ej. ,ATA) está vinculada o limitada por la velocidad de bits en el cabezal R / W. Eso es completamente falso, ya que estas dos transferencias de datos son operaciones independientes y secuenciales y no concurrentes.
- A medida que la PC recibe los datos del controlador de disco a través de la interfaz ATA, la PC puede usar E / S programadas (la CPU lee repetidamente el registro de datos del puerto ATA y copia el valor en la memoria de destino) o DMA (el controlador DMA es configuración para copiar N bytes del registro de datos del puerto ATA a un búfer de memoria sin intervención adicional de la CPU).
- el "búfer" de memoria de la PC que recibe los datos podría ser el búfer de la aplicación (cuando se usa la llamada al sistema de E / S en bloque ), o podría ser un búfer interno del sistema bajo el control del sistema de archivos, o incluso la memoria de programa o datos si los datos provienen del intercambio área (o archivo de página).
Una escritura en el disco es similar, excepto que los datos se transfieren desde la PC al controlador de disco, se calcula el ECC, se localiza el sector solicitado y luego los datos se escriben desde el búfer del sector en el plato.
Para crédito extra:
Lea sobre las transferencias de " dispersión-recopilación ", que utiliza el encadenamiento DMA y una lista de dispersión-recopilación de direcciones de memoria y longitudes de búfer. En lugar de un búfer de memoria contiguo grande, una transferencia de "dispersión-reunión" permite agregar búferes de memoria no contiguos para la solicitud de E / S de disco.