Multitasking
(Aggiornamento dell'articolo al 20/07/2011)
Diamo ora qualche cenno riguardo alla esecuzione di un qualsiasi
programma da parte di un elaboratore, come questo può essere messo
temporaneamente in pausa per proseguire ad eseguirne un altro,
oppure come possono essere eseguiti due o più programmi
contemporaneamente da parte di un unico microprocessore che può solo
dar seguito ad uniche operazioni elementari in sequenza una dopo
l’altra e a grandissima velocità. L’esecuzione contemporanea di più
processi si chiama in gergo multitasking.
Stabilito il fatto che un microprocessore può eseguire solo una
operazione alla volta, il problema che sorge quando più programmi
sono in esecuzione, è stabilire le priorità nelle esecuzioni. Quasi
sempre è l’operatore a deciderle chiudendo o riducendo ad icona
finestre, altre volte è il programma stesso che controlla silenzioso
l’esecuzione di altri processi in atto e che interviene dove è il
caso (vedi programmi anti virus sempre in esecuzione in background).
In genere in un processo multitasking il microprocessore esegue in
modo alternato le singole istruzioni dei programmi in esecuzione
seguendo algoritmi particolari e priorità stabilite.
In modo un po’ approssimativo, dobbiamo dire che il funzionamento di
un elaboratore è del tutto simile al modo con il quale anche il
cervello umano si presuma funzioni per interagire con l’esterno
eseguendo compiti elementari o complessi. Possiamo prendere ad
esempio una casalinga che, mentre potrebbe essere al telefono con
una amica (la finestra “Conversazione al telefono” attiva), ha sul
fornello una pentola piena d’acqua (la finestra “Pentola sul fuoco”
ridotta ad icona). Chiaramente se l’acqua dovesse incominciare a
bollire e a fuoriuscire dalla pentola, la casalinga metterebbe in
pausa la “Conversazione al telefono” concentrandosi sulla “Pentola
sul fuoco” abbassando la fiamma e riprendendo poi la conversazione
da dove era stata interrotta.
La casalinga potrebbe altresì fare le due cose contemporaneamente
(multitasking) ma, in modo impercettibile, con minor velocità di
esecuzione per ciascuna delle due perché sicuramente l’intensità
dell’attenzione prestata è equamente distribuita fra le due
attività; qui bisogna però essere più precisi considerando che
questa intensità potrebbe assumere valori diversi per ciascuna delle
due attività dicendo che l’una ha priorità sull’altra.
Nel caso di un computer, l’attenzione si misura invece nel grado,
stabilito prima da particolari algoritmi, della priorità
nell’esecuzione dei processi. Ricordiamo comunque che se il
microprocessore è “one core” l’esecuzione dei processi non avvengono
mai contemporaneamente ma in tempi macchina diversi (istruzioni
eseguite alternativamente). Per l’operatore tuttavia, essendo questi
tempi molto rapidi, sembrerà che le operazioni avvengano
contemporaneamente.
Nei modernissimi microprocessori però, composti da due o più
repliche degli stessi in un unico chip (multi core), più operazioni
possono anche essere eseguite contemporaneamente negli stessi tempi
macchina. E’ lecito pensare che da qui a qualche anno assisteremo ad
un aumento delle prestazioni soprattutto perché verranno
incrementati il numero dei processori in un unico chip (multi core).
Dobbiamo considerare sempre il fatto che l’ispirazione per il
funzionamento globale di una macchina deriva approssimativamente dai
meccanismi che si presuma possano essere messi in atto nel nostro
cervello nell’esecuzione di una qualsiasi operazione semplice o
complessa.
Vi ricordo che, per tener vivo il vostro interesse, quando
incominceremo a parlare di linguaggi di programmazione e di
programmi, svolgeremo un lavoro per far decidere ad una macchina
comportamenti diversi in modo adeguato secondo le circostanze. E
anche noi, non facciamo così ? No, non sempre !!
:-D
Microprocessore
dual core