Введение

Средства достижения многозадачности в компьютерных системах
легковесные процессы в Erlang
В компьютерных операционных системах, легковесный процесс (LWP) является средством реализации многозадачности. В традиционном понимании этого термина, как это используется в Unix System V и Solaris, LWP выполняется в пользовательском пространстве поверх одной нити ядра и разделяет свое адресное пространство и системные ресурсы с другими LWP в рамках одного и того же процесса. Несколько пользовательских нитей, управляемых библиотекой потоков, могут быть размещены поверх одного или нескольких LWP, что позволяет выполнять многозадачность на уровне пользователя, что может дать определенные преимущества в производительности. В некоторых операционных системах отсутствует отдельный уровень LWP между нитями ядра и пользовательскими нитями. Это означает, что пользовательские нити реализуются непосредственно поверх нитей ядра. В таких случаях термин "легковесный процесс" обычно относится к нитям ядра, а термин "нити" может относиться к пользовательским нитям. В Linux пользовательские нити реализуются путем разрешения определенным процессам совместно использовать ресурсы, что иногда приводит к тому, что эти процессы называют "легковесными процессами". Аналогично, в SunOS версии 4 и выше (до Solaris) "легковесный процесс" относился к пользовательским нитям.

Поддерживающие операционные системы

Solaris реализовала отдельный слой LWP начиная с версии 2.2. До версии 9 Solaris поддерживала взаимно-многократное сопоставление между LWP и пользовательскими потоками. Однако от этой схемы отказались из-за сложности её реализации и повышения производительности планировщика ядра. UNIX System V и его современные производные IRIX, SCO OpenServer, HP-UX и IBM AIX допускают взаимно-многократное сопоставление между пользовательскими потоками и LWP. NetBSD 5.0 представила новую, масштабируемую модель потоков "один к одному". Каждый пользовательский поток (pthread) имеет соответствующий ему легковесный процесс (LWP) в ядре. Внутри ядра как процессы, так и потоки реализуются как LWP и обслуживаются планировщиком одинаково.