IX. Algoritmi per l’interprete delle chiamate di sistema
Viene discussa ciascuna chiamata di sistema, indicando i cambiamenti di stato che può provocare:
CONNECT
Se non esiste alcuna voce, crearne una, emettere una RFC ed entrare nello stato RFC-SENT.
Se CS = PENDING, esaminare la coda e rifiutare tutte le richieste non corrispondenti. Se non viene trovata alcuna corrispondenza, emettere una RFC ed entrare nello stato RFC-SENT. Se viene trovata una corrispondenza, emettere una RFC ed entrare nello stato OPEN. La trasmissione può iniziare non appena è stato allocato spazio di buffer.
In qualsiasi altro stato questo comando è illegale.
LISTEN
Se non esiste una voce, crearne una ed entrare nello stato LISTENING.
Se CS = PENDING, informare l’utente ed entrare nello stato RFC-RCVD.
In qualsiasi altro stato questo comando è illegale.
ACCEPT
Se CS = RFC-RCVD, emettere una RFC ed entrare nello stato OPEN. La trasmissione dei dati può avvenire non appena viene allocato spazio di buffer.
Se CS = ABORT, informare l’utente della terminazione prematura della connessione. Se la coda delle chiamate in sospeso è vuota, cancellare la voce; altrimenti entrare nello stato PENDING.
Questo comando non può essere eseguito legalmente in nessun altro stato.
CLOSE
Se CS =
- LISTENING, cancellare la voce.
- RFC-RCVD, emettere un CLS ed entrare nello stato CLS-WAIT.
- ABORT, informare l’utente della terminazione prematura della connessione. Se la coda delle chiamate in sospeso è vuota, cancellare la voce; altrimenti entrare nello stato PENDING.
- RFC-SENT, emettere un CLS ed entrare nello stato CLS-WAIT.
- OPEN, se siamo sul lato di invio e la coda dei dati non è vuota, oppure se un Data-RFNM è ancora in sospeso, entrare nello stato DATA-WAIT; altrimenti emettere un CLS ed entrare nello stato CLS-WAIT.
- CLS-WAIT, emettere una CLOSE in questo stato è un USER ERROR.
- DATA-WAIT, anche emettere una CLOSE in questo stato è una sequenza illegale.
- RFNM-WAIT, ignorare la CLOSE.
Una CLOSE valida non può essere emessa se non esiste una voce, o se un socket è nello stato PENDING.
Nota: undefined