OVH Cloud OVH Cloud

Windows est rapide, Microsoft est meilleure

388 réponses
Avatar
Jérémie Bottone
debug this fifo a formulé la demande :
> Jérémie Bottone wrote:
>
>> - Lent
>
> windows aussi est lent.





Faut, il n'y a qu'à voir le temps pour ouvrir OpenOffice ou Mozilla
sous Windows ou Linux, et on jette Linux

Dans l'ensemble, n'importe quellles t'aches faites sous Windows, par un
utilisateur expérimenté ou pas, sont faites beaucoup plus rapidment,
qu'elles soient locales ou distantes

Pourquoi ? Car Linux est un système bricolé par des bricoleurs, basé
sur du code UNIX datant de 30 ans

Les programmeurs LINUX sont incapable de faire des logiciels terminés
qui fonctionnement bien, d'où e pourquoi du larmoyement et du
pleurnichage perpetuel, de la victimisation même

Alors ils disent: Bouhhhhhh, tous les codes sources doivent être
ouverts !

(Ceci pour éviter de se donner de la peine de développer, et de pouvoir
"pomper" allieurs ce qu'ils sont incapanle de réaliser)

Je hais LINUX et cette mentalité

Microsoft, est une usine de développement, dont il sort des milliers de
logiciels de qualité, s'attirant la jalousie de tous les pingouins du
monde

...Et LINUX C'EST DE LA MERDE

JB

10 réponses

Avatar
Toxico Nimbus
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 ?
--
Toxico Nimbus
Avatar
JKB
Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
Toxico Nimbus ?crivait dans fr.comp.os.linux.debats :
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 ?



Ça dépend essentiellement des OS hôtes (et c'est pour cela que le
portage des JVM est vraiment complexe...). De toute façon, on parlait
de threads Posix.

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
Toxico Nimbus
Le 30/07/2009 11:44, Bruno Ducrot a écrit :
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.



A partir du moment où il y a préemption, il y a un passage en mode
noyau. Aucun bout de code utilisateur ne peut empêcher le noyau de
reprendre la main. Il y aura donc forcément un appel dans ton serveur
lock manager vers le noyau pour désactiver l'ordonnanceur et les
interruptions le temps d'exécuter la portion critique.
On en revient toujours au même : ce n'est implémentable en mode
utilisateur que si le noyau possède déjà toutes les fonctionnalités de
base. Ce sera aussi le cas pour la gestion des signaux, les sémaphores etc.

--
Toxico Nimbus
Avatar
remy
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

remy







--
http://remyaumeunier.chez-alice.fr/
Avatar
JKB
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 :
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



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.

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



Absolument pas. Le problème d'atomicité survient à l'intérieur d'un
code multithreadé. Il est rare d'avoir des problèmes d'atomicité (je ne
parle pas de temps réel) entre deux processus.

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



Les deux mon capitaine ;-)

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
Toxico Nimbus
Le 30/07/2009 14:19, remy a écrit :
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



Il n'y a pas de fork dans ton exemple : tu lance deux fois une commande
"simultanément" ; le système crée un processus pour chaque commande, ce
qui est un fonctionnement normal auquel Cygwin ne change rien.

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



Ce sont des threads Java, donc interne à la JVM. C'est la JVM qui gère
la cohésion des données, l'atomicité et l'ordonnancement, elle n'a donc
aucune raison d'avoir recours au noyau.

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



On parle de threads, pas de processus. Toutes les librairies de threads
ont pour but d'implémenter de vrais threads, qui partagent le même
espace d'adressage que le processus père.

donc trouve 2 programmes multi thread : un sous cygwin et sous linux
et l'histoire sera close



Même à trouver - ou à écrire - ledit programme, comment peux-tu vérifier
qu'il n'a pas recours au noyau ?

--
Toxico Nimbus
Avatar
doug713705
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.

En fait, le lien de cause à effet a été mal expliqué d'un
coté et mal interprété de l'autre.

Je te dis que tout le monde il a gagné... ;-)
--
Doug713705
Avatar
remy
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




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 ;-)



possible mon lieutenant


JKB





--
http://remyaumeunier.chez-alice.fr/
Avatar
JKB
Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
doug713705 ?crivait dans fr.comp.os.linux.debats :
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.



C'est exactement ça.

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Avatar
JKB
Le 30-07-2009, ? propos de
Re: Windows est rapide, Microsoft est meilleure,
remy ?crivait dans fr.comp.os.linux.debats :
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



Je viens de relire attentivement plusieurs fois sans rien
comprendre. Exprime-toi en français, s'il te plaît.

JKB

--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.