La JVM utilise les threads natifs depuis un petit bout de temps déjà.
La JVM utilise les threads natifs depuis un petit bout de temps déjà.
La JVM utilise les threads natifs depuis un petit bout de temps déjà.
Le 30/07/2009 12:20, basto a écrit :La JVM utilise les threads natifs depuis un petit bout de temps déjà.
La JVM oui, mais est-ce qu'il y a bien un thread natif pour chaque
thread Java ?
Le 30/07/2009 12:20, basto a écrit :
La JVM utilise les threads natifs depuis un petit bout de temps déjà.
La JVM oui, mais est-ce qu'il y a bien un thread natif pour chaque
thread Java ?
Le 30/07/2009 12:20, basto a écrit :La JVM utilise les threads natifs depuis un petit bout de temps déjà.
La JVM oui, mais est-ce qu'il y a bien un thread natif pour chaque
thread Java ?
On 2009-07-29, Toxico Nimbus wrote:Le 29/07/2009 14:09, Nicolas George a écrit :JKB , dans le message, a
écrit :Des bibliothèques (logicielles s'entend) ne s'émulent pas. Elles sont
mises en oeuvre, ou implémentées.
On est d'accord et j'ai dit que c'était un raccourci de langage dans
le sens où on ne peut pas prétendre implanter les specs Posix en
userland.
Je pense que tu t'égares un peu en insistant sur la distinction kernelspace
/ userland. Par exemple, sur un micro-noyau convenablement conçu, on peut
parfaitement implémenter POSIX en userland.
Quelque soit le noyau, POSIX n'est implémentable correctement que si le
noyau fournit le moyen de garantir l'atomicité de n'importe quelle
portion de code, plus des signaux et des sémaphores compatibles avec
ceux de la spécification. A partir de là, tout le reste doit être
implémentable.
Je ne vois ici aucun rapport au type de noyau.
Dans le cas d'un micro-noyau, on peut tres bien imagine avoir un
serveur tel qu'un lock manager (qui sera forcement en userspace)
qui pourra guarantir les portions critiques d'un process.
On 2009-07-29, Toxico Nimbus wrote:
Le 29/07/2009 14:09, Nicolas George a écrit :
JKB , dans le message<slrnh708q1.30h.knatschke@rayleigh.systella.fr>, a
écrit :
Des bibliothèques (logicielles s'entend) ne s'émulent pas. Elles sont
mises en oeuvre, ou implémentées.
On est d'accord et j'ai dit que c'était un raccourci de langage dans
le sens où on ne peut pas prétendre implanter les specs Posix en
userland.
Je pense que tu t'égares un peu en insistant sur la distinction kernelspace
/ userland. Par exemple, sur un micro-noyau convenablement conçu, on peut
parfaitement implémenter POSIX en userland.
Quelque soit le noyau, POSIX n'est implémentable correctement que si le
noyau fournit le moyen de garantir l'atomicité de n'importe quelle
portion de code, plus des signaux et des sémaphores compatibles avec
ceux de la spécification. A partir de là, tout le reste doit être
implémentable.
Je ne vois ici aucun rapport au type de noyau.
Dans le cas d'un micro-noyau, on peut tres bien imagine avoir un
serveur tel qu'un lock manager (qui sera forcement en userspace)
qui pourra guarantir les portions critiques d'un process.
On 2009-07-29, Toxico Nimbus wrote:Le 29/07/2009 14:09, Nicolas George a écrit :JKB , dans le message, a
écrit :Des bibliothèques (logicielles s'entend) ne s'émulent pas. Elles sont
mises en oeuvre, ou implémentées.
On est d'accord et j'ai dit que c'était un raccourci de langage dans
le sens où on ne peut pas prétendre implanter les specs Posix en
userland.
Je pense que tu t'égares un peu en insistant sur la distinction kernelspace
/ userland. Par exemple, sur un micro-noyau convenablement conçu, on peut
parfaitement implémenter POSIX en userland.
Quelque soit le noyau, POSIX n'est implémentable correctement que si le
noyau fournit le moyen de garantir l'atomicité de n'importe quelle
portion de code, plus des signaux et des sémaphores compatibles avec
ceux de la spécification. A partir de là, tout le reste doit être
implémentable.
Je ne vois ici aucun rapport au type de noyau.
Dans le cas d'un micro-noyau, on peut tres bien imagine avoir un
serveur tel qu'un lock manager (qui sera forcement en userspace)
qui pourra guarantir les portions critiques d'un process.
Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :JKB a écrit :Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :JKB a écrit :En d'autres termes, lorsque tu lances une application Java, tu la
fais tourner dans une machine virtuelle. Si tu lances un exécutable
Cygwin, il tourne sous Windows avec les limitations imposées par le
noyau Windows (et les bibliothèques Cygwin qui sont en userland).
limitation limitation c'est vite dit
dans cygwin
sleep 60 & sleep 60
http://cjoint.com/data/hEktVPyBuG.htm
Peux-tu m'expliquer ce qu'est le rapport avec la choucroute ?
import java.lang.Thread;
public class exemple extends Thread
{
String txt;
public exemple( String txt)
{
this.txt=txt;
}
public void run()
{
try {
while(true)
{
Thread.sleep(10);
System.out.println(txt);
}
} catch (InterruptedException e)
{ System.out.println("ouch!n");
return;
}
}
public static void main(String args[]) throws InterruptedException
{
Thread T1 = new exemple ("t1");
Thread T2 = new exemple ("t2");
T1.start();
T2.start();
}
}
javac exemple.java
java exemple
dans une autre console
:~$ ps -xa |grep java
Warning: bad ps syntax, perhaps a bogus '-'? See
http://procps.sf.net/faq.html
14756 pts/0 Sl 0:00 java exemple
14827 pts/1 R+ 0:00 grep java
donc d'un côté 1 processus 2 threads userland le code java sous linux
et de l'autre sous windows 2 processus, bon ok pas 2 threads mais des
forck, les sleep
mais il y a bien gestion des processus sous cygwin donc il passe par
windows et non pas par une émulation d'une fonctionnalité du noyau en usr
Exprime-toi correctement parce qu'il faut te lire plusieurs fois
pour essayer de comprendre ce que tu veux bien dire.
Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :
JKB a écrit :
Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :
JKB a écrit :
En d'autres termes, lorsque tu lances une application Java, tu la
fais tourner dans une machine virtuelle. Si tu lances un exécutable
Cygwin, il tourne sous Windows avec les limitations imposées par le
noyau Windows (et les bibliothèques Cygwin qui sont en userland).
limitation limitation c'est vite dit
dans cygwin
sleep 60 & sleep 60
http://cjoint.com/data/hEktVPyBuG.htm
Peux-tu m'expliquer ce qu'est le rapport avec la choucroute ?
import java.lang.Thread;
public class exemple extends Thread
{
String txt;
public exemple( String txt)
{
this.txt=txt;
}
public void run()
{
try {
while(true)
{
Thread.sleep(10);
System.out.println(txt);
}
} catch (InterruptedException e)
{ System.out.println("ouch!n");
return;
}
}
public static void main(String args[]) throws InterruptedException
{
Thread T1 = new exemple ("t1");
Thread T2 = new exemple ("t2");
T1.start();
T2.start();
}
}
javac exemple.java
java exemple
dans une autre console
remy@remy-desktop:~$ ps -xa |grep java
Warning: bad ps syntax, perhaps a bogus '-'? See
http://procps.sf.net/faq.html
14756 pts/0 Sl 0:00 java exemple
14827 pts/1 R+ 0:00 grep java
donc d'un côté 1 processus 2 threads userland le code java sous linux
et de l'autre sous windows 2 processus, bon ok pas 2 threads mais des
forck, les sleep
mais il y a bien gestion des processus sous cygwin donc il passe par
windows et non pas par une émulation d'une fonctionnalité du noyau en usr
Exprime-toi correctement parce qu'il faut te lire plusieurs fois
pour essayer de comprendre ce que tu veux bien dire.
Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :JKB a écrit :Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :JKB a écrit :En d'autres termes, lorsque tu lances une application Java, tu la
fais tourner dans une machine virtuelle. Si tu lances un exécutable
Cygwin, il tourne sous Windows avec les limitations imposées par le
noyau Windows (et les bibliothèques Cygwin qui sont en userland).
limitation limitation c'est vite dit
dans cygwin
sleep 60 & sleep 60
http://cjoint.com/data/hEktVPyBuG.htm
Peux-tu m'expliquer ce qu'est le rapport avec la choucroute ?
import java.lang.Thread;
public class exemple extends Thread
{
String txt;
public exemple( String txt)
{
this.txt=txt;
}
public void run()
{
try {
while(true)
{
Thread.sleep(10);
System.out.println(txt);
}
} catch (InterruptedException e)
{ System.out.println("ouch!n");
return;
}
}
public static void main(String args[]) throws InterruptedException
{
Thread T1 = new exemple ("t1");
Thread T2 = new exemple ("t2");
T1.start();
T2.start();
}
}
javac exemple.java
java exemple
dans une autre console
:~$ ps -xa |grep java
Warning: bad ps syntax, perhaps a bogus '-'? See
http://procps.sf.net/faq.html
14756 pts/0 Sl 0:00 java exemple
14827 pts/1 R+ 0:00 grep java
donc d'un côté 1 processus 2 threads userland le code java sous linux
et de l'autre sous windows 2 processus, bon ok pas 2 threads mais des
forck, les sleep
mais il y a bien gestion des processus sous cygwin donc il passe par
windows et non pas par une émulation d'une fonctionnalité du noyau en usr
Exprime-toi correctement parce qu'il faut te lire plusieurs fois
pour essayer de comprendre ce que tu veux bien dire.
JKB a écrit :Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :JKB a écrit :Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :JKB a écrit :En d'autres termes, lorsque tu lances une application Java, tu la
fais tourner dans une machine virtuelle. Si tu lances un exécutable
Cygwin, il tourne sous Windows avec les limitations imposées par le
noyau Windows (et les bibliothèques Cygwin qui sont en userland).
limitation limitation c'est vite dit
dans cygwin
sleep 60 & sleep 60
http://cjoint.com/data/hEktVPyBuG.htm
Peux-tu m'expliquer ce qu'est le rapport avec la choucroute ?
import java.lang.Thread;
public class exemple extends Thread
{
String txt;
public exemple( String txt)
{
this.txt=txt;
}
public void run()
{
try {
while(true)
{
Thread.sleep(10);
System.out.println(txt);
}
} catch (InterruptedException e)
{ System.out.println("ouch!n");
return;
}
}
public static void main(String args[]) throws InterruptedException
{
Thread T1 = new exemple ("t1");
Thread T2 = new exemple ("t2");
T1.start();
T2.start();
}
}
javac exemple.java
java exemple
dans une autre console
:~$ ps -xa |grep java
Warning: bad ps syntax, perhaps a bogus '-'? See
http://procps.sf.net/faq.html
14756 pts/0 Sl 0:00 java exemple
14827 pts/1 R+ 0:00 grep java
donc d'un côté 1 processus 2 threads userland le code java sous linux
et de l'autre sous windows 2 processus, bon ok pas 2 threads mais des
forck, les sleep
mais il y a bien gestion des processus sous cygwin donc il passe par
windows et non pas par une émulation d'une fonctionnalité du noyau en usr
Exprime-toi correctement parce qu'il faut te lire plusieurs fois
pour essayer de comprendre ce que tu veux bien dire.
c'est vrai que je ne suis pas très clair
si il y a émulation d'une fonctionnalité sous cygwin
donc je suis dans le user land donc il ne peut pas y avoir
plusieurs processus dans le gestionnaire de taches de windows
quand je fais tourner un programme multi thread
bicause gestion concurrentielle des données
l'exemple avec les sleep démontre le contraire puisque j'ai bien
2 processus mais ceux sont des forck donc pas très pertinent
par contre si il y avait implémentation d'une émulation je me
retrouverais comme avec l'exemple de la jmv
un processus et plusieurs threads
donc pour savoir si il y a émulation d'une fonctionalité
il faudrait d'une part un bout de code posix en c qui utilise les
threads sous linux vérifier que l'on a plusieurs processus sous linux
histoire d'exploiter les architectures smp par exemple
j'ai supposé la chose n'étant un pro du C et de son fonctionnement
et ensuite faire tourner un autre bout de code sous cygwin
et comparer s'il y a aussi plusieurs processus
maintenant comme déjà dit mais je le répète
je ne code pas assez en c pour écrire un exemple qui fait tourner
plusieurs threads
donc trouve 2 programmes multi thread : un sous cygwin et sous linux
et l'histoire sera close
à mon avis sauf erreur de raisonnement ou méconnaissance du bouzin
JKB a écrit :
Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :
JKB a écrit :
Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :
JKB a écrit :
En d'autres termes, lorsque tu lances une application Java, tu la
fais tourner dans une machine virtuelle. Si tu lances un exécutable
Cygwin, il tourne sous Windows avec les limitations imposées par le
noyau Windows (et les bibliothèques Cygwin qui sont en userland).
limitation limitation c'est vite dit
dans cygwin
sleep 60 & sleep 60
http://cjoint.com/data/hEktVPyBuG.htm
Peux-tu m'expliquer ce qu'est le rapport avec la choucroute ?
import java.lang.Thread;
public class exemple extends Thread
{
String txt;
public exemple( String txt)
{
this.txt=txt;
}
public void run()
{
try {
while(true)
{
Thread.sleep(10);
System.out.println(txt);
}
} catch (InterruptedException e)
{ System.out.println("ouch!n");
return;
}
}
public static void main(String args[]) throws InterruptedException
{
Thread T1 = new exemple ("t1");
Thread T2 = new exemple ("t2");
T1.start();
T2.start();
}
}
javac exemple.java
java exemple
dans une autre console
remy@remy-desktop:~$ ps -xa |grep java
Warning: bad ps syntax, perhaps a bogus '-'? See
http://procps.sf.net/faq.html
14756 pts/0 Sl 0:00 java exemple
14827 pts/1 R+ 0:00 grep java
donc d'un côté 1 processus 2 threads userland le code java sous linux
et de l'autre sous windows 2 processus, bon ok pas 2 threads mais des
forck, les sleep
mais il y a bien gestion des processus sous cygwin donc il passe par
windows et non pas par une émulation d'une fonctionnalité du noyau en usr
Exprime-toi correctement parce qu'il faut te lire plusieurs fois
pour essayer de comprendre ce que tu veux bien dire.
c'est vrai que je ne suis pas très clair
si il y a émulation d'une fonctionnalité sous cygwin
donc je suis dans le user land donc il ne peut pas y avoir
plusieurs processus dans le gestionnaire de taches de windows
quand je fais tourner un programme multi thread
bicause gestion concurrentielle des données
l'exemple avec les sleep démontre le contraire puisque j'ai bien
2 processus mais ceux sont des forck donc pas très pertinent
par contre si il y avait implémentation d'une émulation je me
retrouverais comme avec l'exemple de la jmv
un processus et plusieurs threads
donc pour savoir si il y a émulation d'une fonctionalité
il faudrait d'une part un bout de code posix en c qui utilise les
threads sous linux vérifier que l'on a plusieurs processus sous linux
histoire d'exploiter les architectures smp par exemple
j'ai supposé la chose n'étant un pro du C et de son fonctionnement
et ensuite faire tourner un autre bout de code sous cygwin
et comparer s'il y a aussi plusieurs processus
maintenant comme déjà dit mais je le répète
je ne code pas assez en c pour écrire un exemple qui fait tourner
plusieurs threads
donc trouve 2 programmes multi thread : un sous cygwin et sous linux
et l'histoire sera close
à mon avis sauf erreur de raisonnement ou méconnaissance du bouzin
JKB a écrit :Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :JKB a écrit :Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :JKB a écrit :En d'autres termes, lorsque tu lances une application Java, tu la
fais tourner dans une machine virtuelle. Si tu lances un exécutable
Cygwin, il tourne sous Windows avec les limitations imposées par le
noyau Windows (et les bibliothèques Cygwin qui sont en userland).
limitation limitation c'est vite dit
dans cygwin
sleep 60 & sleep 60
http://cjoint.com/data/hEktVPyBuG.htm
Peux-tu m'expliquer ce qu'est le rapport avec la choucroute ?
import java.lang.Thread;
public class exemple extends Thread
{
String txt;
public exemple( String txt)
{
this.txt=txt;
}
public void run()
{
try {
while(true)
{
Thread.sleep(10);
System.out.println(txt);
}
} catch (InterruptedException e)
{ System.out.println("ouch!n");
return;
}
}
public static void main(String args[]) throws InterruptedException
{
Thread T1 = new exemple ("t1");
Thread T2 = new exemple ("t2");
T1.start();
T2.start();
}
}
javac exemple.java
java exemple
dans une autre console
:~$ ps -xa |grep java
Warning: bad ps syntax, perhaps a bogus '-'? See
http://procps.sf.net/faq.html
14756 pts/0 Sl 0:00 java exemple
14827 pts/1 R+ 0:00 grep java
donc d'un côté 1 processus 2 threads userland le code java sous linux
et de l'autre sous windows 2 processus, bon ok pas 2 threads mais des
forck, les sleep
mais il y a bien gestion des processus sous cygwin donc il passe par
windows et non pas par une émulation d'une fonctionnalité du noyau en usr
Exprime-toi correctement parce qu'il faut te lire plusieurs fois
pour essayer de comprendre ce que tu veux bien dire.
c'est vrai que je ne suis pas très clair
si il y a émulation d'une fonctionnalité sous cygwin
donc je suis dans le user land donc il ne peut pas y avoir
plusieurs processus dans le gestionnaire de taches de windows
quand je fais tourner un programme multi thread
bicause gestion concurrentielle des données
l'exemple avec les sleep démontre le contraire puisque j'ai bien
2 processus mais ceux sont des forck donc pas très pertinent
par contre si il y avait implémentation d'une émulation je me
retrouverais comme avec l'exemple de la jmv
un processus et plusieurs threads
donc pour savoir si il y a émulation d'une fonctionalité
il faudrait d'une part un bout de code posix en c qui utilise les
threads sous linux vérifier que l'on a plusieurs processus sous linux
histoire d'exploiter les architectures smp par exemple
j'ai supposé la chose n'étant un pro du C et de son fonctionnement
et ensuite faire tourner un autre bout de code sous cygwin
et comparer s'il y a aussi plusieurs processus
maintenant comme déjà dit mais je le répète
je ne code pas assez en c pour écrire un exemple qui fait tourner
plusieurs threads
donc trouve 2 programmes multi thread : un sous cygwin et sous linux
et l'histoire sera close
à mon avis sauf erreur de raisonnement ou méconnaissance du bouzin
JKB a écrit :Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :JKB a écrit :Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :JKB a écrit :En d'autres termes, lorsque tu lances une application Java, tu la
fais tourner dans une machine virtuelle. Si tu lances un exécutable
Cygwin, il tourne sous Windows avec les limitations imposées par le
noyau Windows (et les bibliothèques Cygwin qui sont en userland).
limitation limitation c'est vite dit
dans cygwin
sleep 60& sleep 60
http://cjoint.com/data/hEktVPyBuG.htm
Peux-tu m'expliquer ce qu'est le rapport avec la choucroute ?
import java.lang.Thread;
public class exemple extends Thread
{
String txt;
public exemple( String txt)
{
this.txt=txt;
}
public void run()
{
try {
while(true)
{
Thread.sleep(10);
System.out.println(txt);
}
} catch (InterruptedException e)
{ System.out.println("ouch!n");
return;
}
}
public static void main(String args[]) throws InterruptedException
{
Thread T1 = new exemple ("t1");
Thread T2 = new exemple ("t2");
T1.start();
T2.start();
}
}
javac exemple.java
java exemple
dans une autre console
:~$ ps -xa |grep java
Warning: bad ps syntax, perhaps a bogus '-'? See
http://procps.sf.net/faq.html
14756 pts/0 Sl 0:00 java exemple
14827 pts/1 R+ 0:00 grep java
donc d'un côté 1 processus 2 threads userland le code java sous linux
et de l'autre sous windows 2 processus, bon ok pas 2 threads mais des
forck, les sleep
mais il y a bien gestion des processus sous cygwin donc il passe par
windows et non pas par une émulation d'une fonctionnalité du noyau en usr
Exprime-toi correctement parce qu'il faut te lire plusieurs fois
pour essayer de comprendre ce que tu veux bien dire.
c'est vrai que je ne suis pas très clair
si il y a émulation d'une fonctionnalité sous cygwin
donc je suis dans le user land donc il ne peut pas y avoir
plusieurs processus dans le gestionnaire de taches de windows
quand je fais tourner un programme multi thread
bicause gestion concurrentielle des données
l'exemple avec les sleep démontre le contraire puisque j'ai bien
2 processus mais ceux sont des forck donc pas très pertinent
par contre si il y avait implémentation d'une émulation je me
retrouverais comme avec l'exemple de la jmv
un processus et plusieurs threads
donc pour savoir si il y a émulation d'une fonctionalité
il faudrait d'une part un bout de code posix en c qui utilise les
threads sous linux vérifier que l'on a plusieurs processus sous linux
histoire d'exploiter les architectures smp par exemple
donc trouve 2 programmes multi thread : un sous cygwin et sous linux
et l'histoire sera close
JKB a écrit :
Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :
JKB a écrit :
Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :
JKB a écrit :
En d'autres termes, lorsque tu lances une application Java, tu la
fais tourner dans une machine virtuelle. Si tu lances un exécutable
Cygwin, il tourne sous Windows avec les limitations imposées par le
noyau Windows (et les bibliothèques Cygwin qui sont en userland).
limitation limitation c'est vite dit
dans cygwin
sleep 60& sleep 60
http://cjoint.com/data/hEktVPyBuG.htm
Peux-tu m'expliquer ce qu'est le rapport avec la choucroute ?
import java.lang.Thread;
public class exemple extends Thread
{
String txt;
public exemple( String txt)
{
this.txt=txt;
}
public void run()
{
try {
while(true)
{
Thread.sleep(10);
System.out.println(txt);
}
} catch (InterruptedException e)
{ System.out.println("ouch!n");
return;
}
}
public static void main(String args[]) throws InterruptedException
{
Thread T1 = new exemple ("t1");
Thread T2 = new exemple ("t2");
T1.start();
T2.start();
}
}
javac exemple.java
java exemple
dans une autre console
remy@remy-desktop:~$ ps -xa |grep java
Warning: bad ps syntax, perhaps a bogus '-'? See
http://procps.sf.net/faq.html
14756 pts/0 Sl 0:00 java exemple
14827 pts/1 R+ 0:00 grep java
donc d'un côté 1 processus 2 threads userland le code java sous linux
et de l'autre sous windows 2 processus, bon ok pas 2 threads mais des
forck, les sleep
mais il y a bien gestion des processus sous cygwin donc il passe par
windows et non pas par une émulation d'une fonctionnalité du noyau en usr
Exprime-toi correctement parce qu'il faut te lire plusieurs fois
pour essayer de comprendre ce que tu veux bien dire.
c'est vrai que je ne suis pas très clair
si il y a émulation d'une fonctionnalité sous cygwin
donc je suis dans le user land donc il ne peut pas y avoir
plusieurs processus dans le gestionnaire de taches de windows
quand je fais tourner un programme multi thread
bicause gestion concurrentielle des données
l'exemple avec les sleep démontre le contraire puisque j'ai bien
2 processus mais ceux sont des forck donc pas très pertinent
par contre si il y avait implémentation d'une émulation je me
retrouverais comme avec l'exemple de la jmv
un processus et plusieurs threads
donc pour savoir si il y a émulation d'une fonctionalité
il faudrait d'une part un bout de code posix en c qui utilise les
threads sous linux vérifier que l'on a plusieurs processus sous linux
histoire d'exploiter les architectures smp par exemple
donc trouve 2 programmes multi thread : un sous cygwin et sous linux
et l'histoire sera close
JKB a écrit :Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :JKB a écrit :Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :JKB a écrit :En d'autres termes, lorsque tu lances une application Java, tu la
fais tourner dans une machine virtuelle. Si tu lances un exécutable
Cygwin, il tourne sous Windows avec les limitations imposées par le
noyau Windows (et les bibliothèques Cygwin qui sont en userland).
limitation limitation c'est vite dit
dans cygwin
sleep 60& sleep 60
http://cjoint.com/data/hEktVPyBuG.htm
Peux-tu m'expliquer ce qu'est le rapport avec la choucroute ?
import java.lang.Thread;
public class exemple extends Thread
{
String txt;
public exemple( String txt)
{
this.txt=txt;
}
public void run()
{
try {
while(true)
{
Thread.sleep(10);
System.out.println(txt);
}
} catch (InterruptedException e)
{ System.out.println("ouch!n");
return;
}
}
public static void main(String args[]) throws InterruptedException
{
Thread T1 = new exemple ("t1");
Thread T2 = new exemple ("t2");
T1.start();
T2.start();
}
}
javac exemple.java
java exemple
dans une autre console
:~$ ps -xa |grep java
Warning: bad ps syntax, perhaps a bogus '-'? See
http://procps.sf.net/faq.html
14756 pts/0 Sl 0:00 java exemple
14827 pts/1 R+ 0:00 grep java
donc d'un côté 1 processus 2 threads userland le code java sous linux
et de l'autre sous windows 2 processus, bon ok pas 2 threads mais des
forck, les sleep
mais il y a bien gestion des processus sous cygwin donc il passe par
windows et non pas par une émulation d'une fonctionnalité du noyau en usr
Exprime-toi correctement parce qu'il faut te lire plusieurs fois
pour essayer de comprendre ce que tu veux bien dire.
c'est vrai que je ne suis pas très clair
si il y a émulation d'une fonctionnalité sous cygwin
donc je suis dans le user land donc il ne peut pas y avoir
plusieurs processus dans le gestionnaire de taches de windows
quand je fais tourner un programme multi thread
bicause gestion concurrentielle des données
l'exemple avec les sleep démontre le contraire puisque j'ai bien
2 processus mais ceux sont des forck donc pas très pertinent
par contre si il y avait implémentation d'une émulation je me
retrouverais comme avec l'exemple de la jmv
un processus et plusieurs threads
donc pour savoir si il y a émulation d'une fonctionalité
il faudrait d'une part un bout de code posix en c qui utilise les
threads sous linux vérifier que l'on a plusieurs processus sous linux
histoire d'exploiter les architectures smp par exemple
donc trouve 2 programmes multi thread : un sous cygwin et sous linux
et l'histoire sera close
Mais je ne vois pas au nom quoi un code est une "implémentation" si il est
dans le noyau devrait subitement s'appeler une "émulation" si il passer en
userland.
Mais je ne vois pas au nom quoi un code est une "implémentation" si il est
dans le noyau devrait subitement s'appeler une "émulation" si il passer en
userland.
Mais je ne vois pas au nom quoi un code est une "implémentation" si il est
dans le noyau devrait subitement s'appeler une "émulation" si il passer en
userland.
si il y a émulation d'une fonctionnalité sous cygwin
donc je suis dans le user land donc il ne peut pas y avoir
plusieurs processus dans le gestionnaire de taches de windows
quand je fais tourner un programme multi thread
bicause gestion concurrentielle des données
Pardon ? Qu'est-ce qui s'y oppose ? Tu lances deux exécutables
indépendants qui effectuent chacun un sleep()... Il est parfaitement
normal d'avoir deux entrées dans la table des processus.
donc trouve 2 programmes multi thread : un sous cygwin et sous linux
et l'histoire sera close
à mon avis sauf erreur de raisonnement ou méconnaissance du bouzin
Les deux mon capitaine ;-)
JKB
si il y a émulation d'une fonctionnalité sous cygwin
donc je suis dans le user land donc il ne peut pas y avoir
plusieurs processus dans le gestionnaire de taches de windows
quand je fais tourner un programme multi thread
bicause gestion concurrentielle des données
Pardon ? Qu'est-ce qui s'y oppose ? Tu lances deux exécutables
indépendants qui effectuent chacun un sleep()... Il est parfaitement
normal d'avoir deux entrées dans la table des processus.
donc trouve 2 programmes multi thread : un sous cygwin et sous linux
et l'histoire sera close
à mon avis sauf erreur de raisonnement ou méconnaissance du bouzin
Les deux mon capitaine ;-)
JKB
si il y a émulation d'une fonctionnalité sous cygwin
donc je suis dans le user land donc il ne peut pas y avoir
plusieurs processus dans le gestionnaire de taches de windows
quand je fais tourner un programme multi thread
bicause gestion concurrentielle des données
Pardon ? Qu'est-ce qui s'y oppose ? Tu lances deux exécutables
indépendants qui effectuent chacun un sleep()... Il est parfaitement
normal d'avoir deux entrées dans la table des processus.
donc trouve 2 programmes multi thread : un sous cygwin et sous linux
et l'histoire sera close
à mon avis sauf erreur de raisonnement ou méconnaissance du bouzin
Les deux mon capitaine ;-)
JKB
On Thu, 30 Jul 2009 14:12:52 +0200, pehache-tolai wrote:Mais je ne vois pas au nom quoi un code est une "implémentation" si il est
dans le noyau devrait subitement s'appeler une "émulation" si il passer en
userland.
Encore une fois, d'après ce que j'ai compris, pour pouvoir implémenter
correctement les mutex ou je ne sais quelles autres saloperies, il est
nécessaire de passer par une émulation car le noyau Windows ne permet
pas ce genre de mécanisme et/ou l'accès à ce genre de mécanisme sous
windows est impossible sans l'accès aux sources de ce dernier.
Je ne pense pas que JKB dise que c'est parce que c'est en userland que
cette implémentation devient une émulation mais plutôt que parce
Windows ne permet pas une implémentation correcte de la chose, il est
nécessaire de passer par une émulation en userland.
On Thu, 30 Jul 2009 14:12:52 +0200, pehache-tolai wrote:
Mais je ne vois pas au nom quoi un code est une "implémentation" si il est
dans le noyau devrait subitement s'appeler une "émulation" si il passer en
userland.
Encore une fois, d'après ce que j'ai compris, pour pouvoir implémenter
correctement les mutex ou je ne sais quelles autres saloperies, il est
nécessaire de passer par une émulation car le noyau Windows ne permet
pas ce genre de mécanisme et/ou l'accès à ce genre de mécanisme sous
windows est impossible sans l'accès aux sources de ce dernier.
Je ne pense pas que JKB dise que c'est parce que c'est en userland que
cette implémentation devient une émulation mais plutôt que parce
Windows ne permet pas une implémentation correcte de la chose, il est
nécessaire de passer par une émulation en userland.
On Thu, 30 Jul 2009 14:12:52 +0200, pehache-tolai wrote:Mais je ne vois pas au nom quoi un code est une "implémentation" si il est
dans le noyau devrait subitement s'appeler une "émulation" si il passer en
userland.
Encore une fois, d'après ce que j'ai compris, pour pouvoir implémenter
correctement les mutex ou je ne sais quelles autres saloperies, il est
nécessaire de passer par une émulation car le noyau Windows ne permet
pas ce genre de mécanisme et/ou l'accès à ce genre de mécanisme sous
windows est impossible sans l'accès aux sources de ce dernier.
Je ne pense pas que JKB dise que c'est parce que c'est en userland que
cette implémentation devient une émulation mais plutôt que parce
Windows ne permet pas une implémentation correcte de la chose, il est
nécessaire de passer par une émulation en userland.
JKB a écrit :
si il y a émulation d'une fonctionnalité sous cygwin
donc je suis dans le user land donc il ne peut pas y avoir
plusieurs processus dans le gestionnaire de taches de windows
quand je fais tourner un programme multi thread
bicause gestion concurrentielle des données
Pardon ? Qu'est-ce qui s'y oppose ? Tu lances deux exécutables
indépendants qui effectuent chacun un sleep()... Il est parfaitement
normal d'avoir deux entrées dans la table des processus.
tu rigoles
parce que windows peut suspendre indépendamment chaque processus sans
tenir conte de l'atomicité ou exclusion
puisque le code est en user land et qui ne le prendra pas en compte
tu sais la fameuse émulation
JKB a écrit :
si il y a émulation d'une fonctionnalité sous cygwin
donc je suis dans le user land donc il ne peut pas y avoir
plusieurs processus dans le gestionnaire de taches de windows
quand je fais tourner un programme multi thread
bicause gestion concurrentielle des données
Pardon ? Qu'est-ce qui s'y oppose ? Tu lances deux exécutables
indépendants qui effectuent chacun un sleep()... Il est parfaitement
normal d'avoir deux entrées dans la table des processus.
tu rigoles
parce que windows peut suspendre indépendamment chaque processus sans
tenir conte de l'atomicité ou exclusion
puisque le code est en user land et qui ne le prendra pas en compte
tu sais la fameuse émulation
JKB a écrit :
si il y a émulation d'une fonctionnalité sous cygwin
donc je suis dans le user land donc il ne peut pas y avoir
plusieurs processus dans le gestionnaire de taches de windows
quand je fais tourner un programme multi thread
bicause gestion concurrentielle des données
Pardon ? Qu'est-ce qui s'y oppose ? Tu lances deux exécutables
indépendants qui effectuent chacun un sleep()... Il est parfaitement
normal d'avoir deux entrées dans la table des processus.
tu rigoles
parce que windows peut suspendre indépendamment chaque processus sans
tenir conte de l'atomicité ou exclusion
puisque le code est en user land et qui ne le prendra pas en compte
tu sais la fameuse émulation