III. Chiamate di sistema
Queste sono chiamate di sistema tipiche che un processo utente potrebbe eseguire.
Usiamo la notazione
SYSCALL (ARG1, ARG2....)
dove SYSCALL è il nome della chiamata di sistema e ARGk, ecc. sono i parametri della chiamata di sistema.
CONNECT (P, AEN, FS, CR)
- P: specifica una porta del processo
- AEN: specifica un socket locale; il numero utente e l’host sono impliciti
- FS: specifica un socket con qualsiasi numero utente su qualsiasi host e con qualsiasi AEN
- CR: il codice di condizione restituito
CONNECT tenta di collegare il socket locale specificato da AEN alla porta P e di avviare una connessione con uno specifico socket remoto, FS. I valori possibili di CR sono:
- CR=OK: La CONNECT era legale e il socket FS viene contattato. Quando la connessione sarà stabilita o rifiutata, lo stato verrà aggiornato.
- CR = BUSY: Il socket locale è in uso (sequenza di comandi illegale).
- CR = BADSKT: La specifica del socket era illegale.
- CR = NOROOM: Le risorse dell’host locale sono esaurite.
- CR = HOMOSEX: Coppia invio/ricezione errata
- CR = IMP DEAD: Il nostro IMP è fuori servizio
- CR = LINK DEAD: Il link verso l’host remoto è fuori servizio perché: 1. l’IMP remoto è fuori servizio, 2. l’host remoto è fuori servizio, oppure 3. l’NCP remoto non risponde.
LISTEN (P, AEN, CR)
- P: specifica una porta del processo
- AEN: specifica un socket locale
- CR: il codice di condizione restituito
Il socket locale specificato da AEN viene collegato alla porta P. Se c’è una chiamata in sospeso, viene elaborata; altrimenti non viene intrapresa alcuna azione. Quando arriva una chiamata, l’utente viene avvisato. Dopo aver esaminato la chiamata, può accettarla o rifiutarla. I valori possibili di CR sono:
- CR = OK: Connessione avviata, in ascolto
- CR = BUSY
- CR = NOROOM
- CR = IMP DEAD
- CR = LINK DEAD
ACCEPT (P, CR)
- P: specifica una porta del processo
- CR: il codice di condizione restituito
Accept implica che il processo utente ha esaminato il socket remoto per determinare chi sta chiamando e accetterà la chiamata. (Nota: un’alternativa interessante definisce ACCEPT come condizione predefinita implicita. In tal modo qualsiasi RFC in arrivo soddisfa automaticamente una LISTEN.) I valori possibili di CR sono:
- CR = BADSKT
- CR = NOROOM
- CR = IMP DEAD
- CR = LINK DEAD
- CR = BADCOMM: Sequenza di comandi illegale. (Ad es. Accept emessa prima di una LISTEN.
- CR = PREMCLS: L’utente remoto ha interrotto la connessione dopo che l’RFC era stata ricevuta localmente ma prima che Accept fosse eseguita.
TRANSMIT (P, BUFF, BITSRQST, BITSACC, CR)
- P: specifica una porta del processo
- BUFF: specifica il buffer di testo da trasmettere
- BITSRQST: specifica la lunghezza da trasmettere in bit
- BITSACC: restituisce il numero di bit effettivamente trasmessi
- CR: il codice di condizione restituito
Avviene la trasmissione. I valori possibili di CR sono:
- CR = OK
- CR = IMP DEAD
- CR = LINK DEAD
- CR = NOT OPEN: La connessione non è aperta (sequenza di comandi illegale).
- CR = BAD BOUND: BITSRQST fuori dai limiti (ad es. per un socket di ricezione BUFF era più corto di quanto indicato da BITSRQST).
INT (P, CR)
- P: specifica il socket locale di questo processo
- CR: il codice di condizione restituito
Il processo dall’altro lato (remoto) di questa porta deve essere interrotto. I valori possibili di CR sono:
- CR = OK
- CR = BADSKT
- CR = BADCOMM
- CR = IMP DEAD
- CR = LINK DEAD
STATUS (P, RTAB, CR)
- P: specifica una porta di questo processo
- RTAB: la voce della tabella di rendezvous restituita
- CR: il codice di condizione restituito
I campi rilevanti della voce della tabella di rendezvous associata a questa porta vengono restituiti in RTAB. Questo è il meccanismo che un processo utente impiega per monitorare lo stato di una connessione. I valori possibili di CR sono:
- CR = OK
- CR = BADSKT
CLOSE (P, CR)
- P: specifica una porta di questo processo
- CR: il codice di condizione restituito
L’attività sulla connessione collegata a questa porta si arresta, la connessione viene interrotta e la porta diventa libera per altri usi. I valori possibili di CR sono:
- CR = OK
- CR = BADSKT
- CR = BADCOMM
- CR = IMP DEAD
- CR = LINK DEAD