Как именно процессор запускает каждый поток? - PullRequest
0 голосов
/ 17 октября 2019

1, мне всегда говорят, что каждый поток является контекстом выполнения, но что именно содержит поток? Кажется, он содержит стек вызовов, регистры процессора и фактический код выполнения?

2. Существует также два типа потоков - поток уровня ОС и поток уровня пользователя. они сопоставлены друг с другом. Когда дело доходит до cpu runs thread, процессор работает только на одном из них или только на потоке уровня ОС?

3, Немного сбивает с толку, чтобы показать, как процессор run работает. Я имею в виду, что из того, что я знаю, CPU может запускать только машинный код, который равен 0 и 1. Так что же означает переключение контекста для процессора? если каждый поток содержит двоичные файлы, которые являются инструкциями, а процессор просто выполняет разные инструкции?

1 Ответ

1 голос
/ 17 октября 2019

Чтобы дать краткую и упрощенную версию, предположим:

  • У вас есть одно ядро ​​и несколько потоков инструкций (или потоков, процессов или программ).
  • ЦП имеетВозможность прервать один поток выполнения и перейти к другому адресу, обработчик прерываний. Если часы подключены к этому выводу прерывания, внешнее прерывание может генерироваться через равные промежутки времени.

Запуск нескольких потоков или процессов основан на концепции переключения контекста .

Переключение контекста означает, что текущий поток инструкций (поток) прерывается, все регистры сохраняются в стеке, указатель стека изменяется и загружается другой контекст, а все сохраненные регистры восстанавливаются из его стека.

Разница между облегченными потоками и процессами заключается в том, что они разделяют пространство памяти и могут обмениваться данными с общей памятью или нет.

...