¿Cuál es el significado de solicitudes síncronas y asíncronas en el programador de E / S Kyber de Linux?

Aug 20 2020

Mientras estudiaba programadores de E / S, leí algunos documentos para programadores de E / S en el kernel de Linux. Especialmente para Kyber Scheduler, hay algunas cosas confusas. En los artículos del siguiente enlace (https://lwn.net/Articles/720675/), Kyber Scheduler tiene dos colas principales, una para solicitudes sincrónicas y otra para solicitudes asincrónicas. En ese artículo, dice

Un proceso que emite una solicitud de lectura generalmente no puede continuar hasta que esa solicitud se completa y los datos están disponibles, por lo que dichas solicitudes se consideran sincrónicas.

Pensé que las solicitudes sincrónicas y asincrónicas dependen de la CPU y el controlador del dispositivo, no de los tipos de operaciones de E / S.

¿Alguna idea para esta pregunta?

Respuestas

1 telcoM Aug 20 2020 at 20:55

Eso sería más como "conceptualmente sincrónico", o tal vez "sincrónico en un nivel de abstracción más alto que el que estaba pensando". Un programa lee datos para procesarlos de alguna manera, por lo que hasta que obtenga esos datos, no puede realizar el procesamiento: por lo que la lectura debe ser una operación sincrónica.

Las solicitudes de escritura, por otro lado, se pueden aplazar, siempre que otras operaciones "vean" los datos como equivalentes a los escritos en el destino final. En otras palabras, cualquier operación de lectura debe verificar primero si existe una versión modificada de los datos que están a punto de leer en el caché de escritura y, de ser así, "leer" del caché.