bash : multiple command в одной строке с другим кодом выхода

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

Когда вы используете Linux API напрямую (clone() вместо fork() и pthread_create()), у вас гораздо больше гибкости. в определении того, сколько ресурсов для общего или не совместного использования, и вы можете создавать задачи, которые не являются ни полностью процессом, ни полностью потоком. Если вы используете эти низкоуровневые вызовы напрямую, также можно создать задачу с новым TGID (таким образом, рассматриваемую как процесс большинством пользовательских инструментов), которая фактически делит все свои ресурсы с родительской задачей, или наоборот, для создания задача с общим TGID (поэтому рассматривается как поток большинством пользовательских инструментов), которая не использует ресурсы совместно со своей родительской задачей.

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

Реализация задач в Linux гораздо более гибкая, чем мировоззрение процессов и потоков, представленное инструментами пользовательского пространства.

0
05.02.2016, 10:11
0 ответов

Теги

Похожие вопросы