Я читаю концепции Galvin OS. Там сказано, что между потоками пользовательского уровня и уровнем ядра должна существовать какая-то связь, тогда они объясняют, что широко используется в отношении всех видов отношений. Но они явно не упоминают, что такое «ассоциация». Из контекста они использовали термин, я думаю, что число одновременных системных вызовов, которые может сделать группа потоков (возможно, все относится к определенному процессу). Верно ли мое предположение? Что мы достигнем, связав потоки уровня пользователя с потоками уровня ядра?Что это значит, что связать несколько пользовательских потоков с потоками уровня ядра?
ответ
Вы имеете в виду секцию «Многопоточные модели» в главе «Нитки»?
Если это так, то это быстро объяснил:
Нити либо управляются ОС (ядро), или они добрейшей из эмулируется процесса без ядра. Сегодня поток в (родной) программе соответствует точно одному потоку, управляемому ядрами. Эти потоки известны ОС, и по желанию планировщик может планировать планировщик ОС.
Некоторые программы сами реализуют поточно-подобные функции. Одним из ярких примеров является интерпретатор Python: хотя язык Python обеспечивает поддержку многопоточности, интерпретатор будет работать только с одним потоком ОС/ядра и будет следить за тем, чтобы он выполнял сам код самого потока Python; это сопоставление «много-к-одному»: несколько потоков Python запускаются в одном потоке ОС. Ранние версии Java VM сделали аналогичную эмуляцию, но я не могу вспомнить, был ли это стиль «много-к-одному» или «много-ко-многим».