|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
|
|
|
|
|
|
#22 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
La mia argomentazione è: leggi i sorgenti del JDK perchè è evidente che non l'hai mai fatto.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#23 | |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
Quote:
1) la jvm dialoga con il s.o., non con l'hardware. jvm NON sostituisce, jvm ASTRAE un sistema e poi SI APPOGGIA a un s.o. ospite per l'esecuzione "fisica". 2) sicuro? dal documento postato da lovaz: "Version 1.1 is based on green threads and won't be covered here. Green threads are simulated threads within the VM and were used prior to going to a native OS threading model in 1.2 and beyond. Green threads may have had an advantage on Linux at one point (since you don't have to spawn a process for each native thread), but VM technology has advanced significantly since version 1.1 and any benefit green threads had in the past is erased by the performance increases over the years." forse sei tu che fai un po' confuzione... come fa la jvm a schedulare un thread E POI a mapparlo in un thread nativo?? se poi parli delle prime versioni della preistoria di java o di jvm che non implementano nativamente il multithreading siamo nel campo delle eccezioni, non della norma: sempre dal documento citato prima "The Java programming language is naturally multi-threadedand because of this the underlying OS implementation can make a substantial difference in the performance of your application". ripeto, hotspot mappa in maniera biunivoca un thread java in un thread nativo per cui un programma java multithreaded risulta in più thread nativi... poi sarà il s.o. ospite a definire cosa sia un thread e come sia gestito... detto altrimenti (sempre dal doc di cui sopra, una volta per tutte): Java threads are really Solaris Threads since we've been using the native OS threading model in the 1.2 VM". se sei convinto di aver ragione posta le specifiche... Ultima modifica di mad_hhatter : 25-09-2007 alle 14:30. |
|
|
|
|
|
|
#24 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
|
|
|
|
|
|
|
#25 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Marco ti ha già risposto, io aggiungo soltanto questo http://www.artima.com/forums/flat.js...&thread=214235 per i dettagli.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#26 | ||
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Guardare le specifiche non risolverà i dubbi. Per la JVM vale lo stesso discorso del modello di memoria del linguaggio: c'è scritto cosa è necessario che capiti, il resto è ad libitum.
Ad esempio, Java Virtual Machine Specifications, 2a ed. http://java.sun.com/docs/books/jvms/...doc.html#33308 Quote:
Quote:
E' per questo che dico: guardiamo i sorgenti. Perchè la macchina virtuale che potrebbe esistere non è la macchina virtuale che usiamo. La macchina virtuale che usiamo è quella di osThread_Linux, osThread_win32 e osThread_Solaris, di thread_linux_amd64 eccetera eccetera eccetera. E' la dentro che sappiamo se la JVM usa o non usa le librerie native e come e quando le usa.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
||
|
|
|
|
|
#27 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
Ultima modifica di nuovoUtente86 : 25-09-2007 alle 16:34. |
|
|
|
|
|
|
#28 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
La JVM Hot Spot 7 di Sun Microsystem non si occupa dello scheduling.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#29 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Non schedulare i thread nella jvm dovrebbe rientrare nelle ottimizzazioni per il multithread....basta però leggere qualsiasi libro o dispensa dove si parla di thread java per leggere dello scheduler all' interno della jvm
http://www-lia.deis.unibo.it/Courses...vathread00.pdf pagina 5-6 qua fa accenno sia al mapping nativo che al green-thread pur mantenendo il concetto di scheduler http://www-lia.deis.unibo.it/Courses...JavaThread.pdf pag 3 http://lass.cs.umass.edu/~shenoy/cou...bs/talab2.html da notare: In some sense, the JVM scheduler acts like a kernel CPU scheduler |
|
|
|
|
|
#30 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Sei tremendo sei
O è indicato nelle specifiche del linguaggio O è indicato nelle specifiche della JVM O è nel codice sorgente di una JVM. Nelle specifiche del linguaggio non è indicata alcuna politica di scheduling. Nelle specifiche della JVM idem. Nel codice sorgente della JVM si vede palesemente che la gestione dei Thread è delegata al sistema operativo sia in Linux, che in Windows che in Solaris.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#31 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
da quando ho leto per la prima volta i thread in Java..fino ad oggi...si è sempre parlato di scheduler a livello jvm...non lo invento io basta aprire un qualsiasi tutorial....Ora ,o sono ammattiti tutti quelli che scrivono oppure funziona o meglio funzionava in quel modo.
Una frase su tutte: Le specifiche ufficiali della JVM stabiliscono che una VM gestica i thread secondo uno scheduling preemptive Ora per chi legge questa frase il significato è chiaro...cosi come è vero che ci sono altri documenti in cui il tutto è affidato al sistema operativo...Ora pur essendo vero che la politica di gestione dipende dall' implementazione...non stiamo parlando di calcio o di cucina..per cui si dovrebbe cercare di capire qualcosa di certo in merito. Partendo dal punto che dall' implementazione dell' open source jvm si evince che sia tutto delegato al sistema....quello che esce dai tutorial in che direzione va letta,nel senso...tutti parlano di scheduler...qualcuno accenna al sistema operativo...come se fosse un segreto o una vergogna dirlo..... |
|
|
|
|
|
#32 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Guarda, è possibilissimo che io mi sbagli. Non ci sarebbe alcunchè di cui stupirsi. Però io quella frase nelle specifiche della JVM non la vedo così come non vedo una qualche dichiarazione che impedisca la possibilità che una JVM sia non-preemptive.
Posso sbagliarmi: magari c'è scritto e io non lo vedo. Sono andato a rivederle e ancora non trovo questo requisito. Qualcuno lo vede?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#33 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
poiché la jvm può essere ospitata da un s.o. che non supporta il multithread, posso pensare che in tal caso questa jvm sia implementata in modo da sopperire alle mancanze del s.o. sottostante e si prende carico di emulare un sistema multithreading che altrimenti non esisterebbe... in tal caso sarà proprio la jvm a dover occuparsi di schedulare i vari thread
|
|
|
|
|
|
#34 |
|
Senior Member
Iscritto dal: Oct 2006
Messaggi: 1105
|
il problema è che la java platform è fatta per offrire ovunque lo stesso sistema virtuale... ma l'interfacciamento tra la jvm e il sistema sottostante dipende dal sistema sottostante... tutto ciò moltiplica le implementazioni della jvm per cui non dobbiamo commettere l'errore di generalizzare il comportamento di UNA implementazione della jvm
|
|
|
|
|
|
#35 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
da un tutorial della Java Italian Association:
"lo switch di contesto tra threads di un programma Java viene effettuato dalla JVM (Java Virtual Machine) Ora non è detto che questo sia il modo migliore,ne quello(a ragione probabilmente) utilizzato per le attuali implementazioni,ma sicuramente i thread venivano gestiti dalla jvm |
|
|
|
|
|
#37 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Senza entrare nel merito di questa discussione mi chiedo come si possa soltanto pensare di utilizzare un tutorial non ufficiale (sinonimo di fonte ufficiosa, parziale e/o assolutamente inattendibile) per dimostrare qualcosa.
Prima dell'avvento dei tutorial, di Wikipedia e di altre fonti di dubbia attendibilità l'approccio era profondamente diverso. |
|
|
|
|
|
#38 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
dipartimento di informatice e sistemistica di bologna....scusa se è poco.. Ma un' utile letture(Università di Pisa Prof.Danelutto(meglio di wikipidia che dici)chiarisce forse le idee....dove i 2 approcci sono quello iniziale e quello modificato in seguito dalla Sun come anche il link riguardante i thread solaris gia spiegava. http://www.di.unipi.it/~marcod/disp2.pdf |
|
|
|
|
|
|
#39 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Quote:
In questo caso, mettendo da parte i "tutorial" e le "dispense", cosa c'è scritto nelle fonti ufficiali sulla gestione dei thread in Java? |
|
|
|
|
|
|
#40 | |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:27.




















