Какая разница между легковесным процессом и резьбой?

Я нашел ответ на вопросВот, Но я не понимаю некоторые идеи в ответе. Например, легкий процесс, как говорят, делит свое логическое адресное пространство с другими процессами. Что это значит? Я могу понять ту же ситуацию с двумя потоками: они оба используют одно адресное пространство, поэтому они оба могут читать любые переменные из сегмента bss (например). Но у нас много разных процессов с разными разделами bss, и я не знаю, как их всех разделить.

 Gray07 мая 2012 г., 17:19
Конечно @Allok. На этой странице было несколько подробностей об упрощенных процессах.
 Allok07 мая 2012 г., 17:17
@ Серый, я очень четко понимаю разницу между процессами и потоками. Проблема в понимании легких процессов.
 Tudor07 мая 2012 г., 17:03
Вы, кажется, очень смущены некоторыми понятиями. Я предлагаю вам сначала изучить определение нити и процесса.
 Gray07 мая 2012 г., 17:03
Возможное дублированиеstackoverflow.com/questions/200469/…
 Allok07 мая 2012 г., 17:18
@ Тюдор, я нашел это и понял (в разделе «Понимание ядра Linux»).

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

ОтВот. Each LWP is a kernel resource in a kernel pool, and is attached and detached to a thread on a per thread basis. This happens as threads are scheduled or created and destroyed.

enter image description here

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

User level thread это те, которые могут быть обработаны библиотекой потоков.

С другой стороныkernel level thread (который должен иметь дело с hadrware) также называют LWP (легкий процесс), чтобы максимизировать использование системы, и поэтому система не останавливается только на одном системном вызове.

что ответы здесь верны, поэтому позвольте мне опубликовать мою версию.

Существует разница между процессом - LWP (облегченный процесс) и пользовательским потоком. Я оставлю определение процесса в стороне, так как это более или менее известно, и сосредоточусь наLWP vs user threads. LWP is what essentially are called today threads. Originally, user thread meant a thread that is managed by the application itself and the kernel does not know anything about it. LWP, on the other hand, is a unit of scheduling and execution by the kernel.

Пример: Предположим, что в системе запущены 3 других процесса, и планирование выполняется циклически без приоритетов. И у вас есть 1 процессор / ядро.

Option 1, У вас есть 2 пользовательских потока, использующих один LWP. Это означает, что с точки зрения ОС у вас есть ОДИН блок планирования. Всего работает 4 LWP (3 других + 1 ваш). Ваш LWP получает 1/4 от общего процессорного времени, и так как у вас есть 2 пользовательских потока, каждый из них получает 1/8 от общего процессорного времени (зависит от вашей реализации)

Option2, У вас есть 2 LWP. С точки зрения операционной системы, у вас есть два блока планирования. Всего работает 5 LWP. Ваш LWP получает 1/5 от общего процессорного времени КАЖДОГО, а ваше приложение - 2/5 процессорного времени.

Еще одно грубое отличие - у LWP есть pid (идентификатор процесса), а у пользовательских потоков - нет.

По какой-то причине, именование немного испортилось, и мы называем LWP потоками.

Различий определенно больше, но, пожалуйста, обратитесь к слайдам. http://www.cosc.brocku.ca/Offerings/4P13/slides/threads.ppt

РЕДАКТИРОВАТЬ:

После публикации я нашел хорошую статью, которая объясняет все более подробно и лучше на английском, чем я пишу. http://www.thegeekstuff.com/2013/11/linux-process-and-threads/

Решение Вопроса

Темы и процессы:

Processes exist in the operating system and correspond to what users see as programs or applications. A thread, on the other hand, exists within a process. For this reason, threads are sometimes referred to as light-weight processes. Each process consists of one or more threads.

бычно относятся к гибридной форме нити уровня пользователя и нити уровня ядра. LWP выполняется в контексте одного процесса, и на процесс может быть несколько LWP. Кроме того, каждый LWP может запускать свой собственный (на уровне пользователя) поток. Многопоточные приложения создаются путем создания потоков (с пакетом библиотеки потоков) и последующего назначения каждого потока LWP.

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

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

Каждый процесс может содержать один или несколько потоков.

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

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

Наконец, есть решение, которое лежит где-то посередине; мы объединяем потоки в LWP. Каждая группа работает на разных процессорах, но потоки в группе не могут обрабатываться несколькими способами. Это потому, что ядро в этой версии знает только о группах (которые являются многопроцессорными), но ничего о потоках, которые они содержат. Надеюсь, это достаточно ясно.

kernel привязка потоков, которая может быть создана и выполнена в пользовательском контексте.

Если я не ошибаюсь, вы можете прикрепитьuser потоки к одному LWP, чтобы потенциально повысить уровень параллелизма без участия системного вызова.

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