Я действительно надеюсь получить окончательный ответ на этот вопрос.
У меня есть предыдущий вопрос, на котором я спросил «Что такое ветка (на самом деле)?» Я получил несколько действительно хороших ответов, и я понял, что нить:
Поток - это независимый набор значений для регистров процессора (для одного ядра). Поскольку это включает указатель инструкций (он же счетчик программ), он контролирует, что и в каком порядке выполняется. Он также включает указатель стека, который лучше указывает на уникальную область памяти для каждого потока, иначе они будут мешать друг другу.
1011 * т.е. *
Поток не является чем-то более "конкретным", чем набор значений регистров
и
Точный список регистров ЦП зависит от архитектуры, но указатель инструкций и указатель стека в значительной степени универсальны. Они определяют поток, поскольку когда этот поток (набор значений регистров) загружается в ядро процессора, поток работает. Процессор выбирает инструкции, требуемые потоком, и обновляет регистры потока. Когда требуется переключение контекста, процессор сохраняет этот набор значений регистров в памяти и загружает набор, принадлежащий другому потоку, как правило, как часть логики обслуживания прерываний.
Кроме того, я понимаю, что у потоков есть TLS (Thread Local Storage) и их собственный стек вызовов.
Итак, еще раз, чтобы прояснить мой вопрос , компоненты потока (как я положил в своем заголовке) - это значения регистра, его TLS и его стек вызовов. Я хочу знать компоненты других элементов в моем заголовке (процессы, домены приложений и контексты).
Вот схема из книги, которую я читаю (Pro C # 2008 и платформа .NET)
Я понимаю, что эта диаграмма относится к процессам Win32, но я думаю, что тот же TLS, идея стека вызовов имеет место для .NET. Кроме того, я думаю, что эта диаграмма была бы намного лучше, если бы она включала значения регистров (или что-то, указывающее, что были значения регистров), которые определяли эти потоки (A и B).
Сейчас я продолжаю свое расследование, и я хочу просто спросить все это сразу. Я хочу знать ту же информацию о процессах, доменах приложений и контекстах (и это порядок, который я понимаю как «иерархия» хостинга, то есть обрабатывает доменные домены приложений, доменные контексты приложений, контексты хост-потоков).
Моя конечная цель - получить достаточно информации, чтобы я мог наметить отношения между всеми этими сущностями (или какими бы они ни были), но также и компонентами, которые фактически их составляют (например, в случае потоков, существуют значения регистров). , TLS, и стек вызовов, которые фактически составляют их). Когда я это сделаю, я опубликую диаграмму по этому вопросу в качестве редактирования в конце. А пока вот диаграмма, взятая из книги, которую я читаю (в отношении процессов, доменов приложений и контекстов):
P.S. если кто-то знает диаграмму, которая уже объясняет все это, я хотел бы увидеть ее. Если не . , , какого черта там не один ??
РЕДАКТИРОВАТЬ: ЗДЕСЬ ТО, ЧТО Я ТАК ДАЛЬШЕ, КАК ДИАГРАММА