Вилка:
Fork - это не что иное, как новый процесс, который выглядит точно так же, как старый или родительский процесс, но все же это другой процесс с другим идентификатором процесса и собственной памятью. Родительский процесс создает отдельное адресное пространство для дочернего. И родительский, и дочерний процессы обладают одинаковым сегментом кода, но выполняются независимо друг от друга.
Самый простой пример разветвления - это когда вы запускаете команду на оболочке в unix / linux. Каждый раз, когда пользователь вводит команду, оболочка разветвляет дочерний процесс, и задача выполняется.
Когда выполняется системный вызов fork, создается копия всех страниц, соответствующих родительскому процессу, загружаемая ОС в отдельную область памяти для дочернего процесса, но в некоторых случаях это не требуется. Как и в системных вызовах «exec», нет необходимости копировать страницы родительского процесса, поскольку execv заменяет адресное пространство самого родительского процесса.
Несколько замечаний по поводу разветвления:
- Дочерний процесс будет иметь собственный уникальный идентификатор процесса.
- Дочерний процесс должен иметь собственную копию дескриптора файла родителя.
- Блокировки файлов, установленные родительским процессом, не должны наследоваться дочерним процессом.
- Любые семафоры, открытые в родительском процессе, также должны быть открыты в дочернем процессе.
- Дочерний процесс должен иметь собственную копию дескрипторов очереди сообщений родителей.
- У ребенка будет свое адресное пространство и память.
Тема:
Потоки - это легковесные процессы (LWP). Традиционно поток - это просто состояние ЦП (и некоторого другого минимального состояния) с процессом, содержащим остатки (данные, стек, ввод-вывод, сигналы). Потоки требуют меньше накладных расходов, чем «разветвление» или порождение нового процесса, поскольку система не инициализирует новое пространство виртуальной памяти системы и среду для этого процесса. Хотя это наиболее эффективно в многопроцессорной системе, где поток процесса может быть запланирован для запуска на другом процессоре, что позволяет повысить скорость за счет параллельной или распределенной обработки, выигрыши также обнаруживаются в однопроцессорных системах, которые используют задержку ввода-вывода и другие системные функции, которые могут остановить процесс. выполнение.
Потоки в одном и том же процессе:
- Технологические инструкции
- Большинство данных
- открытые файлы (дескрипторы)
- сигналы и обработчики сигналов
- текущий рабочий каталог
- Идентификатор пользователя и группы
Более подробную информацию можно найти здесь .