Для информирования процесса о возникновении асинхронных событий или необходимости обработки исключительных состояний в системе UNIX используются сигналы. Например, когда пользователь нажимает на своем терминале комбинацию клавиш Ctrl+C, процессу
Системный вызов fork должен предоставить процессу-потомку логически идентичную копию адресного пространства его родителя. В большинстве случаев потомок заменяет предоставленное адресное пространство, так как сразу же после выполнения fork вызывает exec или exit.
Для корректной работы в многонитевых системах необходимо пересматри¬вать не только fork, но и многие другие системные вызовы. Все LWP процесса разделяют между собой общий набор файловых дескрипторов. Это может стать причиной возникновения конфликта в случае, если один из LWP закроет файл
Операция блокировки — это операция, которая блокирует процесс (то есть переводит процесс в спящий режим до тех пор, пока блокировка не будет снята). Так как ядро системы не является вытесняющим, оно может манипулировать большинством объектов (структурами данных и ресурсами) без возможности причинения им какого-либо вреда
В системах UNIX доставка и обработка сигналов производится на уровне процесса. В многонитевых системах необходимо определять, какой из LWP процесса будет заниматься обработкой сигналов. При использовании прикладных нитей имеется аналогичная проблема: после того, как ядро передаст сигнал в LWP, нитевая библиотека должна определить, в какую нить его направить.
Программный интерфейс ОС определяется набором системных вызовов, предоставляемых ядром пользовательским процессам. Стандартная библиотека С, подключаемая по умолчанию ко всем программам пользователя, содержит процедуру встраивания для каждого системного вызова.
Многие программы выполняют отдельные крупные независимые задачи, которые не могут функционировать последовательно. Например, сервер баз данных находится в режиме приема и обработки множества запросов от клиентов
Основная функция прерываний в компьютере заключается в том, чтобы позволить взаимодействовать периферийным устройствам с процессором, информируя его о завершении работы задачи, ошибочных состояниях и других событиях, требующих немедленного внимания.
Функция ядра exit() предназначена для завершения процесса. Она вызывается изнутри, когда процесс завершается по сигналу. С другой стороны, программа может выполнить системный вызов exit, который, в свою очередь, вызовет функцию exit().
Когда процесс завершается, он остается в состоянии «зомби» (zombie) до тех пор, пока окончательно не будет «вытерт» родительским процессом. В этом режиме единственным занимаемым ресурсом остается структура ргос, в которой хранится статус выхода, а также информация об использовании ресурсов системы.
Для того чтобы понять основные типы элементов нитей, необходимо сначала определить разницу между терминами «одновременность» (concurrency) и «параллельность» (parallelism) [5]. Параллельность многопроцессорного приложения — это достигнутая им степень параллельного выполнения, которая в любом случае будет
Системные вызовы в многонитевых средах принимают несколько необычные значения. Многие вызовы, имеющие отношение к созданию процессов, манипуляциям над адресным пространством или действиям над ресурсами процесса (такими как открытые файлы)