Passa al contenuto principale

II. Ambito dell'organizzazione software.

Il sistema si basa su due programmi principali: il programma Handler, che pilota l'unità hardware di canale, e il programma Network, che esegue le richieste di trasmissione dell'utente.

Poiché la comunicazione è full duplex, ciascuno di questi programmi può essere visto come diviso in due parti: una si occupa dei dati in uscita, l'altra di quelli in entrata. (Vedi Fig. 1)

Questi due programmi si scambiano dati attraverso un pool di buffer e informazioni logiche attraverso una tabella di interfaccia.

Nel seguito ci concentriamo solo sulla parte in uscita di ciascun programma (Vedi Fig. 2). La parte in entrata sarebbe molto simile.

II-1. Il programma di rete.​

II-1-1. Funzione di multiplazione.​

Questo programma multipla i messaggi in uscita (e distribuisce i messaggi in entrata). La multiplazione consiste nell'accodare tutte le richieste dell'utente (o del chiamante, o della parte) e nel riempire il pool di buffer in modo da tenere occupato l'handler nell'emissione.

La multiplazione (e la distribuzione) si basa sui numeri di identificazione del link. (Link = connessione logica tra due utenti). Il problema della multiplazione è strettamente legato all'interfaccia tra il programma di un utente e il programma di rete, che è in realtà...(unreadable) sistema operativo (Vedi oltre: Domande).

II-1-2. Elaborazione dei messaggi in uscita.​

Quando il programma di un utente vuole inviare del testo, deve indicare le seguenti informazioni (tramite una macro, o come parametri di chiamata): posizione del testo, lunghezza del testo in byte e destinazione.

Utilizzando questi dati, il programma Network:

  • prepara un'intestazione Host a 16 bit (1 bit: traccia, 2 bit: riservati, 8 bit: numero di identificazione del link, 5 bit: host di destinazione)

  • inserisce una marcatura di 16 bit tra l'intestazione e il testo in modo da far iniziare il testo su un confine di parola. Questa marcatura è costituita da un uno che precede il primo bit del testo e che è a sua volta preceduto da quindici zeri per riempire lo spazio.

  • controlla la lunghezza del testo dell'utente - se supera i 1006 byte

+-                                                     -+
|8080 (max host message length) - 32 (heading + marking)|
|-------------------------------------------------------|
| 8 (byte = 8 bits) |
+- -+

il programma suddivide il testo in una sequenza di messaggi la cui lunghezza massima è di 1006 byte - Ciascuno di questi messaggi è preceduto da un'intestazione come spiegato sopra.

Nota: in tal caso uno dei bit liberi dell'intestazione potrebbe essere utilizzato per indicare che più messaggi appartengono allo stesso testo.

  • transcodifica i caratteri EBCDIC che costituiscono i messaggi in caratteri ASCII.

  • riempie i buffer del pool con il contenuto dei messaggi.

  • aggiorna il contenuto della tabella di interfaccia e sposta i puntatori di riempimento (vedi sotto).

II-2. Il programma handler.​

Questo programma è avviato o dal programma di rete, o dall'interruzione di I/O.

Questo programma sarà molto breve. Sarà codificato in modalità master (istruzioni privilegiate) e dovrebbe essere integrato nel supervisore di I/O del sistema operativo.

Questo programma:

  • controlla l'unità hardware di canale. Avvia l'emissione, fornisce eventualmente il concatenamento dei dati tra i buffer, verifica i diversi stati del dispositivo al ricevimento di un'interruzione.

  • svuota i buffer che sono riempiti dal programma di rete.

  • esplora e aggiorna la tabella di interfaccia (vedi sotto).

  • può eventualmente assicurare una procedura di trasmissione di controllo con l'IMP (Vedi Domande).

II-3 Buffer e tabella di interfaccia.​

II-3-1 Buffer.​

Dovrebbero essere abbastanza grandi da contenere il testo massimo del messaggio host + intestazione e marcatura (1006 + 4 = 1010 byte).

Di conseguenza la dimensione del buffer potrebbe essere scelta pari a 256 parole (1024 byte). Quanto al numero di buffer, esso determinerà la frequenza di utilizzazione del link -

II-3-2 Tabella di interfaccia.​

È attraverso questa tabella che il programma di rete informa l'handler della posizione e della lunghezza dei dati da emettere.

Questa tabella potrebbe essere una tabella ad anello con 2 puntatori: uno per il riempimento, l'altro per l'estrazione. Essi sono aggiornati rispettivamente dal programma di rete e dal programma handler.

           [Length] of the message
contained
in the buffer
^
|
+--------------+----------+
| Buffer addr. | nb bytes |
+--------------+----------+
| | | <== Filling pointer
+--------------+----------+ |
| | V
| |
// //
| |
| |
| |
+--------------+----------+
| Buffer addr. | nb bytes | <== eEtracting pointer
+--------------+----------+ |
| Buffer addr. | nb bytes | V
+--------------+----------+