[Tech] OT - Programmazione C

Franco Bagnoli franco.bagnoli@unifi.it
Sab 21 Feb 2004 19:59:01 CET


On Sat, 21 Feb 2004, Valerio Montagnani wrote:

> che cosa significa core dump?

Non che io sia l'esperto di queste cose, ma comunque più o meno:
quando un programma effettua una operazione vietata, il sistema operativo 
(o meglio lo shell?) scrivono l'immagine della memoria occupata dal 
programma su 
file (il core dump, appunto). A che serve? a me nulla, ma si possono 
ottenere delle informazioni di debug e scoprire il perché del core.
Credo che sia anche possibile fare aposta il dump e poi far ripartire 
l'esecuzione, ma non ci giurerei. so che si può limitare la dimensione del 
core con ulimit -c

> > Bisogna anche tenere presente che a volte si usa il "copy on write"  
> > (sempre per velocizzare), per cui se per esempio hai fatto un fork e poi
> > che ci trova qualcosa di sensato.
> 
> che cosa è un fork?

forse ti sei accorto che in linux ci sono più processi che girano in 
contemporanea (beh, quasi, se c'e un solo processore in realtà girano un 
po' per volta, ma comunque l'effetto e quello del parallelismo).  La 
tecnica di base per lanciare un programmam in contemporanea è l'istruzione 
fork (man fork). l'istruzione duplica il processo e i due processi 
ripartono dallo stesso punto. Ma da quello che ritorna l'istruzione fork 
si capisce chi e il padre e chi il figlio. Per esempio al boot c'è un solo 
processo (init) che via via fa partire tutti gli altri processi che vedi. 
Idem per lo shell, che "lancia" i comandi. L'idea di base è fare un fork e 
poi il figlio "si converte" nel programma desiderato, che rimpiazza il suo 
spazio. Ma si possono anche fare dei fork "puri", per esempio il server 
apache che deve servire varie richieste contemporaneamente è scritto in 
maniera da lanciare un certo numero di processi "prima" si ricevere le 
chiamate, in modo da rispondere più velocemente. I figli ereditano 
l'ambiente del padre, incluse variabili, filehandle (non ricordo se ci 
sono problemi con la posizione nel file), ecc. 

Io non ho mai giocato molto con i processi, ma se sei interessato a
giocarci ti consiglio il perl, la sintassi delle funzioni che servono è
quasi uguale a quella del C ma un po' (un bel po') più veloce a scriversi
e debaggarsi.

-- 
Franco Bagnoli (franchino) <franco.bagnoli@unifi.it> (bagnoli@dma.unifi.it)
virtual location: Dipartimento di Energetica "S. Stecco"
ultra-virtual affiliation: Centro Dinamiche Complesse (CSDC-Firenze)
real location: Dip. Matematica Applicata "G. Sansone", Universita' Firenze,
Via S. Marta, 3 I-50139 Firenze, Italy. Tel. +39 0554796422, fax: +39 055471787




Maggiori informazioni sulla lista flug-tech