2013-09-03 2 views

ответ

9

Нет это не имеет смысла спрашивать :) (см here)

контекст

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

Предупреждение: следующий весьма упрощенное и не совсем точно:

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

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

Почему это называется контекстом процесса, а не контекстом потока? Я предполагаю, что это по историческим причинам.

Традиционно Unix, а также расширение Linux, не поддерживало процессы только потоков.

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

2

A Kernel Thread может упоминаться как контекст в исполнении, который не имеет сопоставления с пользовательским пространством (в отличие от других потоков/процессов в Linux, где процесс пользовательского пространства сопоставляется процессу пространства ядра). Они обычно используются в качестве демонов, например. kswapd - процесс swapper для выселения страниц виртуальной памяти. Существование этого процесса не существует.

Во-вторых, поскольку они имеют определенный контекст, связанный с собой, который может быть переключен (скажем, состояние регистров, сохраненных в собственном стеке), потоки ядра планируются. И все, что можно планировать, можно рассматривать как «контекст процесса».

С другой стороны, прерывания не подлежат планированию. Они возникают и выполняют обработчик прерываний, создавая свой собственный контекст.

Смежные вопросы