Есть ли преимущество сохранения контекста задачи в связанных списках, а не в простом стеке?
Я пытаюсь найти причину, по которой Infineon решила использовать в своих списках, связанных архитектуру Tricore, для сохранения контекста задачи (при переключении на другую задачу).
Контекст сохраняется в чанках фиксированного размера / структуры в оперативной памяти. Каждый CSA (область сохранения контекста) имеет "ключевое слово", которое указывает на следующий свободный адрес CSA. Текущий CSA сохраняется в регистре CPU (PCXI), чтобы он мог восстановить контекст предыдущей задачи, когда текущая задача завершается. Обычно область ОЗУ для сохранения этих CSA предварительно выделяется с помощью сценариев компоновщика.
Поэтому, учитывая все вышеперечисленные условия, я теперь удивляюсь, почему он реализован таким образом (связанные списки), поскольку он также мог бы быть реализован как стек (еще проще, учитывая фиксированный размер / структуру CSA).
Позже редактирование: сначала я понял, а потом где-то прочитал, что в случае связанных списков можно расширить область CSA в ловушке, которая срабатывает в случае свободного истощения CSA. Это может быть легко сделано, так как связанные списки не заботятся о расположении узлов в ОЗУ, поэтому в результате можно динамически выделить больше узлов для существующего списка, если этого недостаточно.