Size: a a a

pro.osdev - os development

2021 August 02

BD

Berkus Decker in pro.osdev - os development
bochs
источник

BD

Berkus Decker in pro.osdev - os development
эмуль такой
источник

d

disba1ancer in pro.osdev - os development
ааа понял
источник

BV

Boris Vinogradov in pro.osdev - os development
резидент — резидентный модуль который может выполнять кучу полезных функций
источник

BV

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

BV

Boris Vinogradov in pro.osdev - os development
пришло из времён ms dos, если поковырять L4 то там такое добро тоже есть
источник

BV

Boris Vinogradov in pro.osdev - os development
удобно когда ты не как в ос которая поделка студента а как во взрослых ос можешь отлаживать процессы происходящие в ядре
источник

BD

Berkus Decker in pro.osdev - os development
там забавный os monitor был д
источник

BV

Boris Vinogradov in pro.osdev - os development
ну я помню им баг в одном из портов на cortex-m4 отловил
источник

BV

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

BV

Boris Vinogradov in pro.osdev - os development
@disba1ancer понятней стало?
источник

d

disba1ancer in pro.osdev - os development
угу
источник

DF

Dollar Føølish in pro.osdev - os development
а борщ умеет записывать исполнение?
источник

DF

Dollar Føølish in pro.osdev - os development
и воспроизводить потом
источник

d

disba1ancer in pro.osdev - os development
а зачем оно тебе?
источник

IJ

Igor 🐱 Jirkov in pro.osdev - os development
У меня тут внезапно три высокоуровневых вопроса про ОС.

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

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

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


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


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

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

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

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

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

BD

Berkus Decker in pro.osdev - os development
compare-and-swap обычная атомарная операция
источник

BD

Berkus Decker in pro.osdev - os development
появилась она для  того чтобы выполнять  сравнение и обмен атомарно
источник

BD

Berkus Decker in pro.osdev - os development
до этого, очевидно, это было неатомарно (compare отдельно swap отдельно)
источник

BD

Berkus Decker in pro.osdev - os development
> Не надо думать, а что произойдёт если операция высокого уровня дойдёт до половины

теперь посмотри как атомарные ОС вызовы сделаны в том же  fluke и прослезись
источник