Size: a a a

pro.osdev - os development

2021 August 02

BD

Berkus Decker in pro.osdev - os development
> Вопрос 2. Как часто при проектировании ОС разработчики думают об атомарности операций высокого уровня?

тогда, когда это имеет смысл.

> Соответственно, кажется полезным вообще все действия на любых уровнях стараться делать обратимыми.

это может оказаться неоправданно дорого
источник

BD

Berkus Decker in pro.osdev - os development
> Тогда  чтобы b был атомарным необходимо уметь откатить a1 и a2.

тут у тебя уже болльше трех шагов, да еще и с произвольными зависимостями, удачи с откатами этого всего
источник

BD

Berkus Decker in pro.osdev - os development
> И как часто при проектировании ОС разработчики думают об обратимости тех или иных операций?

тогда, когда это имеет смысл
источник

BD

Berkus Decker in pro.osdev - os development
например  для идемпотентных операций пофигу сколько раз  ты их выполнишь — если 1 или больше то и норм
источник

BD

Berkus Decker in pro.osdev - os development
вот если вопрос между 0 и 1 тогда  становится веселее
источник

BD

Berkus Decker in pro.osdev - os development
про атомарный апи https://www.cs.utah.edu/flux/papers/atomic-osdi99/index.html хороший вайтпейпер у брайана форда
источник

IJ

Igor 🐱 Jirkov in pro.osdev - os development
а почему потребовалось уметь делать атомарно именно сравнение со свопом? Я видел их в кучке lock-free алгоритмов но вот откуда ноги у них растут не знаю
источник

BD

Berkus Decker in pro.osdev - os development
пункт 4 особенно
источник

BD

Berkus Decker in pro.osdev - os development
потому что для лок фри алгоритмов важно уметь сравнить и поменять значение, не отвлекаясь
источник

BV

Boris Vinogradov in pro.osdev - os development
потому что самая частая операция это присваивание, ну и комментарий от @berkus он прям про это
источник

IJ

Igor 🐱 Jirkov in pro.osdev - os development
интересно, читаю
источник

BV

Boris Vinogradov in pro.osdev - os development
поэтому перед ос обычно и советуют иметь твёрдый CS
источник

IJ

Igor 🐱 Jirkov in pro.osdev - os development
ну то есть корни у этого алгоритмические типа "мы умели бы делать такие штуки без блокировок если бы у нас были атомарные CAS операции" — "нате вам CAS операции в железе".
источник

IJ

Igor 🐱 Jirkov in pro.osdev - os development
А дальше дизайним ещё алгоритмы поверх тех же CAS операций потому что они для этого подходят
источник

BD

Berkus Decker in pro.osdev - os development
Пункт  4.4 тебе вот  прям по твоему вопросу
источник

BV

Boris Vinogradov in pro.osdev - os development
единственный способ делать операции в памяти это иметь представление о том что ту ячейку которую ты меняешь никто до тебя не менял
источник

BD

Berkus Decker in pro.osdev - os development
ну ты лок фри  без cas не сделаешь, это будет чудовищное тормозное извращение
источник

BV

Boris Vinogradov in pro.osdev - os development
даже ты сам ранее)
источник

BV

Boris Vinogradov in pro.osdev - os development
@igorjirkov большинство команд в х86 не являются атомарными как по сути так и по фону исполнения
источник

BD

Berkus Decker in pro.osdev - os development
ну или они “атомарны” только на одном  ядре, а как только смп то пиши пропало
источник