Text anzeigen (PDF) - bei DuEPublico
Text anzeigen (PDF) - bei DuEPublico
Text anzeigen (PDF) - bei DuEPublico
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
CSMA/CD-Systeme<br />
damit Kollisionen erkannt werden können. Außerdem wird hier die Zeit berechnet, die benötigt<br />
wird, um das Signal von einem Ende des Kabels zum anderen zu senden. Weiterhin wird die<br />
Adresse dem Mediumprozeß per Signal bekanntgegeben und erst dann ist der Prozeß bereit,<br />
siehe Abbildung 6-16.<br />
Die eigentliche Paketübertragung wird durch den Empfang des Signals MADataReq initiiert,<br />
siehe Abbildung 6-17 oben links. Der MAC-Frame wird zusammengestellt und hat die Mindestlänge<br />
minframe. Wenn der Rahmen zusammengestellt ist, wird das Medium “abgehört”. Den<br />
Zustand des Mediums zeigt die Variable stat an. Nur falls diese den Wert idle zeigt, darf gesendet<br />
werden. Da die Statusmeldungen gegenüber den Nutzdaten priorisiert werden, können Statuswechsel<br />
immer sofort den Prozessen zur Kenntnis gelangen.<br />
STATE ready;<br />
INPUT MaDataReq(dest, cont, servclass);<br />
TASK trials := 1;<br />
DECISION cont < Fix(minframe);<br />
(TRUE) : TASK len := Fix(minframe + 1);<br />
(FALSE) : TASK len := cont + 192;<br />
ENDDECISION;<br />
NEXTSTATE frameassembled;<br />
STATE frameassembled;<br />
PRIORITY INPUT StatusUpdate(stat);<br />
NEXTSTATE -;<br />
PROVIDED stat = idle;<br />
OUTPUT StatusUpdate(busy) VIA MACSig1;<br />
/*## REQUEST transmit(bitnr); ##*/<br />
NEXTSTATE starttrans;<br />
STATE starttrans;<br />
PRIORITY INPUT StatusUpdate(stat);<br />
DECISION stat;<br />
(busy) : /*## REQUEST transmit(len - bitnr) ##*/;<br />
OUTPUT MACFrame(dest, src, len, cont);<br />
OUTPUT MaDataCon(transOK);<br />
NEXTSTATE ready;<br />
(collide) : TASK trials := trials + 1;<br />
DECISION trials > maxtrials;<br />
(FALSE) : TASK k := CALL minimum(trials,10),<br />
upper := CALL pow(2,k),<br />
dist := init(dist,0,upper),<br />
r := sample(dist),<br />
backofftime := FLOAT(r) * 2.0 * propagationtime;<br />
NEXTSTATE waitbackoff;<br />
(TRUE) : OUTPUT MaDataCon(ExcessiveCollisionError);<br />
NEXTSTATE ready;<br />
ENDDECISION;<br />
ENDDECISION;<br />
Abbildung 6-17 Prozeß Transmission (Fortsetzung)<br />
STATE waitbackoff /*## awake backofftime ##*/;<br />
PRIORITY INPUT StatusUpdate(stat);<br />
NEXTSTATE -;<br />
INPUT NONE;<br />
NEXTSTATE frameassembled;<br />
113