This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Computers: Information Technology in PerspectiveBy Long and Long
colset BIT = int with 0..1;colset BIT = int with 0..1; colset DATA = string;colset DATA = string; colset INTxDATAxBIT= product INT * colset INTxDATAxBIT= product INT *
DATA * BIT;DATA * BIT; colset INTxDATA = product INT * colset INTxDATA = product INT *
DATA;DATA; colset INTxBIT = product INT * BIT;colset INTxBIT = product INT * BIT; var n : INT;var n : INT; var p,str : DATA;var p,str : DATA; var b, k : BIT;var b, k : BIT; val stop = "########";val stop = "########";
ΤΥΠΟΙ (ΤΥΠΟΙ (COLOR SETS)COLOR SETS)
QuitQuit
colset msglist = list INTxDATAxBIT;colset msglist = list INTxDATAxBIT;
colset bitlist = list BIT;colset bitlist = list BIT;
var seq, seq2 : msglist;var seq, seq2 : msglist;
var ackseq, ackseq2 : bitlist;var ackseq, ackseq2 : bitlist;
ΤΥΠΟΙ (ΤΥΠΟΙ (COLOR SETS)COLOR SETS)ΛΙΣΤΕΣΛΙΣΤΕΣ
QuitQuit
TOPTOP
Ο αποστολέας στέλνει το
μήνυμα μαζί με το bit ελέγχου
Το μήνυμα + bit προωθείται μέσω του
καναλιού στον παραλήπτη
Ο παραλήπτης λαμβάνει το μήνυμα και στέλνει την
επιβεβαίωση (bit)
Η επιβεβαίωση προωθείται μέσω του
καναλιού στον αποστολέα
QuitQuit
SENDERSENDER
Αρχικό μήνυμα
Προώθηση μηνύματος & bit ελέγχου
Προώθηση πακέτου & bit ελέγχου
Λήψη bit επιβεβαίωσης
Προώθηση bit επιβεβαίωσης Φρουρός
Διατήρηση control bit &
θέσης επομένου πακέτου
QuitQuit
SENDERSENDER
Ένα πακέτο προστίθεται στη λίστα Ένα πακέτο προστίθεται στη λίστα seqseq μόνο αν δεν υπάρχει ήδη, για αποφυγή μόνο αν δεν υπάρχει ήδη, για αποφυγή έκρηξης χώρου καταστάσεωνέκρηξης χώρου καταστάσεων
QuitQuit
SENDERSENDER
Αν το Αν το bit bit της κεφαλής της λίστας της κεφαλής της λίστας ackseqackseq είναι το αναμενόμενο:είναι το αναμενόμενο: Αν ισούται με Αν ισούται με 00 n=n+1 n=n+1 & & k=1,k=1, Αν ισούται με ένα Αν ισούται με ένα n=n+1n=n+1 & k=0& k=0
Αλλιώς το Αλλιώς το kk & το & το n n παραμένουν ίδιαπαραμένουν ίδια
QuitQuit
SENDERSENDERΠΑΡΑΔΕΙΓΜΑΠΑΡΑΔΕΙΓΜΑ
QuitQuit
SENDERSENDERΠΑΡΑΔΕΙΓΜΑΠΑΡΑΔΕΙΓΜΑ
QuitQuit
SENDERSENDERΠΑΡΑΔΕΙΓΜΑΠΑΡΑΔΕΙΓΜΑ
QuitQuit
MESSAGE CHANNELMESSAGE CHANNEL
Προώθηση Πακέτου & Bit
Ελέγχου
ΦρουρόςΠροώθηση
Πακέτου & Bit Ελέγχου στον
Παραλήπτη
QuitQuit
colset Ten0 = int with 0..10;colset Ten0 = int with 0..10;
colset Tencolset Ten11 = int with = int with 11..10; ..10;
var s: Ten0;var s: Ten0;
var r: Ten1; var r: Ten1;
fun Ok(s:Ten0,r:Ten1) = (r<=s);fun Ok(s:Ten0,r:Ten1) = (r<=s);
MESSAGE CHANNELMESSAGE CHANNEL
QuitQuit
MESSAGE CHANNELMESSAGE CHANNEL
Αν το πακέτο δε βρίσκεται ήδη στη λίστα Αν το πακέτο δε βρίσκεται ήδη στη λίστα seqseq2 των πακέτων που προωθούνται στον 2 των πακέτων που προωθούνται στον παραλήπτη & η συνάρτηση ΟΚ είναι παραλήπτη & η συνάρτηση ΟΚ είναι αληθής, τότε προστίθεται στη λίστααληθής, τότε προστίθεται στη λίστα
Διαφορετικά η Διαφορετικά η seq2seq2 παραμένει ως έχει παραμένει ως έχει
Αν το bit που περιέχει το πρώτο στοιχείο της λίστας (κεφαλή) είναι το αναμενόμενο και το μήνυμα δεν περιέχει τη μεταβλητή τέλους, τότε το μήνυμα προστίθεται στη μέχρι τώρα ληφθείσα ακολουθία
QuitQuit
RECEIVER
Αν το bit της κεφαλής της λίστας είναι το αναμενόμενο: Αν ισούται με μηδέν k=1 Αν ισούται με ένα k=0
Αλλιώς το k παραμένει ίδιο
QuitQuit
RECEIVER
Αν το bit της κεφαλής της λίστας είναι το αναμενόμενο και (δεν είναι το ίδιο με το τελευταίο στοιχείο της λίστας ackseq ή η λίστα ackseq είναι κενή) προστίθεται στη λίστα επιβεβαίωσης ackseq
QuitQuit
RECEIVER
Αν το bit της κεφαλής της λίστας δεν είναι το αναμενόμενο προστίθεται στη λίστα ackseq η προηγούμενη επιβεβαίωση αν δεν είναι ίδια με το τελευταίο στοιχείο της ackseq ή η ackseq είναι κενή
QuitQuit
RECEIVER
Διαφορετικά η λίστα επιβεβαιώσεων παραμένει ως έχει
QuitQuit
RECEIVERΠΑΡΑΔΕΙΓΜΑΠΑΡΑΔΕΙΓΜΑ
QuitQuit
RECEIVERΠΑΡΑΔΕΙΓΜΑΠΑΡΑΔΕΙΓΜΑ
QuitQuit
ACKNOWLEDGMENT CHANNEL
Προώθηση Επιβεβαίωσης
Φρουρός
Συνάρτηση OK
Προώθηση Επιβεβαίωσης
στον αποστολέα
Αν η συνάρτηση ΟΚ είναι αληθής και (η λίστα ackseq2 είναι κενή ή η επιβεβαίωση δεν είναι ίδια με το τελευταίο στοιχείο της ackseq2), τότε η ack προστίθεται σε αυτή
Διαφορετικά η ackseq2 παραμένει ως έχει
Λήψη της λίστας Επιβεβαίωσης
QuitQuit
ACKNOWLEDGMENT CHANNEL
ΠΑΡΑΔΕΙΓΜΑΠΑΡΑΔΕΙΓΜΑ
QuitQuit
ACKNOWLEDGMENT CHANNEL
ΠΑΡΑΔΕΙΓΜΑΠΑΡΑΔΕΙΓΜΑ
QuitQuit
STATISTICSSTATISTICS STATISTICSSTATISTICS
State Space State Space
Nodes: Nodes: 637637
Arcs:Arcs: 83948394
Secs:Secs: 1 1
Status:Status: FullFull Ο γράφος του χώρου καταστάσεων
αποτελείται από 637 κόμβους & 8394 τόξα
REPORTREPORT
Η κατασκευή του συνολικού γράφου γίνεται σε 1 sec
QuitQuit
STATISTICSSTATISTICS STATISTICSSTATISTICS
Scc GraphScc Graph
Nodes: Nodes: 271271
Arcs:Arcs: 47894789
Secs:Secs: 00
Ο γράφος των ισχυρά συνδεδεμένων
τμημάτων αποτελείται από 271 τμήματα & 4789 τόξα
REPORTREPORT
Η κατασκευή του γίνεται σε 0 sec
QuitQuit
STATISTICSSTATISTICS STATISTICSSTATISTICS
Τα ισχυρά συνδεδεμένα τμήματα είναι λιγότερα από τους κόμβους
REPORTREPORT
Το σύστημα έχει τουλάχιστον ένα ισχυρά συνδεδεμένο τμήμα που περιέχει περισσότερους από έναν κόμβους
Υπάρχουν μη-πεπερασμένες ακολουθίες εκτέλεσης
Δεν μπορούμε να είμαστε σίγουροι ότι το πρωτόκολλο τερματίζει