multiprogrammazióne
sf. [multi-+programmazione]. In informatica, tecnica di utilizzazione delle risorse di un sistema di elaborazione che prevede la presenza nella memoria principale di più blocchi di programmi diversi che vengono eseguiti parallelamente. Le ragioni della convenienza di questa tecnica risiedono essenzialmente nel fatto che, mentre la velocità di lavoro dell'unità centrale è altissima, la velocità di funzionamento delle unità periferiche è assai più bassa, nel rapporto di 10.000 a 1, come ordine di grandezza. L'unità centrale occuperebbe quindi la massima parte del suo tempo inattiva, in attesa che le unità periferiche eseguano i loro compiti; "Per le figure 1, 2 e 3 vedi il lemma del 13° volume." l'unità centrale rimarrebbe inattiva "Le figure 1-3 relative alla multiprogrammazione sono a pag. 261 del 15° volume." per tutto il tempo di lettura e di scrittura dei vari record che compongono il programma. Questo tempo morto è invece occupato nell'elaborazione di record di un altro programma "Le figure 1-3 relative alla multiprogrammazione sono a pag. 261 del 15° volume." . Nel caso più semplice di due soli programmi, A e B, di tipo complementare, cioè nel caso in cui il programma A richieda soprattutto operazioni di entrata/uscita (è quindi un programma lento) e il programma B soprattutto operazioni da effettuare nell'unità centrale (è quindi un programma veloce), la situazione può essere schematizzata come segue: nella memoria centrale sono presenti contemporaneamente una porzione del programma A, una porzione del programma B e la porzione del sistema operativo che soprassiede all'esecuzione dei programmi (vedi elaboratore). Sia in esecuzione il programma A che a un certo punto necessariamente interrompe l'utilizzo dell'unità centrale per dar tempo di effettuare un'operazione mediante le unità periferiche. Allora la porzione di sistema operativo residente in memoria centrale prende il controllo delle risorse dell'elaboratore, memorizza lo stato di avanzamento del programma A e fa avanzare il programma B che era stato interrotto in precedenza. Il programma B, che utilizza scarsamente le unità periferiche, potrebbe occupare anche troppo a lungo l'unità centrale, bloccando l'esecuzione del programma A. È pertanto necessario che, appena le operazioni esterne in corso del programma A sono terminate, le unità di governo delle unità periferiche interessate mandino un segnale al sistema operativo che interrompe il programma B, ne memorizza lo stato di avanzamento e fa riprendere a funzionare il programma A. La situazione è, naturalmente, più complessa quando i programmi interessati alla multiprogrammazione sono più numerosi. In generale, il sistema operativo assegna le priorità di utilizzo dell'unità centrale ai programmi che fanno uso prolungato delle unità periferiche, ma in casi particolari, per esempio quando l'esecuzione di un dato programma ha caratteristiche di urgenza, i criteri di priorità possono essere modificati. In ogni caso possono essere definiti dall'operatore addetto al sistema di elaborazione. Un sistema multielaboratore, contenente un certo numero di unità centrali, è anche un sistema a multiprogrammazione.