2015-08-12 1 views
0

Я читаю концепции Galvin OS. Там сказано, что между потоками пользовательского уровня и уровнем ядра должна существовать какая-то связь, тогда они объясняют, что широко используется в отношении всех видов отношений. Но они явно не упоминают, что такое «ассоциация». Из контекста они использовали термин, я думаю, что число одновременных системных вызовов, которые может сделать группа потоков (возможно, все относится к определенному процессу). Верно ли мое предположение? Что мы достигнем, связав потоки уровня пользователя с потоками уровня ядра?Что это значит, что связать несколько пользовательских потоков с потоками уровня ядра?

ответ

0

Вы имеете в виду секцию «Многопоточные модели» в главе «Нитки»?

Если это так, то это быстро объяснил:

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

Некоторые программы сами реализуют поточно-подобные функции. Одним из ярких примеров является интерпретатор Python: хотя язык Python обеспечивает поддержку многопоточности, интерпретатор будет работать только с одним потоком ОС/ядра и будет следить за тем, чтобы он выполнял сам код самого потока Python; это сопоставление «много-к-одному»: несколько потоков Python запускаются в одном потоке ОС. Ранние версии Java VM сделали аналогичную эмуляцию, но я не могу вспомнить, был ли это стиль «много-к-одному» или «много-ко-многим».