185 похожих чатов

У меня тут внезапно три высокоуровневых вопроса про ОС. Вычислительные

системы часто строятся послойно, в т.ч. в операционных системах этот принцип тоже прослеживается. Меня интересует вопрос создания атомарной операции на некотором уровне этой системы. Атомарность здесь в смысле "после выполнения операции система или практически в том же состоянии, что и до, или полностью перешла в корректное новое состояние". Не бывает, что произошло ужасное и система осталась в "грязном" состоянии (кроме совсем ужасных ситуаций типа взрыва бомбы).

В этой книжке (конкретно в этой главе) я прочитал, что рапространённый способ этого свойства достичь — разбить операцию на три части:

1. Подготовка (всякая блокировка ресурсов и т.д.) — часть, которую всегда можно откатить и которая не приводит к разрушению текущего состояния
2. Атомарная операция-"коммит" более низкого уровня
3. Часть, которая зафейлиться не может, или можно всегда её доделать: разблокировка ресурсов и т.д.


Вопрос первый. Правда ли, что CAS инструкции появились как атомарные операции самого низкого уровня, удобные для реализации атомарных операций более высокого уровня? Например, формировать новое состояние не деструктивно, а рядом со старым, а затем поменять указатель на состояние атомарно с помощью CAS.


Атомарность в этом смысле кажется очень хорошим свойством со многих точек зрения. Прежде всего она прощает систему и делает менее "дырявыми" абстракции. Не надо думать, а что произойдёт если операция высокого уровня дойдёт до половины.

Вопрос 2. Как часто при проектировании ОС разработчики думают об атомарности операций высокого уровня?

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

Например, на уровне N есть действия a1, a2, ... an. На уровне N+1 есть действие b реализованное через атомарные операции a1, a2 и a3. Выполняем b; a1 и a2 выполнились корректно, а a3 нет. Тогда чтобы b был атомарным необходимо уметь откатить a1 и a2.

Вопрос 3. Это вообще верное рассуждение? И как часто при проектировании ОС разработчики думают об обратимости тех или иных операций?

1 ответов

18 просмотров

compare-and-swap обычная атомарная операция

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта