IV. L’NCP - Struttura generale
Consideriamo l’NCP come composto da cinque programmi componenti, diverse tabelle associative e alcune code e buffer.
I programmi componenti (vedi Fig. 4.1)
1. Il gestore dell’input
Si tratta di una routine guidata da interrupt. Avvia la trasmissione dall’IMP all’host verso un buffer residente e risveglia l’interprete di input quando la trasmissione è completata.
2. Il gestore dell’output
Si tratta di una routine di output guidata da interrupt. Avvia la trasmissione dall’host all’IMP da un buffer residente e risveglia lo scheduler dell’output quando la trasmissione è completata.
3. L’interprete di input
Questo programma stabilisce se l’input è un messaggio ordinario destinato a un utente, un messaggio di controllo di rete, un messaggio dall’IMP all’host oppure un errore. Per ciascuna classe di messaggio questo programma invoca una subroutine che intraprende l’azione appropriata.
4. Lo scheduler dell’output
All’IMP vengono inviate tre classi di messaggi
- (a) Messaggi dall’host all’IMP
- (b) Messaggi di controllo
- (c) Messaggi ordinari
Riteniamo che tra queste classi debba essere imposta una priorità. La priorità che suggeriamo è l’ordine indicato sopra. Lo scheduler dell’output seleziona il messaggio con la priorità più alta e lo passa al gestore dell’output.
I messaggi dall’host all’IMP vengono elaborati in ordine di arrivo. I messaggi di controllo vengono elaborati singolarmente per host, servendo ogni host a turno. È prevista una coda dei messaggi di controllo per ciascun host remoto. Quando un determinato host viene schedulato per l’output, tutti i comandi di controllo per quell’host che possono starci vengono concatenati in un unico messaggio. I messaggi ordinari vengono elaborati a gruppi per host e link, servendo a turno ogni combinazione distinta.
5. L’interprete delle chiamate di sistema
Questo programma interpreta le richieste dell’utente. A ogni chiamata di sistema corrisponde una routine che intraprende l’azione appropriata.
I due componenti interessanti sono l’interprete di input e l’interprete delle chiamate di sistema. Sono simili nel senso che l’interprete di input serve le richieste remote e l’interprete delle chiamate di sistema serve le richieste locali.
Il diagramma della Figura 4.1 rappresenta la nostra concezione del Network Control Program. Gli oggetti molli simili ad amebe rappresentano i programmi componenti, i cilindri rappresentano le code e le frecce rappresentano i percorsi dei dati. In questo diagramma semplificato le tabelle non sono mostrate. [Gli oggetti "simili ad amebe" del disegno a mano originale sono ora riquadri rettangolari rigidi: N.d.R.]
Le etichette abbreviate nella figura hanno i seguenti significati:
- HIQ: Coda dall’host all’IMP
- OCCQ: Coda dei comandi di controllo in output
- DQ: Coda dei dati
- IHBUF: Buffer del gestore dell’input
- OHBUF: Buffer del gestore dell’output
____________
| USER | STRUCTURE OF THE NETWORK CONTROL PROGRAM
|____________|
^ | Fig. 4.1
_____|______V____
| |
| System |
| Call |
| Interpreter |
|_________________| _____________
^ | | | |
| | | +---------------| Input |
| | | | +-----| Interpreter |
| | | | | | |
| V V V V -------------
|======| |=========| |=======| | ^
| D Q | | O C C Q | | H I Q | | |
|======| |=========| |=======| | |
| ^ | | | |
| | | | | |
| +--------)----------)---------+ |
| | | |
+-------+ | +------+ |
__V___V___V__ |
| | |
| Output | |
| Scheduler | |
|_____________| |
| |
V |
(===========) (===========)
( O H B U F ) ( I H B U F )
(===========) (===========)
| ^
______V______ ______|______
| | | |
| Output | | Input |
| Handler | | Handler |
| | | |
------------- -------------
| ^
| |
+----------+ +-----------+
| |
____V____|____
| |
| I M P |
|______________|