Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.WproWadzeniedoteStoWania
postępowałabłyskawicznie,infekująclawinowostacjeprzekaźnikowe.Problememoka-
załsdefektwkodziemającymusprawniaćszybkośćprzetwarzaniakomunikatów.Pro-
gramwyglądałmniejwięcejtakjaknalistingu1.1.
1while(buforodbieranychpołączeńniepustyand
buforpomocniczyniepusty)do
2
inicjalizujwskaźniknapierwszykomunikat
wbuforzepomocniczymlubbuforzepołączeń
3
pobierzkopiębufora
4
switch(komunikat)
5
case(incoming_message):
6
if(przekaźnikniedziała)then
7
if(buforzapisupusty)then
8
wyślijkomunikat“inservice”
9
else
10
break
11
endif
12
endif
13
przetwórzprzychodzącykomunikat,
ustawwskaźnikinaopcjonalneparametry
14
break
15
endswitch
16
przetwórzopcjonalneparametry
Listing1.1.ProceduraprzetwarzaniakomunikatówwoprogramowaniuAT&T
Gdydocelowyprzekaźnikodbierałdrugąspośródnadchodzącychposobiewbardzo
krótkimczasiewiadomości,mógłbjeszczezajętyprzetwarzaniempierwszej(buforza-
pisuniepustywlinii7.).Wtakimprzypadkuprogrammiałopuścićciałoinstrukcjiif(li-
nie7.–8.)iprzejśćdolinii12.,gdziekomunikatbprzetwarzany,awskaźnikimiałyb
aktualizowanewbazie.Niestety,instrukcjabreakwlinii10.powodowałaopuszczenie
ciałacałejinstrukcjiswitch-caseiprzechodziładoprzetwarzaniaparametrówopcjonal-
nych(linia16.),copowodowałonadpisywaniedanychwbazie.Oprogramowaniekory-
gującebłędywykrywałofaktnadpisaniainformacjiwbazieiwyłączałoprzekaźnik,aby
mógłzostaćzresetowany.Wszystkieprzekaźnikidziałałynatymsamymoprogramowa-
niu,dlategoresetowanieurządzeńnastępowałokaskadowo,powodującglobalnąawarię
całejsieci.
bufor(ang0buffer)urządzenielubpamięćużywanadoczasowegoprzechowy-
waniadanychkoniecznegowwynikuróżnicczasowychwprzepływiedanychlub
pojawieniasróżnejilościdanych,jakąmogąprzyjąćurządzenialubprocesyza-
angażowanewprzesyłanielubwykorzystywanietychdanych[7]
8