Appunti di informatica by Carlo

facileMultitasking

gif(Aggiornamento dell'articolo al 20/07/2011)

Multitasking

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
 
png

Intel

Microprocessore dual core