Что такое пользовательские темы? - PullRequest
3 голосов
/ 21 апреля 2011

Что такое пользовательские темы?Ниже поясняется, что ими управляет пользовательское пространство ... Пожалуйста, объясните, как?

Потоки иногда реализуются в библиотеках пользовательского пространства, так называемые пользовательские потоки.Ядро не знает о них, поэтому они управляются и планируются в пользовательском пространстве.

Ответы [ 3 ]

4 голосов
/ 21 апреля 2011

В наши дни все современные серверные или настольные ОС, а также все основные мобильные ОС имеют собственную библиотеку потоков, поэтому этот вопрос уже не очень актуален. Но в основном, до того, как это имело место, были библиотеки - наиболее известная из них, «Библиотека зеленых потоков» - которые реализовали потоки совместной многозадачности как пользовательскую библиотеку. Эта часть «совместной многозадачности» является важной частью: в общем, такая библиотека переключается с одного потока на другой, только когда поток вызывает некоторый метод, который позволяет переключение («сон», «yield» и т. Д.). Пользователь библиотека обычно не может делать упреждающее квантование времени; это то, что должно быть сделано на уровне ОС.

0 голосов
/ 21 апреля 2011

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

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

Пользовательские потоки, с другой стороны, могут быть реализованы с использованием set_jmp() и long_jmp() внутри пользовательской библиотеки. Поскольку они не включают ядро, приложение может очень эффективно создавать / уничтожать и переключаться между пользовательскими потоками.

Как сказал Эрнест, пользовательские потоки больше не очень распространены, однако существует гибридное решение, которое может использовать преимущества двух миров.

http://en.wikipedia.org/wiki/Thread_(computer_science)#N:M_.28Hybrid_threading.29

0 голосов
/ 21 апреля 2011

В 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

...