I processi a codice puro

Si chiamano processi a codice puro o rientranti quei processi che tengono separate le parti che non vengono modificate durante l'esecuzione, come le istruzioni, dalle parti suscettibili di variazione, come le aree dati. Si dicono non puri i processi per i quali tale suddivisione non è possibile, in quanto mescolano nella stessa zona istruzioni e dati.

Lavorando in multiprogrammazione, i normali processi utente sono indipendenti, ma può succedere che debbano interagire, comunicandosi dati o utilizzando le stesse routine di sistema (chiamate a compilatori, routine di Input/Output, etc.). Tenere distinte le aree di memoria, come accade ad esempio con le partizioni fisse, permette di ridurre il rischio di interazioni e di effetti collaterali, ma richiede la duplicazione di zone che contengono informazioni uguali.

Il sistema allora dovrà effettuare copia completa di questi ultimi mentre per i processi puri è sufficiente duplicare l'area che può variare, ossia la sua parte non pura. Ad esempio per i programmi scritti in Pascal (o in C) è il compilatore stesso a produrre due aree separate per i dati e per le istruzioni; mentre per altri linguaggi (come i linguaggi assemblativi) è cura del programmatore rispettare tale distinzione.

Esempio: il compilatore COBOL viene normalmente usato da più processi in un sistema multiutente. Effettuare una copia per ogni richiesta causerebbe una occupazione di spazio eccessiva. Le sue istruzioni di decodifica restano sempre le stesse, per cui in memoria ne viene tenuta una sola copia. Le tabelle di traduzione invece, che variano per ogni processo e non possono essere condivise, saranno in numero pari ai sorgenti da compilare.

Ogni miglioramento comporta un aumento nella complessità di gestione. Ad esempio il sistema deve sapere, per ogni parte non duplicata, il numero di processi nei quali interviene, e deve quindi utilizzare opportuni contatori di condivisione: l'area utilizzata da più processi può essere rilasciata solo quando l'ultimo processo ha terminato la sua elaborazione, ossia quando il contatore di condivisione è sceso a zero.

Bibliografia

  • Complementi di informatica – A.Garavaglia – F.Petracchi – Parte II - Masson
  • Introduzione all‘Informatica – P.Tosoratti – Casa Editrice Ambrosiana
  • Elaboratori e loro applicazioni – Volume 3 – F.Cesarini – F.Pippolini – G-Soda – Edizioni Cremonese
  • Corso di Informatica – Volume 3 – R.P.Dameri – G.Foresti – Editrice Jackson