Отличия между моделями процессов/потоков в windows и linux -архитектура

Вот фрагмент замечательной статьи с citforum.ru

В среде Microsoft Windows процесс, – это контейнер для потоков (именно этими словами о процессах говорит Джефри Рихтер в своей классической книге «Программирование приложений для Microsoft Windows»). Процесс-контейнер содержит как минимум один поток. Если потоков в процессе несколько, приложение (процесс) становится многопоточным.

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

Эти процессы представляют собой обычные дочерние процессы главного процесса, но они разделяют с главным процессом

  1. адресное пространство
  2. файловые дескрипторы
  3. обработчики сигналов

. Для обозначения процессов этого типа, применяется специальный термин – легкие процессы (lightweight processes).

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