Passa al contenuto principale

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