#assembly #cpu-registers
#сборка #cpu-регистры
Вопрос:
Я учусь assembly 8086
и понимаю, что assembly
программы часто используют регистры, как может быть возможно, что 2 assembly
программы, которые выполняются одновременно, могут использовать один и тот же регистр, не прерывая друг друга. Я подумал, что, возможно, на ПК могут быть наборы регистров, например, 100 наборов, чтобы каждая программа могла использовать регистр, не прерывая другие программы. Ну, в любом случае, это всего лишь предположение.
Комментарии:
1. «2 программы сборки, которые выполняются в одно и то же время» … этого технически никогда не происходит, одно ядро выполняет только один поток машинного кода (хотя x86 может предположительно выполнять инструкции в другом порядке или более одного в одном машинном цикле). И каждое ядро имеет свой собственный набор регистров. Когда две программы запускаются одновременно, это делается либо путем переключения между ними каждые несколько миллисекунд с помощью ОС (поиск некоторых статей о «многозадачности»), либо путем их запуска на разных ядрах.
Ответ №1:
Если процессор может запускать более одного потока выполнения одновременно, то у него есть отдельный набор регистров для каждого одновременного потока, который он может поддерживать. По историческим причинам вы часто увидите, что это описывается как компьютер, имеющий более одного процессора, хотя в настоящее время все эти «процессоры» обычно находятся на одном физическом чипе и гораздо более тесно связаны, чем это можно было бы предположить.
Но обычно на компьютере выполняется гораздо больше «процессов», чем «процессоров» для их запуска. Каждый раз, когда операционная система забирает процессор из одной программы и передает его другой, она сохраняет все регистры для первой программы в памяти и восстанавливает все регистры для второй программы. Это называется переключением контекста.
Некоторые процессоры пытались ускорить переключение контекста с помощью дополнительных наборов регистров, но это оказывается не таким полезным, как вы думаете, и поэтому встречается не очень часто. (Однако дополнительный набор или частичный набор регистров, предназначенных для использования обработчиками прерываний, довольно распространен. Для процессора также характерно наличие множества невидимых дополнительных регистров, используемых для выполнения не по порядку, но они невидимы.)