отображение потоков уровня пользователя в Kernal - PullRequest
0 голосов
/ 06 февраля 2019

Можно ли сопоставить 1 поток уровня пользователя с многими потоками уровня ядра или, например: 2 потока уровня пользователя с 3 или более уровнями ядра, и если ответ положительный,как это меняет производительность в позитивном ключе

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Можно ли отобразить 1 поток уровня пользователя на множество потоков уровня ядра или, например: 2 потока уровня пользователя на 3 или более уровня ядра, и если ответ положительный.как это меняет производительность в позитивном ключе

В теории все возможно.Проблема в том, чтобы найти причину для этого.

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

Первый вероятный сценарий, который я назову «SIMD с регулируемой шириной», где одна инструкция может работать с N фрагментами данных ввремя, когда назначен только один поток ядра, и когда инструкция (выполняющаяся на M потоках ядра на M CPU) работает с N * M фрагментами данных в то время, когда назначено M потоков ядра.

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

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

0 голосов
/ 06 февраля 2019

Нет такой вещи как нить на уровне пользователя.Это общее чутье на создание дрянных учебников по операционным системам.Если у вас есть такая книга, используйте ее для cat box liner.

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

Различие в ядре / пользовательском потоке крайне запутанно.Иногда это еще больше сбивает с толку из-за плохих учебников, говорящих о моделях 1: 1 и много-о-одном, а также о многих-многих.Вы либо используете реальные потоки (ядро), либо используете имитированные потоки (пользователь), когда реальные потоки недоступны.Последнее редко встречается в наши дни, поскольку почти каждая операционная система, с которой вы столкнетесь, поддерживает реальные потоки.

К сожалению, учебники по операционной системе принимают такую ​​простую концепцию и вводят в заблуждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...