Почему потоки ОС считаются дорогими?

Существует множество решений, направленных на реализацию потоков в пользовательском пространстве. Будь то gorang.org goroutines, зеленые потоки python, асинхронность C #, процессы erlang и т. Д. Идея состоит в том, чтобы позволить параллельное программирование даже с одним или ограниченным числом потоков.

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

ОС предоставляет обе эти функции бесплатно. Почему потоки ОС должны быть дороже, чем «зеленые» потоки? В чем причина предполагаемого снижения производительности, вызванного выделением потока ОС для каждой «задачи»?

Ответы на вопрос(6)

Ваш ответ на вопрос