Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Debian possède ENFIN un noyau entièrement libre...

104 réponses
Avatar
P4nd1-P4nd4
Ca mérite tout de même d'être souligné...

http://digitizor.com/2010/12/16/debian-6-0-squeeze-to-come-with-a-completely-free-linux-kernel/

10 réponses

Avatar
talon
JKB wrote:
> En quoi le fait qu'il y ait une centaine de threads
> peut-il conduire à la sous utilisation d'au plus une huitaine de
> processeurs?

Imagine qu'à un moment, chacun de tes threads travaille sur 8 Go de



Je ne comprends rien, tous les threads voient la *même* mémoire commune
(sauf le "thread local storage") donc à priori les 8 threads n'utilisent
que 8 Go de mémoire. Qu'il faille protéger par des mutex des parties de
ces 8 Go pour que les accés des threads ne se marchent pas sur les pieds
est une autre chose. Ou alors tu fais tout ton calcul en local dans chaque
thread, ce qui est grosso modo le moyen de ne pas bénéficier de la
mémoire partagée. Autant faire les calculs dans des processus
indépendants et communiquer par pipe!

Tu peux aussi réinventer l'eau chaude à chaque fois que tu prends
une douche. Enfin, pourquoi faire simple quand on peut faire
compliqué...



Compliqué, tu veux rire, c'est de l'ordre de 10 lignes de C que tu peux
mettre dans une fonction au début de ton programme. Une variable qu'on
peut incrémenter ou décrémenter (les opérations de sémaphore) protégée
par un mutex, et une variable de condition qui teste si cette variable
est nulle, voilà l'alpha et l'omega de cette affaire.


JKB




--

Michel TALON
Avatar
Yliur
:-(
http://linux-attitude.fr/post/processus-et-threads

Un thread, c'est un découpage d'un processus. Cela veut dire qu'il
utilise exactement la même mémoire qu'un processus, ainsi que les
mêmes descripteurs de fichiers



Le fil d'exécution peut ou non partager ses données avec le voisin.
S'ils font deux calculs séparés, ils traitent chacun leurs données dans
leur coin.

ou tu as vue qu'un processus devait savoir si il était dans le swap



Il n'a pas dit qu'il devait le savoir mais que si tu n'as de
mémoire que pour lancer 6 requêtes simultanées et que tu as 15 demandes
il vaut mieux éviter de laisser tous les traitements se faire en
parallèle et en sérialiser certains. S'assurer qu'il n'y a pas plus de
6 calculs en cours à un moment donné, sinon le système commence à
utiliser la partition d'échange au lieu de tout faire en mémoire.
Avatar
JKB
Le Wed, 22 Dec 2010 16:29:25 +0000 (UTC),
Michel Talon écrivait :
JKB wrote:
> En quoi le fait qu'il y ait une centaine de threads
> peut-il conduire à la sous utilisation d'au plus une huitaine de
> processeurs?

Imagine qu'à un moment, chacun de tes threads travaille sur 8 Go de



Je ne comprends rien, tous les threads voient la *même* mémoire commune
(sauf le "thread local storage") donc à priori les 8 threads n'utilisent
que 8 Go de mémoire. Qu'il faille protéger par des mutex des parties de
ces 8 Go pour que les accés des threads ne se marchent pas sur les pieds
est une autre chose. Ou alors tu fais tout ton calcul en local dans chaque
thread, ce qui est grosso modo le moyen de ne pas bénéficier de la
mémoire partagée. Autant faire les calculs dans des processus
indépendants et communiquer par pipe!



Tu peux avoir des données _partagées_ et d'autres qui ne le sont
pas.

Et la synchronisation par pipe est un truc inefficace car c'est
asynchrone _et_ bufferisé. Là encore, tu fais ce que tu veux.

Tu peux aussi réinventer l'eau chaude à chaque fois que tu prends
une douche. Enfin, pourquoi faire simple quand on peut faire
compliqué...



Compliqué, tu veux rire, c'est de l'ordre de 10 lignes de C que tu peux
mettre dans une fonction au début de ton programme. Une variable qu'on
peut incrémenter ou décrémenter (les opérations de sémaphore) protégée
par un mutex, et une variable de condition qui teste si cette variable
est nulle, voilà l'alpha et l'omega de cette affaire.



Je repose donc la question : pourquoi veux-tu absolument utiliser
des fonctions de dix lignes alors qu'un simple appel à un sémaphore
suffit. Et ne me réponds pas que c'est parce que MacOS X ne gère pas
correctement les sémaphores parce que je connais largement plus de
systèmes dont la gestion des variables conditionnelles sont buggués
que d'OS dont les sémaphores le sont.

Mais tu as parfaitement le droit de choisir ton poison.

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Avatar
remy
On 22 déc, 17:29, Yliur wrote:
> :-(
>http://linux-attitude.fr/post/processus-et-threads

> Un thread, c'est un d coupage d'un processus. Cela veut dire qu'il
> utilise exactement la m me m moire qu'un processus, ainsi que les
> m mes descripteurs de fichiers

Le fil d'ex cution peut ou non partager ses donn es avec le voisin.
S'ils font deux calculs s par s, ils traitent chacun leurs donn es dans
leur coin.

> ou tu as vue qu'un processus  devait savoir si il tait dans le swap

Il n'a pas dit qu'il devait le savoir mais que si tu n'as de
m moire que pour lancer 6 requ tes simultan es et que tu as 15 demandes
il vaut mieux viter de laisser tous les traitements se faire en
parall le et en s rialiser certains. S'assurer qu'il n'y a pas plus de
6 calculs en cours un moment donn , sinon le syst me commence
utiliser la partition d' change au lieu de tout faire en m moire.



mais non il c'est juste mélanger les pinceaux et il ne veut pas le
reconnaitre et je le taquine c'est tout

remy
Avatar
JKB
Le Wed, 22 Dec 2010 09:22:16 -0800 (PST),
remy écrivait :
On 22 déc, 17:29, Yliur wrote:
> :-(
>http://linux-attitude.fr/post/processus-et-threads

> Un thread, c'est un d coupage d'un processus. Cela veut dire qu'il
> utilise exactement la m me m moire qu'un processus, ainsi que les
> m mes descripteurs de fichiers

Le fil d'ex cution peut ou non partager ses donn es avec le voisin.
S'ils font deux calculs s par s, ils traitent chacun leurs donn es dans
leur coin.

> ou tu as vue qu'un processus  devait savoir si il tait dans le swap

Il n'a pas dit qu'il devait le savoir mais que si tu n'as de
m moire que pour lancer 6 requ tes simultan es et que tu as 15 demandes
il vaut mieux viter de laisser tous les traitements se faire en
parall le et en s rialiser certains. S'assurer qu'il n'y a pas plus de
6 calculs en cours un moment donn , sinon le syst me commence
utiliser la partition d' change au lieu de tout faire en m moire.



mais non il c'est juste mélanger les pinceaux et il ne veut pas le
reconnaitre et je le taquine c'est tout



Tu ne taquines strictement rien. Tu viens juste comme à ton habitude
de raconter une grosse conceté. N'essaye pas de te raccrocher aux
branches. Un processus n'utilise le swap qu'à partir du moment où il
y a un défaut de page _et_ plus de page disponible en RAM. Si tu te
démerdes pour que toutes tes données tiennent en mémoire, il n'y a
aucune raison de commencer à swapper. C'est donc à toi de limiter
avec un sémaphore l'occupation de la mémoire pour éviter d'utiliser
le swap.

Ça veux dire deux choses : que tu comprennes ce qu'est un processus,
ce qu'est un thread (et que tu admettes que tu peux avoir dans deux
threads du même espace mémoire des données qui ne sont pas
partagées) et surtout comment tout ce beau monde est géré.

Je crois que tu as encore un peu de boulot.

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Avatar
Nicolas George
JKB , dans le message , a
écrit :
Je repose donc la question : pourquoi veux-tu absolument utiliser
des fonctions de dix lignes alors qu'un simple appel à un sémaphore
suffit.



Au hasard, parce qu'un sémaphore, c'est systématiquement un appel système,
alors qu'un mutex, presque systématiquement, ce sera complètement userland.
Avatar
remy
On 22 déc, 18:30, JKB wrote:
Le Wed, 22 Dec 2010 09:22:16 -0800 (PST),
remy écrivait :



> On 22 déc, 17:29, Yliur wrote:
>> > :-(
>> >http://linux-attitude.fr/post/processus-et-threads

>> > Un thread, c'est un d coupage d'un processus. Cela veut dire qu'il
>> > utilise exactement la m me m moire qu'un processus, ainsi que les
>> > m mes descripteurs de fichiers

>> Le fil d'ex cution peut ou non partager ses donn es avec le voisin.
>> S'ils font deux calculs s par s, ils traitent chacun leurs donn es dan s
>> leur coin.

>> > ou tu as vue qu'un processus  devait savoir si il tait dans le swa p

>> Il n'a pas dit qu'il devait le savoir mais que si tu n'as de
>> m moire que pour lancer 6 requ tes simultan es et que tu as 15 demande s
>> il vaut mieux viter de laisser tous les traitements se faire en
>> parall le et en s rialiser certains. S'assurer qu'il n'y a pas plus de
>> 6 calculs en cours un moment donn , sinon le syst me commence
>> utiliser la partition d' change au lieu de tout faire en m moire.

> mais non il c'est juste mélanger les pinceaux et il ne veut pas le
> reconnaitre et je le taquine c'est tout

        Tu ne taquines strictement rien. Tu viens juste comme à ton habitude
        de raconter une grosse conceté. N'essaye pas de te racc rocher aux
        branches. Un processus n'utilise le swap qu'à partir du moment où il
        y a un défaut de page _et_ plus de page disponible en R AM. Si tu te
        démerdes pour que toutes tes données tiennent en mé moire, il n'y a
        aucune raison de commencer à swapper. C'est donc à to i de limiter
        avec un sémaphore l'occupation de la mémoire pour é viter d'utiliser
        le swap.

        Ça veux dire deux choses : que tu comprennes ce qu'est un processus,
        ce qu'est un thread (et que tu admettes que tu peux avoir dans deux
        threads du même espace mémoire des données qui ne s ont pas
        partagées) et surtout comment tout ce beau monde est g éré.



cela implique que tu fais de la gestion dynamique des threads en
fonction de la mémoire dispo donc tu as un tas géré à la mimine
rien ne t'empêche de suspendre les threads avec un mutex
maintenant tu peux aussi le faire avec des sémaphores les goûts et
les
couleurs hein,

tu es encore dans les 0.1 % de cas a la con
mais ce n'est pas bloquant que tu le veuilles ou pas

        Je crois que tu as encore un peu de boulot.



mais oui,n'hésite pas

remy
Avatar
JKB
Le Wed, 22 Dec 2010 10:01:26 -0800 (PST),
remy écrivait :
On 22 déc, 18:30, JKB wrote:
Le Wed, 22 Dec 2010 09:22:16 -0800 (PST),
remy écrivait :



> On 22 déc, 17:29, Yliur wrote:
>> > :-(
>> >http://linux-attitude.fr/post/processus-et-threads

>> > Un thread, c'est un d coupage d'un processus. Cela veut dire qu'il
>> > utilise exactement la m me m moire qu'un processus, ainsi que les
>> > m mes descripteurs de fichiers

>> Le fil d'ex cution peut ou non partager ses donn es avec le voisin.
>> S'ils font deux calculs s par s, ils traitent chacun leurs donn es dans
>> leur coin.

>> > ou tu as vue qu'un processus  devait savoir si il tait dans le swap

>> Il n'a pas dit qu'il devait le savoir mais que si tu n'as de
>> m moire que pour lancer 6 requ tes simultan es et que tu as 15 demandes
>> il vaut mieux viter de laisser tous les traitements se faire en
>> parall le et en s rialiser certains. S'assurer qu'il n'y a pas plus de
>> 6 calculs en cours un moment donn , sinon le syst me commence
>> utiliser la partition d' change au lieu de tout faire en m moire.

> mais non il c'est juste mélanger les pinceaux et il ne veut pas le
> reconnaitre et je le taquine c'est tout

        Tu ne taquines strictement rien. Tu viens juste comme à ton habitude
        de raconter une grosse conceté. N'essaye pas de te raccrocher aux
        branches. Un processus n'utilise le swap qu'à partir du moment où il
        y a un défaut de page _et_ plus de page disponible en RAM. Si tu te
        démerdes pour que toutes tes données tiennent en mémoire, il n'y a
        aucune raison de commencer à swapper. C'est donc à toi de limiter
        avec un sémaphore l'occupation de la mémoire pour éviter d'utiliser
        le swap.

        Ça veux dire deux choses : que tu comprennes ce qu'est un processus,
        ce qu'est un thread (et que tu admettes que tu peux avoir dans deux
        threads du même espace mémoire des données qui ne sont pas
        partagées) et surtout comment tout ce beau monde est géré.



cela implique que tu fais de la gestion dynamique des threads en
fonction de la mémoire dispo donc tu as un tas géré à la mimine
rien ne t'empêche de suspendre les threads avec un mutex
maintenant tu peux aussi le faire avec des sémaphores les goûts et
les
couleurs hein,



<soupir>

tu es encore dans les 0.1 % de cas a la con
mais ce n'est pas bloquant que tu le veuilles ou pas



<soupir>

        Je crois que tu as encore un peu de boulot.



mais oui,n'hésite pas



<soupir>

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Avatar
JKB
Le Wed, 22 Dec 2010 19:27:39 +0100,
crouic écrivait :

Je ne comprend pas pourquoi la traduction (voire la version
originale) n'emploie pas le terme de driver/pilote pour les
translators/traducteurs, puisqu'ils sont des serveurs servant à ça.
Ou alors j'ai rien compris ^^







Parce que le pilote en question n'a pas à s'adresser directement au
matériel d'autant que même s'il le voulait, il ne le pourrait pas.
C'est à la roottask de le faire. C'est en ce sens que c'est un
traducteur et non un pilote. Par ailleurs, on empile les pilotes.
Typiquement pour accéder à un disque, on empile un bazar qui fait un
lien physique (pour le partitionnement), un truc qui établit un lien
logique (pour le système de fichier) et un bidule qui contrôle le
contrôleur de disque (pour accéder au bus SCSI au travers du PCI).
Et tout ce beau monde hiérarchisé se renvoient des IPC.

?
Là il faut faire appel à un plus grand spécialiste des
(micro-)noyaux, c'est encore légèrement flou :) . Demandons à JKB à
tout hasard...

Sinon les traducteurs ne sont pas forcément des pilotes pour le
matériel, ils servent à représenter quelque chose sous la forme d'un
système de fichier (si je ne dis pas de bêtises). Par exemple on peut
avoir un traducteur représentant l'arbre des discussions de ce groupe
sous forme d'un ensemble de fichiers/répertoire.




Je traduis une doc, cela me permet de retenir ce que je lit. Je passerai le lien
s'il y a des amateurs.
Ce ne sont pas des pilotes effectivement, c'est plus que cela. La philosophie
"tout est fichier" est poussée à l'extrême et les "pilotes" actuels seraient des
fichiers spéciaux, qui se brancheraient sur d'autres fichiers spéciaux tels les
périphériques. Finalement, tout ce monde est en mode utilisateur,



Non, c'est un peu plus compliqué que ça. Un micronoyau, c'est un
noyau en mode 'noyau', une roottask en mode que l'on va appeler
'privilégié' et un ensemble de serveurs ou de tâches en mode
'utilisateur'. Vu du processeur, la roottask est en mode
utilisateur, mais seule la roottask peut envoyer certains appels
systèmes privilégiés.

Maintenant, un micronoyau ne connaît que des fils ou des threads,
mais ce ne sont _pas_ des threads au sens d'un système
d'exploitation. Ce sont des fils d'exécution qui s'exécutent dans
des espaces mémoires distincts ou non, ce qui fait que même en mode
utilisateur, tu peux parfaitement isoler totalement les fils
d'exécution du noyau, ce qui n'est pas le cas pour un système
monolithique.

et chacuns
peut se connecter au autres, et l'objectif est la liberté maximale pour
l'utilisateur qui gère les inter-connexions comme il le souhaite, changer chaque
partie du système sans droits particuliers, et sans reboot. On peut même
enchaîner les micro-noyaux ^^.

Mais une question reste sans réponse, il puisqu'il y a des personnes qualifiées
sur ce fil j'en profite: si les limitations des micro-noyaux sont les
basculements en mode noyau/utilisateur et les IPC, l'architecture actuelle des
microprocesseurs n'est-elle pas en cause ? N'est-elle pas (trop) optimisée pour
le noyaux monolithiques, ou bien le basculement de mode est-il une tare de type
386 trainée comme un boulet ?



Pas exactement. Mach est mauvais parce que ses IPC sont asynchrones.
C'est pour palier à ce problème qu'il est devenu hybride. Un noyau
comme L4 ne rajoute que très peu d'overhead et gère très bien les
IPC et les changements de contexte. En contrepartie, il est assez
complexe et permet d'écrire des OS à temps réel. Ses IPC sont
synchrones et c'est vraiment appréciable.

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Avatar
remy
On 22 déc, 19:27, crouic wrote:
>> Je ne comprend pas pourquoi la traduction (voire la version
>> originale) n'emploie pas le terme de driver/pilote pour les
>> translators/traducteurs, puisqu'ils sont des serveurs servant à ça .
>> Ou alors j'ai rien compris ^^

> ?
> Là il faut faire appel à un plus grand spécialiste des
> (micro-)noyaux, c'est encore légèrement flou :) . Demandons à JKB à
> tout hasard...

> Sinon les traducteurs ne sont pas forcément des pilotes pour le
> matériel, ils servent à représenter quelque chose sous la forme d 'un
> système de fichier (si je ne dis pas de bêtises). Par exemple on pe ut
> avoir un traducteur représentant l'arbre des discussions de ce groupe
> sous forme d'un ensemble de fichiers/répertoire.

Je traduis une doc, cela me permet de retenir ce que je lit. Je passerai le lien
s'il y a des amateurs.
Ce ne sont pas des pilotes effectivement, c'est plus que cela. La philoso phie
"tout est fichier" est poussée à l'extrême et les "pilotes" actuels seraient des
fichiers spéciaux, qui se brancheraient sur d'autres fichiers spéciau x tels les
périphériques. Finalement, tout ce monde est en mode utilisateur, et chacuns
peut se connecter au autres, et l'objectif est la liberté maximale pour
l'utilisateur qui gère les inter-connexions comme il le souhaite, chang er chaque
partie du système sans droits particuliers, et sans reboot. On peut m ême
enchaîner les micro-noyaux ^^.

Mais une question reste sans réponse, il puisqu'il y a des personnes qu alifiées
sur ce fil j'en profite: si les limitations des micro-noyaux sont les
basculements en mode noyau/utilisateur et les IPC, l'architecture actuell e des
microprocesseurs n'est-elle pas en cause ? N'est-elle pas (trop) optimis ée pour
le noyaux monolithiques, ou bien le basculement de mode est-il une tare d e type
386 trainée comme un boulet ?



Je ne suis pas un vrai spécialiste du micro noyaux

mais les services sont en théorie un user-land
et doivent communiquer avec le « noyaux maitre en mode protéger»

j'excite ,je suis libre /occupe,avec une communication synchrone/
asynchrone
bufferisation des msg ,ect

et multiplier les services c'est multiplier les appels systèmes
et un appel système c'est tout sauf anodin en terme de ressource
utilisee, je ne suis pas sur que l'architecture hard y soit pour
quelque chose

mes 3 centimes d'euro

remy