Capisco il concetto di blocchi, mutex e altre strutture di sincronizzazione, ma come vengono implementati? Sono forniti dal sistema operativo o queste strutture dipendono da speciali istruzioni CPU per la CPU MMU?Come sono implementate le strutture di mutex e lock?
risposta
Si consiglia di guardare a questi link, ma il principale è il test-and-set su Wikipedia: http://en.wikipedia.org/wiki/Test-and-set
È inoltre possibile guardare a questo brevetto: http://www.faqs.org/patents/app/20080222331
La maggior parte dei meccanismi di esclusione e sincronizzazione reciproca utilizzano operazioni atomiche dell'hardware, come altri hanno sottolineato. Tuttavia, è possibile implementare l'esclusione reciproca interamente nel software. Vedere Dekker's algorithm, e anche algoritmi correlati da Peterson e Lamport. Sebbene questi siano principalmente di interesse storico ora che l'atomica dell'hardware è onnipresente, ho lavorato su sistemi "interessanti" (ancora in produzione) in cui le tecniche software sono ancora necessarie.
- 1. Thread lock mutex
- 2. Le liste Lisp sono sempre implementate come elenchi concatenati?
- 3. Come sono implementate le costanti __LINE__ e __FILE__ in Ruby?
- 4. chiamata mutex try-lock contro chiamate CAS
- 5. Cosa sono le raccolte implementate come in VB6?
- 6. Come std :: mutex :: lock finché la funzione non restituisce
- 7. Mutex Lock (JS) Condiviso tra più schede di un browser?
- 8. Perché una variabile di condizione ha bisogno di un lock (e quindi anche di un mutex)
- 9. Quali sono le strutture dati probabilistiche?
- 10. Quali sono le grandi strutture web oggi?
- 11. Le variabili CSS sono implementate in qualsiasi browser moderno?
- 12. Come vengono implementate le enumerazioni in Java?
- 13. mutex e blocchi
- 14. Condizione variabile e mutex condivisa
- 15. confrontare e convalidare le strutture di dati
- 16. Come vengono implementate le funzioni iomanip?
- 17. In che modo le tuple nominate sono implementate internamente in python?
- 18. boost :: mutex :: ~ mutex(): Asserzione `! Pthread_mutex_destroy (& m) 'fallita
- 19. Quali sono alcuni casi d'uso per le strutture di tupla?
- 20. Come vengono implementate le variabili pigri locali di Scala?
- 21. Come funzionano le applicazioni Android "app lock"?
- 22. Cosa sono esattamente i "spin-lock"?
- 23. Perché i mutex e le variabili di condizione sono facilmente copiabili?
- 24. boost scoped_lock vs plain lock/unlock
- 25. PTHREAD_MUTEX_INITIALIZER vs pthread_mutex_init (& mutex, param)
- 26. Quali funzionalità di dattiloscritto non sono implementate in ES6?
- 27. Inizializzazione statica per le strutture che estendono le strutture
- 28. Cosa sono le strutture dati in Objective-C?
- 29. Quali funzionalità di Scala sono implementate internamente utilizzando la riflessione?
- 30. Come vengono implementate le espressioni regolari in .NET?