Что такое пользовательские темы?
Что такое пользовательские темы? Ниже поясняется, что ими управляет пользовательское пространство... Пожалуйста, объясните, как?
Потоки иногда реализуются в библиотеках пользовательского пространства, так называемые пользовательские потоки. Ядро не знает о них, поэтому они управляются и планируются в пользовательском пространстве.
3 ответа
В наши дни все современные серверные или настольные ОС и все основные мобильные ОС имеют встроенную библиотеку потоков, поэтому этот вопрос уже не очень актуален. Но в основном, до того, как это имело место, были библиотеки - наиболее известная из них, "Библиотека зеленых потоков", - которые реализовали потоки совместной многозадачности как пользовательскую библиотеку. Эта "совместная многозадачность" является важной частью: в общем, такая библиотека переключается с одного потока на другой, только когда поток вызывает некоторый метод, который позволяет переключению ("сон", "yield" и т. Д.). Пользователь библиотека обычно не может делать упреждающее квантование времени; это то, что должно быть сделано на уровне ОС.
Symbian OS имеет платформу Active Object, которая позволяет обрабатывать асинхронные события в одном потоке http://en.wikipedia.org/wiki/Active_object_%28Symbian_OS%29
В Windows также есть Волокна: http://msdn.microsoft.com/en-us/library/ms682661%28v=vs.85%29.aspx
Потоки ядра (также называемые облегченными процессами) обрабатываются системой. Они предлагают несколько интересных преимуществ, главным из которых является то, что два потока могут быть запланированы на двух разных процессорах в надежде, что это сократит время выполнения вашего процесса.
Однако потоки часто используются в качестве модели программирования. Типичным примером является многопользовательский веб-сервер, который ожидает входящего соединения и одновременно обменивается данными со своими подключенными клиентами. В этом случае программист может захотеть создать много потоков и переключаться между ними очень быстро. Системные потоки не очень приспособлены к этому. Количество потоков ядра ограничено (до нескольких непрочитанных), и любая базовая операция (блокировка переключения уничтожения создания) является дорогостоящей, поскольку она должна выполняться в пространстве ядра.
Пользовательские потоки, с другой стороны, могут быть реализованы с использованием set_jmp()
а также long_jmp()
внутри пользовательской библиотеки. Поскольку они не включают ядро, приложение может очень эффективно создавать / уничтожать и переключаться между пользовательскими потоками.
Как сказал Эрнест, пользовательские потоки больше не очень распространены, однако существует гибридное решение, которое может использовать преимущества двух миров.