Я понимаю концепцию блокировок, мьютексов и других структур синхронизации, но как они реализованы? Предоставляются ли они ОС, или эти структуры зависят от специальных инструкций CPU для процессоров MMU?
Как реализованы мьютексы и блокировки?
Ответ 1
Возможно, вам захочется взглянуть на эти ссылки, но главным из них является Test-and-set в Wikipedia: http://en.wikipedia.org/wiki/Test-and-set
Вы также можете посмотреть на этот патент: http://www.faqs.org/patents/app/20080222331
Ответ 2
Большинство механизмов взаимного исключения и синхронизации используют аппаратные атомные операции, как указывали другие. Однако возможно полное взаимное исключение в программном обеспечении. См. алгоритм Деккера, а также связанные алгоритмы Peterson и Lamport. Хотя они в первую очередь представляют собой исторический интерес, поскольку аппаратная атомистика вездесуща, я работал над "интересными" системами (все еще в производстве), где по-прежнему необходимы программные средства.