Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 1246

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>The Unix and Internet Fundamentals HOWTO: Come fa il computer a fare diverse cose contemporaneamente?</TITLE>
 <LINK HREF="Unix-Internet-Fundamentals-HOWTO-9.html" REL=next>
 <LINK HREF="Unix-Internet-Fundamentals-HOWTO-7.html" REL=previous>
 <LINK HREF="Unix-Internet-Fundamentals-HOWTO.html#toc8" REL=contents>
</HEAD>
<BODY>
<A HREF="Unix-Internet-Fundamentals-HOWTO-9.html">Avanti</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO-7.html">Indietro</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO.html#toc8">Indice</A>
<HR>
<H2><A NAME="s8">8. Come fa il computer a fare diverse cose contemporaneamente?</A></H2>

<P>Non lo fa, in realt&agrave;. I computer possono svolgere soltanto un task (o
<EM>processo</EM>) alla volta. Ma un computer pu&ograve; cambiare task molto
rapidamente e indurre i lenti esseri umani a pensare che sta facendo
diverse cose contemporaneamente. Questo viene chiamato
<EM>timesharing</EM> (condivisione di tempo).
<P>Uno dei compiti del kernel &egrave; gestire il timesharing. Ha una parte
chiamata <EM>scheduler</EM> (pianificatore) che contiene
informazioni relative a tutti gli altri processi (a parte il kernel)
del vostro repertorio. Ogni sessantesimo di secondo nel kernel fa
scattare un timer e viene generato un clock di interrupt. Lo
scheduler ferma qualunque processo sia attualmente in esecuzione, lo
sospende sul posto e passa il controllo a un altro processo.
<P>Un sessantesimo di secondo pu&ograve; non sembrare una grande quantit&agrave; di
tempo. Ma per i microprocessori odierni &egrave; sufficiente per eseguire
decine di migliaia di istruzioni macchina, che si possono tradurre in
una gran mole di lavoro. Quindi anche se ci sono molti processi
ciascuno di essi pu&ograve; fare molte cose nella porzione di tempo a sua
disposizione.
<P>In pratica non sempre un programma ottiene la sua intera porzione di
tempo. Se scatta un interrupt da un dispositivo I/O il kernel ferma
effettivamente il task corrente, esegue il gestore dell'interrupt e
poi ritorna al task corrente. Una tempesta di interrupt ad alta
priorit&agrave; pu&ograve; scombinare il normale funzionamento dei processi; questo
fenomeno viene chiamato <EM>thrashing</EM> e per fortuna &egrave; molto
difficile da indurre negli Unix moderni.
<P>Infatti la velocit&agrave; dei programmi solo molto di rado &egrave; limitata dalla
quantit&agrave; di tempo macchina a loro disposizione (ci sono alcune
eccezioni a questa regola, quali il suono o la generazione di grafica
3D). Molto pi&ugrave; spesso dei ritardi si generano quando il programma deve
attendere dei dati da un disco o da una connessione di rete.
<P>Un sistema operativo che pu&ograve; di norma gestire pi&ugrave; processi
simultaneamente &egrave; detto ``multitasking''. La famiglia di sistemi
operativi Unix &egrave; stata progettata fin dall'inizio per il multitasking
e lo fa molto bene, in modo molto pi&ugrave; efficace rispetto a Windows o al
Mac OS ai quali il multitasking &egrave; stato appiccicato a posteriori in
seguito a un ripensamento e lo fanno in modo piuttosto povero. Il
multitasking efficiente e affidabile costituisce buona parte di ci&ograve;
che rende Linux superiore per le applicazioni di rete, le
comunicazioni e i servizi Web.
<P>
<HR>
<A HREF="Unix-Internet-Fundamentals-HOWTO-9.html">Avanti</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO-7.html">Indietro</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO.html#toc8">Indice</A>
</BODY>
</HTML>