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

Кто в курсе как переключаются потоки и процессы? мне рассказывали

что это аппаратные прерывания, но допустим что проц одноядерный, если это ядро исполнило jmp some_entry, то само себя оно не сможет прервать после 1000 инструкций? или как

8 ответов

14 просмотров

программируется таймер на заданном ядре. Таймер просит ядро выполнить прерывание. В коде прерывания сначала дается отмашка таймеру, чтобы не лупил больше запросами. Потом запускается шедулер, который при необходимости перекидывает потоки с/на сдро. При этом определяется, должен ли текущий поток быть смещен. На выходе из прерывания происходит своп (обмен) стеков активного потока и следующего в очереди на исполнение. После обмена стеков, у тебя в регистрах уже новый SP, который по выходе в юзерспейс восстановится наряду со счетчиком команд

Взводишь таймер, когда тикнул - переключаешь контекст.

Michael- Автор вопроса
Nikita Nazarenko
Взводишь таймер, когда тикнул - переключаешь конте...

а таймер инкрементируется от выполненных инструкций или от физического времени? или есть оба типа?

Michael
а таймер инкрементируется от выполненных инструкци...

По времени. Таймера по инструкциям я не припомню

Nikita Nazarenko
По времени. Таймера по инструкциям я не припомню

rdtsc вроде счётчик тактов ведёт, очень условно можно думать что команды считает

Mixail Frolov
rdtsc вроде счётчик тактов ведёт, очень условно мо...

Архитектурно-зависимо. Но я недостаточно армы и прочие risc-v знаю, чтобы утверждать, что там такого нет.

ну так его прервёт прерывание

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

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

Комрады, посоветуйте, куда копать? Стал прикручивать кастомизацию тем. В OnShow главной главной формы пытаюсь загрузить из файла настроек и применить тему (на скрине, как долж...
Ed Doc
13
OnShow один раз вызывается? или возможен Hide?
Iluha Companets
14
Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
@sand_witch скорее к тебе вопрос, добавил в .cabal webdriver-w3c и вот такая ошибка от nix develop error: Package ‘script-monad-0.0.4’ in /nix/store/7vdxbra0kwbr0ys0kc5...
Fedor
5
Гайз, кто-нибудь пробовал запустить probe-rs под камень, которого нет в probe-rs? Мб есть какой-нибудь пример у кого... Через target-gen попробовал сгенерировать chip-descript...
Максим Смирнов
2
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
Карта сайта