Qual è il significato di richieste sincrone e asincrone in Linux Kyber I / O Scheduler?
Mentre studiavo I / O Scheduler, ho letto alcuni documenti per I / O Scheduler nel kernel Linux. Soprattutto per Kyber Scheduler, ci sono alcune cose confuse. Negli articoli di seguito link (https://lwn.net/Articles/720675/), Kyber Scheduler ha due code principali, una per le richieste sincrone e una per le richieste asincrone. In quell'articolo, dice
Un processo che emette una richiesta di lettura in genere non è in grado di procedere fino a quando tale richiesta non viene completata e i dati sono disponibili, quindi tali richieste vengono viste come sincrone.
Pensavo che le richieste sincrone e asincrone dipendessero dalla CPU e dal driver del dispositivo, non dal tipo di operazioni di I / O.
Qualche idea per questa domanda?
Risposte
Sarebbe più come "concettualmente sincrono", o forse "sincrono a un livello di astrazione più alto di quello a cui stavi pensando". Un programma legge i dati per elaborarli in qualche modo, quindi finché non ottiene quei dati, non può eseguire l'elaborazione: quindi la lettura deve essere un'operazione sincrona.
Le richieste di scrittura, d'altra parte, possono essere differite, a condizione che altre operazioni "vedano" i dati come equivalenti a quelli scritti nella destinazione finale. In altre parole, qualsiasi operazione di lettura deve prima controllare se una versione modificata dei dati che stanno per leggere esiste nella cache di scrittura e, in caso affermativo, "leggere" invece dalla cache.