Sophie

Sophie

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

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: Cosa succede quando si eseguono i programmi dalla shell?</TITLE>
 <LINK HREF="Unix-Internet-Fundamentals-HOWTO-7.html" REL=next>
 <LINK HREF="Unix-Internet-Fundamentals-HOWTO-5.html" REL=previous>
 <LINK HREF="Unix-Internet-Fundamentals-HOWTO.html#toc6" REL=contents>
</HEAD>
<BODY>
<A HREF="Unix-Internet-Fundamentals-HOWTO-7.html">Avanti</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO-5.html">Indietro</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO.html#toc6">Indice</A>
<HR>
<H2><A NAME="run"></A> <A NAME="s6">6. Cosa succede quando si eseguono i programmi dalla shell?</A></H2>

<P>La shell normale vi presenta il prompt '$' che vedete dopo il login (a
meno che non lo abbiate personalizzato). Non parleremo della sintassi
della shell e delle cose semplici che potete vedere da soli sullo
schermo; daremo piuttosto uno sguardo dietro le quinte a quello che
succede dal punto di vista del computer.
<P>Dopo la fase di avvio, e prima che sia eseguito un programma, potete
pensare al vostro computer come a un contenitore di un repertorio di
processi che stanno tutti aspettando qualcosa da fare. Stanno tutti
aspettando degli <EM>eventi</EM>. Un evento pu&ograve; essere voi che premete
un tasto o muovete il mouse. Oppure, se il vostro computer &egrave; collegato
a una rete, un evento pu&ograve; essere un pacchetto di dati che arriva
lungo quella rete.
<P>Il kernel &egrave; uno di questi processi. &Egrave; uno speciale, perch&eacute; controlla
quando gli altri <EM>processi utente</EM> possono girare ed &egrave;
normalmente l'unico processo con accesso diretto all'hardware del
computer. Infatti, i processi utente devono fare richiesta al kernel
quando vogliono ottenere un input dalla tastiera, scrivere sullo
schermo, leggere o scrivere su disco o fare qualsiasi altra cosa che
non sia macinare bit in memoria. Queste richieste sono note come
<EM>chiamate di sistema</EM>.
<P>Normalmente tutto l'I/O passa attraverso il kernel, cos&igrave; quest'ultimo
pu&ograve; organizzare le operazioni e impedire che i processi si ostacolino
a vicenda. Alcuni processi utente speciali hanno il permesso di
aggirare il kernel, di solito per ottenere accesso diretto alle porte
I/O. I server X (i programmi che gestiscono le richieste degli altri
programmi di generare grafica sullo schermo, sulla maggior parte dei
computer Unix) sono gli esempi pi&ugrave; comuni al riguardo. Ma non siamo
ancora arrivati a un server X; state guardando il prompt della shell
su una console a caratteri.
<P>La shell &egrave; solo un processo utente, e neppure uno tanto
speciale. Attende che voi digitiate qualcosa, ascoltando (attraverso
il kernel) sulle porte I/O della tastiera. Come il kernel vede che
avete digitato qualcosa lo visualizza sullo schermo e poi lo passa
alla shell. Quando il kernel vede un `Invio' passa la vostra linea di
testo alla shell. La shell tenta di interpretare questo testo come se
si trattasse di comandi.
<P>Diciamo che digitate `ls' e Invio per invocare il programma Unix che
elenca le directory. La shell applica le sue regole incorporate per
indovinare che volete lanciare il comando eseguibile nel file
`/bin/ls'. Fa una chiamata di sistema chiedendo al kernel di far
partire /bin/ls come un nuovo processo <EM>figlio</EM> e di dargli
accesso allo schermo e alla tastiera attraverso il kernel. Poi la
shell va a dormire, aspettando che ls finisca.
<P>Quando /bin/ls ha finito dice al kernel che ha terminato emettendo una
chiamata di sistema <EM>exit</EM>. Il kernel allora sveglia la shell e
le dice che pu&ograve; riprendere a girare. La shell emette un altro prompt e
attende un'altra linea di input.
<P>Tuttavia (supponiamo che stiate elencando una directory molto lunga)
potrebbero succedere altre cose mentre `ls' &egrave; in esecuzione.  Potreste
passare su un'altra console virtuale, fare il log in di l&agrave; e iniziare
una partita a Quake, per esempio. Oppure immaginate di essere
collegati a Internet. Il vostro computer potrebbe spedire o ricevere
posta mentre /bin/ls &egrave; in esecuzione.
<P>
<HR>
<A HREF="Unix-Internet-Fundamentals-HOWTO-7.html">Avanti</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO-5.html">Indietro</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO.html#toc6">Indice</A>
</BODY>
</HTML>