Czym jest VIA?

Na to dość podstawowe pytanie nie jest łatwo odpowiedzieć, gdyż teoria rozmija się nieco z praktyką. Oficjalna specyfikacja VIA [14] definiuje VIA jako architekturę interfejsu pomiędzy wydajną siecią (sprzętem) a systemem komputerowym. W specyfikacji opisano:

Następujące kwestie wykraczają natomiast poza zakres specyfikacji VI:

Jednak w praktyce w zakres standardu wszedł wspomniany przykładowy interfejs programisty, szczegółowiej zdefiniowany w [12]. Interfejs zaprojektowano tak, aby możliwa była efektywna implementacja sprzętu i oprogramowania. Plotka głosi, że Microsoft nie chciał się zgodzić na standaryzację interfejsu programisty, wierząc w możliwość wykorzystania standardowych interfejsów jak np. gniazda. Miałoby to pewne zalety, jednak semantyka i konstrukcja interfejsu gniazd nie spełnia podstawowych dla VI założeń, opisanych w następnym paragrafie.

Zdaniem autora dobrze się stało, że standard obejmuje także interfejs programisty. Tylko w takiej sytuacji, z punktu widzenia użytkownika-programisty, VIA ma jakąkolwiek wartość jako standard -- inaczej jest to tylko opis koncepcji. Daje to oczywiście możliwość łatwego przenoszenia oprogramowania wykorzystującego VIA pomiędzy różnymi systemami operacyjnymi. O ile systemy klastrowe rzadko są wewnętrznie heterogeniczne, to z takiego systemu mogą korzystać klienci pracujący na różnym sprzęcie pod kontrolą różnych systemów operacyjnych. Doskonałym przykładem jest opisany w rozdziale 3 system ISS, z serwerów którego korzystać mogą zarówno klienci pracujący pod kontrolą Windows, jak i Linuksa. Niestety, przypuszczalnie z uwagi na ową przykładowość interfejsu, kilka spraw nie zostało do końca przemyślanych. Choć dość czytelny i elegancki, ma on kilka bardzo poważnych wad, które zostaną opisane w dalszej części rozdziału.

Do uznania VIA za standard niewątpliwie przyczyniło się dostarczenie przez Intel dokumentacji wzorcowej implementacji VIA wraz z kompleksowym zestawem testów sprawdzających zgodność implementacji VIA ze specyfikacją interfejsu programisty. Testy te pogrupowane są w trzy kategorie: wczesnej adaptacji, zgodności funkcjonalnej oraz zgodności pełnej, umożliwiając testowanie tworzonej implementacji VIA na poszczególnych etapach jej powstawania. Testy dotyczą podstawowej semantyki operacji, zarządzania zasobami, prawidłowej obsługi stanów wyjątkowych, wykrywania nieprawidłowych parametrów funkcji, obciążenia sieci itp.


Grzegorz Całkowski 2001-02-28