Je comprends le concept des serrures, mutex et autres structures de synchronisation, mais comment sont-ils mis en œuvre? Sont-ils fournis par le système d'exploitation, ou ces structures dépendent-elles des instructions spéciales de la CPU pour la MMU des CPU?Comment les structures mutex et lock sont-elles implémentées?
Répondre
Vous voudrez peut-être regarder ces liens, mais le principal est le test-and-set sur Wikipédia: http://en.wikipedia.org/wiki/Test-and-set
Vous pouvez également consulter ce brevet: http://www.faqs.org/patents/app/20080222331
La plupart des mécanismes d'exclusion mutuelle et de synchronisation utilisent des opérations atomiques matérielles, comme d'autres l'ont souligné. Cependant, il est possible d'implémenter l'exclusion mutuelle entièrement dans un logiciel. Voir Dekker's algorithm, et également des algorithmes connexes par Peterson et Lamport. Bien que ceux-ci soient principalement d'intérêt historique maintenant que les atomics matériels sont omniprésents, j'ai travaillé sur des systèmes "intéressants" (toujours en production) où des techniques logicielles sont encore nécessaires.
- 1. Lock, moniteur, Mutex
- 2. MySql: Comment utiliser mutex/lock dans une procédure stockée
- 3. Comment les variables de condition sont-elles implémentées?
- 4. Pourquoi les performances de `try_lock` se comportent-elles toujours comme 'lock` sur un mutex?
- 5. Comment les coroutines sont-elles implémentées?
- 6. Comment les références faibles sont-elles implémentées?
- 7. boost :: mutex/Comment tester si un mutex est verrouillé
- 8. Différences entre les structures et les classes?
- 9. Comment fonctionnent les structures cachées?
- 10. VB10, propriétés implémentées automatiquement et COM
- 11. Déterminer les interfaces implémentées par un type
- 12. structures, héritage et définition
- 13. structures et structures d'initialisation de nidification
- 14. Fortran structures et pointeurs
- 15. C++ structures et constructures
- 16. Acquérir un verrou sur deux mutex et éviter les interblocages
- 17. Comment les implémentations d'interface explicites sont-elles implémentées dans IL?
- 18. Comment les actions Perl Catalyst sont-elles implémentées?
- 19. Structures Lua et Alien
- 20. C# mutex - appel d'erreur depuis ASP.NET et l'application console
- 21. Emulation JQuery 'binary lock'
- 22. pointeur double et structures
- 23. Les structures dynamiques échouent
- 24. Comment les structures fonctionnent-elles en Java?
- 25. C++ Débutant - Difficulté à utiliser les structures et les constantes!
- 26. Tortoise SVN auto lock
- 27. Verrous Mutex contre les verrous de filetage. Lequel utiliser?
- 28. structures dans les tableaux
- 29. Blackberry Keyboard Lock timeout
- 30. Sérialisation Xaml et structures immuables?