• [^] # Re: vs POSIX shared memory, read-only

    Posté par . En réponse à la dépêche PTT : un outil de trace pour la NPTL. Évalué à 2.

    Les SMP peuvent gêner les locks non atomiques autant qu'un appel système !

    Euh.... Un lock non atomique ? Heureusement que la pose des locks est toujours atomique, c'est bien assez le bordel comme çà. Si en plus il fallait utiliser des sous-locks pour prélocker les locks on s'en sortirait plus. Ensuite le kernel n'est interruptible que si il le veut bien (même par un autre bout de kernel tournant sur un des CPUs d'à coté). Et à partir du moment ou un CPU fait un check sur une ressource tous les autres CPUs sont automatiquement blockés pour cette ressource, voir pour cette plage de ressources (2 CPUs différents ne peuvent pas accéder une même banque mémoire en même temps). Donc si le kernel veut faire une série de tests complexes (ie non atomiques) sur une ressource précise et faire le lock seulement si les tests sont validés, c'est pas le CPU d'à coté qui va l'en empécher (et ça tombe bien d'ailleurs, parceque sinon sur les multis-pros de type "tiens ? et si on mettait 20 000 pentium pro à la queue leu leu" ca serait drole). Le problème viendra plutôt d'une interruption matérielle.

    Un spinlock consiste à boucler sur une instruction "test&set" atomique du processeur.

    Nous sommes d'accord sur la définition, maintenant j'aimerais juste que tu m'expliques comment cette boucle peut être atomique.
    Si c'est l'instruction "test&set" qui doit être atomique, sache qe tous les processeurs depuis la préhistoire de l'informatique savent faire des opérations atomiques de type "test&set".