Расширение многозадачности на Linux. Модели потоков

🙀В Linux, создание процесса сродни порождению потока, потому что они создаются системным вызов clone(2):

✳️ на самом деле используется  копирование при записи страниц памяти(copy-on-write pages), чтобы задержать или избежать вовсе копирование данных, которые могут быть разделены между дочерним и родительским потоком; ✳️ единственными накладными расходами по времени будут операции копирования таблицы страниц родителя и выделения уникального дескриптора потомка процесса, описываемый структурой task_struct.

⚠️ Недостатки и преимущества схем отображения пользовательских потоков к ядру выражается в их реализации:

✳️ с одной стороны, схема n:1 позволяет быстро выполнять пользовательские потоки,  с другой стороны  все пользовательские потоки необходимо увязать с потоками ядра, потому что только ядро может планировать поток на выполнение (захват) устройства центрального процессора(ЦПУ);

✳️ Недостаток схемы 1:1 по-сути  заключается в том, что потоки на уровне ядра считаются медленными чем пользовательские, и примерно равны процессам,  а преимуществом их является  возможность создания изолированных потоков.

Поэтому, как показано ниже, clone(2) реализует две схемы отображения LWP к потоку на уровне ядра -- n:1 и 1:1 . ⤵️

Расширение многозадачности на Linux. Модели потоков | Сетка — социальная сеть от hh.ru