Większość tradycyjnych mechanizmów komunikacji sieciowej wymaga z reguły przynajmniej jednokrotnego kopiowania wysyłanych i odbieranych danych. Po pierwsze dzieje się tak dlatego, że zwykle protokoły sieciowe wymagają doklejenia przed danymi (i ewentualnie po) informacji kontrolnych, właściwych dla protokołu transmisji (adresat, rozmiar danych itp.), a większość kart sieciowych wymaga, aby przesyłane dane znajdowały się w ciągłym obszarze pamięci fizycznej. Po drugie, sam użytkownik może wymagać, aby wysłanie bądź odebranie danych odbywało się w sposób rozproszony, tj. z i do nieciągłego obszaru pamięci wirtualnej. Po trzecie, typowa semantyka interfejsów komunikacyjnych narzuca kopiowanie dla zwiększonej efektywności -- zazwyczaj po wykonaniu operacji wysłania danych użytkownik ma prawo zmodyfikować bądź zniszczyć bufor z danymi. Czekanie na ich faktyczne wysłanie mogłoby trwać za długo, więc lepiej aby proces użytkownika dane skopiował i w międzyczasie zajął się czym innym.
VIA rozwiązuje pierwsze dwa problemy przez mechanizm rozproszonego wysyłania i odbierania danych (ang. scatter-gather). Trzeci problem rozwiązywany jest dzięki temu, że operacja wysyłania danych działa asynchronicznie. Szczegółowo opisano to w paragrafach
2.3.1 oraz 2.4.
Grzegorz Całkowski
2001-02-28