Introduzione
Ci sono molte buone ragioni, e forse una o due cattive, per far apparire la comunicazione sulla Network solo come un caso particolare di input/output — almeno per quanto riguarda la programmazione utente. Così, per esempio, l'approccio di Harvard all'implementazione del protocollo HOST-HOST e del Network Control Program tratta ogni collegamento come un "dispositivo logico" nella terminologia del PDP-10. Stabilire una connessione è simile all'assegnazione locale di un dispositivo, e la comunicazione su un collegamento farà uso delle UUO standard di input/output del sistema. Questo rende possibile usare programmi esistenti insieme alla Network senza modifiche — almeno se si ha a che fare con altri PDP-10.
Questo però ci porta solo fino a un certo punto. La nozione di "dispositivo logico" non esiste sul PDP-10; esiste sull'IBM 360 (parlo qui al livello dell'interfaccia tra sistema operativo e programma utente). Inoltre, in assenza di uno standard di Network che richieda rappresentazioni fisse per interi, reali, ecc. (cosa a cui mi opporrei), qualsiasi coppia di processi utente deve raggiungere un accordo locale, e uno o entrambi devono assumersi l'onere della conversione dei dati dove necessario. Qualsiasi protocollo standard dovrebbe permettere di dare espressione a tali accordi e dovrebbe prevedere almeno il minimo di informazioni di controllo che consenta a tali accordi di funzionare in pratica. Infine, dobbiamo notare che i protocolli IMP-IMP e HOST-HOST non prevedono una verifica che un'azione richiesta da un processo utente sia effettivamente compiuta dagli altri processi; questo tipo di questione è sempre stato considerato trattabile a livello del protocollo USER-USER.
Questa proposta intende affrontare i tre tipi di questione sopra menzionati solo entro un certo limite. Posso spiegare meglio tale limite enunciando i criteri che userei per giudicare qualsiasi proposta di protocollo USER-USER:
-
La nozione di (logico) record dovrebbe essere presente, e la nozione di messaggio dovrebbe essere soppressa. (Per un programmatore FORTRAN, ciò che viene scritto usando una sola istruzione WRITE senza un FORMAT associato è un record; per un programmatore in linguaggio macchina OS/360, PUT scrive un record).
-
Dovrebbe essere possibile implementare il protocollo nei sistemi HOST e/o nelle routine di libreria in modo tale che i programmi utente oggi esistenti possano accedere a file ovunque nella Network senza modifiche al programma. (Almeno inizialmente, questa capacità deve essere limitata ai sistemi HOST dello stesso tipo).
-
Il protocollo dovrebbe essere implementabile (non necessariamente implementato) in qualsiasi sistema HOST a livello di SVC o UUO. Una conoscenza specifica delle caratteristiche dell'altro HOST coinvolto dovrebbe essere superflua.
Va notato che quanto sopra implica che alcuni programmi utente debbano essere consapevoli della natura dell'altro HOST — almeno in ogni caso in cui il secondo criterio fallisce. Man mano che facciamo progressi (o rinunciamo) nei casi in cui attualmente si verifica il fallimento, l'onere di conciliare le differenze tra sistemi si sposterà verso l'implementazione nei protocolli (cioè nei sistemi HOST) o, per default, nei programmi utente.
È del tutto evidente che qualsiasi proposta avviata oggi dovrebbe essere guardata con sospetto quanto alla misura in cui "risolve" problemi ultimi. Quanto essere ambiziosi sia strettamente una questione di gusto. In questa fase, preferisco provare qualcosa che credo possa essere usato da tutti noi (e che quindi vale la pena fare), che si spinga a una distanza ragionevole verso la soluzione dei nostri problemi a breve termine, che sia facile da realizzare e che offra speranza di vitalità nel lungo periodo. Nel seguito intendo descrivere la proposta stessa con, spero, argomenti motivazionali adeguati per le sue parti. Traccerò poi l'implementazione specifica che noi di Harvard stiamo realizzando per il PDP-10 e descriverò come intendiamo applicarla nel caso specifico della memorizzazione di file su altri PDP-10 nella Network.