Какие данные распределяются между зеленым потоком и потоком уровня ядра, к которому он привязан? - PullRequest
0 голосов
/ 18 апреля 2019

Я понимаю, что потоки уровня пользователя или зеленые потоки управляются некоторой библиотекой потоков уровня пользователя и должны быть "связаны" с некоторым потоком операционной системы для выполнения своей задачи. Я понимаю, что потоки - это просто абстракция для последовательности независимого кода. Потоки представлены с некоторыми структурами данных, хранящимися в памяти. В случае пользовательского уровня или зеленые потоки присутствуют в пользовательском пространстве и управляются библиотекой потоков пользовательского уровня. В случае потоков уровня ОС или ядра они хранятся и управляются ядром или ОС. Что я не понимаю, что на самом деле подразумевается под связыванием зеленого потока с потоком ОС ?? Я знаю о схемах 1: 1, n: 1, n: m, и не об этом мой вопрос. Мой вопрос заключается в том, какие структуры данных копируются или совместно используются (или что-то еще) между зеленым потоком и потоком ядра, с которым он связан? И что библиотека потоков на уровне пользователя делает с этими структурами, когда зеленые потоки должны переключаться в контекст ??

1 Ответ

3 голосов
/ 19 апреля 2019

Есть РЕЗЬБЫ и МОДЕЛИРОВАННАЯ РЕЗЬБА. То, что вы называете «зеленой нитью», является симулированной резьбой.

Ядро ничего не знает о существовании смоделированного потока.

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

Тогда ответ НЕТ; по крайней мере, на уровне операционной системы. Процесс должен отслеживать потоки в пользовательском пространстве.

Я знаю о схемах 1: 1, n: 1, n: m, и это не вопрос моего вопроса.

Схемы 1: 1, n: 1 и n: M завершены, и общая академическая система BullS * & T предназначена для того, чтобы сбить с толку учащихся. В потоках нет такой вещи как n: M. Это неосуществимая теоретическая ерунда. 1: 1 просто означает настоящие нити. n: 1 означает смоделированные нити.

В реальной жизни существуют только две модели:

В классической модели процесс состоял из потока выполнения и адресного пространства.

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

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

В текущей модели несколько потоков выполнения называются потоками. Нет никакой причины использовать симулированные / зеленые / пользовательские потоки в текущей модели. Учебники, в которых написано, что смоделированные / зеленые / пользовательские темы имеют какое-либо преимущество, подходят только для использования с лайнером Cat Cat.

...