[Tech] OT - Programmazione C

Simone Piccardi piccardi@softwarelibero.org
Lun 23 Feb 2004 02:01:28 CET


On Sun, 2004-02-22 at 22:52, Marco Ermini wrote:
> Prova a fare un "ps -ex| grep httpd" su Solaris o su Linux (per httpd
> intendo Apache) e su Linux (forse su Linux è ps aux) vedrai enne processi
> (quanti sono i thread lanciati in fork da Apache), su Solaris ne vedrai
> molti meno(tipo... uno solo, o due). Così in FreeBSD, Tru64, o in AIX - non
> importa se è Unix SysV o BSD.
Guarda che su Solaris per mia sventura ci ho dovuto lavorare 2 anni a
CHL, ma se dal fatto che su solaris i thread vengono mantenuti sotto lo
stesso pid mentre Linux gli assegna un pid diverso come i processi tu
concludi che per questo devono essere la stessa cosa ... visto che hai
studiato filosofia rileggiti aristotele perche' coi sillogismi stai
messo male.

> > Io una cosa (i thread, almeno quelli usati dai programmi attraverso la
> > libreria pthread, la attuale) che necessita di un altro thread a parte
> > per funzionare, che condivide lo stesso spazio di indirizzi invece di
> > avercelo completamente separato, proprio la stessa cosa di un processo
> > non la considero.
> 
> Però per Linux continuano ad essere praticamente la stessa cosa...
Secondo te se uno modifica una variabile usando due thread o due
processi e` la stessa cosa? 

L'unica cosa che hanno in comune in Linux e` che lo scheduler li tratta
allo stesso modo, dal che presumo (visto che su altri Unix li tratta in
maniera diversa) tu abbia tratto la conclusione che siano la stessa
cosa. Ma si da il caso che per far girare un programma il kernel debba
fare anche qualcos'altro oltre a mettergli a disposizione la CPU, come
appunto gestirgli la memoria. Mi pare davvero strano che con tutta
l'esperienza che proclami tu non conosca le differenze pratiche fra un
thread e un processo, e chi le dovrebbe gestire, quelle differenze?

> > I process group non c'entrano nulla con l'allocazione della memoria.
> 
> Il sign. Richard Stevens, come gli autori di POSIX, non sarebbe d'accordo
> con te (almeno Stevens non può più risponderci, comunque ;-)
I suoi libri ci sono ancora. Mi fai il piacere di citarmi dove non
sarebbe d'accordo con me, cosi` possiamo verificare? 

> Simone ti consiglio, oltre al libro "Advanced Programming in the UNIX
> Environment" di W. Richard Stevens - che però mi sa che conosci perché il
> corso che tu "pubblicizzi" mi pare ne faccia incetta... - "Programming with
> POSIX Threads" di David R. Butenhof e "POSIX.4: Programming for the Real
> World" di Bill Gallmeister. Il sottoscritto purtroppo ha dovuto digerire
> queste cose a lungo, pensa che quando Amazon è andata per la prima volta in
> attivo, dopo 4 anni mi pare, volevano regalarmi delle azioni...
Gli altri due non li ho letti, ma per questo argomento il primo e` piu`
che sufficiente, e poi si possono usare anche le pagine di manuale o
gurdare i sorgenti, se necessario. Comunque visto che APUE che ce l'hai
puoi pure controllare a pag. 243-244 il paragrafo sui process group.

Se poi, (come e` ovvio per chi conosce l'argomento) li' di utilizzo dei
process group per allocare la memoria di altri processi non si parla,
sarai spero cosi` gentile da darmi un riferimento dove se ne parla. Mi
accontento anche solo di sapere il nome della funzione che si dovrebbe
usare per fare una cosa del genere.

Ma magari sara` una qualche nuovissima funzionalita` POSIX che non c'e`
in Linux. Comunque visto che secondo te si puo` fare sarai spero in
grado di dirmi come no? 

> Il fatto che il sign. Torvalds & C. non abbiano mai nemmeno posseduto le
> specifiche, e che in realtà non gli freghi molto, non lo trovo comunque
> irrilevante :-)
Veramente quelli di Posix sono tutti (sono piu` di uno, tra l'altro)
standard pubblici. Guarda che se ti registri le specifiche te le puoi
tranquillamente scaricare tu come chiunque altro qui:
http://www.unix.org/version3/online.html
quindi non vedo come fai a dire che Torvalds & C. non hanno mai
posseduto le specifiche.

La conformita` a Posix e` stata sempre portata avanti nello sviluppo del
kenrel, almeno fin quando lo si riteneva sensato (una delle poche
eccezioni, che eccezione resta e non e` piu` tale nel 2.6, e` quella dei
thread, ma sia Linus che molti altri nel caso ritenevano demenziale lo
standard). Mai notato le sezioni CONFORMING TO delle pagine di manual
dove ci sta scritto POSIX? Ce lo hanno messo per finta secondo te?

> > Quello meno implementato e` il 1003.1b per quanto riguarda i
> > semafori e le code di messaggi (in stile Posix e non SysV).
> 
> Non faccio per dire, ma chissà di cosa stavamo parlando...
Di cose che ovviamente non conosci, dato che queste sono funzioni
relative alle specifiche Real-Time che non e` richiesto vengano
implementate dai sistemi che real-time non sono (e Linux non lo e`). Se
prendi queste come esempi di mancata aderenza di Linux a Posix non vai
molto lontano.

> Guarda Simone, io, almeno su queste cose, non parlo per sentito dire... e
> se lo faccio, lo dico in anticipo... il flame puoi farlo se ti garba, si
> vede che ti diverte, a me non è che mi freghi molto, se non per il fatto che
> ti pregiudichi una occasione di confronto con chi ha esperienze discordanti
> dalle tue, solo perché vuoi avere un atteggiamento presuntuoso.
Io sarei quello presuntuoso? Non sei tu quello che pontifica su tutta la
sua grande esperienza di programmazione POSIX e poi non sa neanche a
cosa servono i process group.

Marco io non ho nessun problema a confrontarmi con te, specie se sarai
cosi` gentile da darmi dei riferimenti specifici per le tue ragioni, il
fatto che lo dica tu per quel che mi riguarda non lo trovo sufficiente,
non sei Stevens. Ma purtroppo da domani devo tornare a lavorare, per cui
non avro' altro tempo da dedicare alla cosa fino a domenica prossima, se
puoi aspettare per me non c'e` problema, sempre che qualcuno,
giustamente, non si sia gia` stufato della cosa.

Ciao
Simone
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome:        non disponibile
Tipo:        application/pgp-signature
Dimensione:  189 bytes
Descrizione: This is a digitally signed message part
URL:         <http://lists.linux.it/pipermail/flug-tech/attachments/20040223/d9d607ed/attachment.pgp>


Maggiori informazioni sulla lista flug-tech