La très grande majorité des verrous ne pose pas de problème de contention. Lorsqu'il y a un problème de contention, il est structurel et confiné à un niveau très fin (du moins dans Linux, qui utilise une politique de verrouillage fin), et le problème ne disparaîtrait pas magiquement par l'emploi d'un micro-noyau et le déport de la gestion de la ressource dans un processus (selon les cas il pourrait même au contraire être exacerbé).
De plus les systèmes asynchrones introduisent leur propres soucis (précisément du fait de l'asynchronisme) et dans la pratique ils sont de plus souvent partiellement encapsulés dans une couche supplémentaire pour fournir des services synchrones... L'overhead par rapport à un appel de fonction classique est ... grand.
Linux utilise aussi des primitives thread-safe lock-free très avancées et très performantes (ex: RCU) qu'il serait probablement très difficile (si ce n'est impossible) d'adapter pour l'userspace.
Dans certains cas les spinlocks conviennent tout à fait et la solution serait nécessairement plus complexe en userspace, par exemple pour de la communication ISR / partie synchrone d'un driver, sous certaines hypothèses.
Pour finir l'expérience a montré que le confinement des défaillances qu'on pensait être une des killer feature des micro-noyau n'est pas si effectif que cela (le système peut tout de même s'effondrer par effet domino dans de nombreux cas), en plus de n'être plus si nécessaire aujourd'hui (les noyaux modernes plantent peu).
[^] # Re: Petite question: noyau monolithique?
Posté par Guillaume Knispel . En réponse à la dépêche Nouvelle version 2.6.27 du noyau Linux. Évalué à 6.
De plus les systèmes asynchrones introduisent leur propres soucis (précisément du fait de l'asynchronisme) et dans la pratique ils sont de plus souvent partiellement encapsulés dans une couche supplémentaire pour fournir des services synchrones... L'overhead par rapport à un appel de fonction classique est ... grand.
Linux utilise aussi des primitives thread-safe lock-free très avancées et très performantes (ex: RCU) qu'il serait probablement très difficile (si ce n'est impossible) d'adapter pour l'userspace.
Dans certains cas les spinlocks conviennent tout à fait et la solution serait nécessairement plus complexe en userspace, par exemple pour de la communication ISR / partie synchrone d'un driver, sous certaines hypothèses.
Pour finir l'expérience a montré que le confinement des défaillances qu'on pensait être une des killer feature des micro-noyau n'est pas si effectif que cela (le système peut tout de même s'effondrer par effet domino dans de nombreux cas), en plus de n'être plus si nécessaire aujourd'hui (les noyaux modernes plantent peu).