Читаем Операционная система UNIX полностью

АтрибутНаследование потомком (fork(2))Сохранение при запуске программы (exec(2))
Сегмент кода (text)Да, разделяемыйНет
Сегмент данных (data)Да, копируется при записи (copy-on-write)Нет
ОкружениеДаВозможно
АргументыДаВозможно
Идентификатор пользователя UIDДаДа
Идентификатор группы GIDДаДа
Эффективный идентификатор пользователя EUIDДаДа (Нет, при вызове setuid(2))
Эффективный идентификатор группы EGIDДаДа (Нет, при вызове setgid(2))
ID процесса (PID)НетДа
ID группы процессовДаДа
ID родительского процесса (PPID)НетДа
Приоритет nice numberДаДа
Права доступа к создаваемому файлуДаДа
Ограничение на размер файлаДаДа
Сигналы, обрабатываемые по умолчаниюДаДа
Игнорируемые сигналыДаДа
Перехватываемые сигналыДаНет
Файловые дескрипторыДаДа, если для файлового дескриптора не установлен флаг FD_CLOEXEC (например, с помощью fcntl(2))
Файловые указателиДа, разделяемыеДа, если для файлового дескриптора не установлен флаг FD_CLOEXEC (например, с помощью fcntl(2))

В общем случае вызов fork(2) выполняет следующие действия:

□ Резервирует место в области свопинга для сегмента данных и стека процесса.

□ Размещает новую запись proc в таблице процессов и присваивает процессу уникальный идентификатор PID.

□ Инициализирует структуру proc (поля структуры proc подробно рассматривались в разделе "Структуры данных процесса").

□ Размещает карты отображения, необходимые для трансляции адреса.

□ Размещает u-area процесса и копирует ее содержимое с родительского.

□ Создает соответствующие области процесса, часть из которых совпадает с родительскими.

□ Инициализирует аппаратный контекст процесса, копируя его с родительского.

□ Устанавливает в ноль возвращаемое дочернему процессу вызовом fork(2) значение.

□ Устанавливает возвращаемое родительскому процессу вызовом fork(2) значение равным PID потомка.

□ Помечает процесс готовым к запуску и помещает его в очередь на выполнение.

Системный вызов fork(2) в итоге создает для дочернего процесса отдельную копию адресного пространства родителя. Во многих случаях, вскоре после этого, дочерний процесс делает системный вызов exec(2) для запуска новой программы, при этом существующее адресное пространство уничтожается и создается новое. Таким образом создание фактической копии адресного пространства процесса, т.е. выделение оперативной памяти и создание соответствующих карт отображения, является неоправданным.

Для решения данной проблемы используются два подхода. Первый из них, предложенный в UNIX System V, называется "копирование при записи" (copy-on-write или COW). Суть этого подхода заключается в том, что сегменты данных и стека родительского процесса помечаются доступными только для чтения, а дочерний процесс, хотя и получает собственные карты отображения, разделяет эти сегменты с родительским. Другими словами, сразу после создания процесса и родитель и потомок адресуют одни и те же страницы физической памяти. Если какой-либо из двух процессов попытается модифицировать данные или стек, возникнет страничная ошибка, поскольку страница открыта только для чтения, а не для записи. При этом будет запущен обработчик ошибки ядра, который создаст для процесса копию этой страницы, доступную для записи. Таким образом, фактическому копированию подлежат только модифицируемые страницы, а не все адресное пространство процесса. Если дочерний процесс делает системный вызов exec(2) или вообще завершает свое выполнение, права доступа к страницам родителя, имеющим флаг COW, возвращаются к их прежним значениям (т.е. до создания дочернего процесса), а флаг COW очищается.

Перейти на страницу:

Похожие книги

Веб-аналитика: анализ информации о посетителях веб-сайтов
Веб-аналитика: анализ информации о посетителях веб-сайтов

Компании в веб-пространстве тратят колоссальные средства на веб-аналитику и оптимизацию своих веб-сайтов, которые, в свою очередь, приносят миллиарды долларов дохода. Если вы аналитик или работаете с веб-данными, то эта книга ознакомит вас с новейшими точками зрения на веб-аналитику и то, как с ее помощью сделать вашу компанию весьма успешной в веб. Вы изучите инструментальные средства и показатели, которые можно использовать, но что важнее всего, эта книга ознакомит вас с новыми многочисленными точками зрения на веб-аналитику. Книга содержит много советов, приемов, идей и рекомендаций, которые вы можете взять на вооружение. Изучение веб-аналитики по этой уникальной книге позволит познакомиться с проблемами и возможностями ее современной концепции. Написанная практиком, книга охватывает определения и теории, проливающие свет на сложившееся мнение об этой области, а также предоставляет поэтапное руководство по реализации успешной стратегии веб-аналитики.Эксперт в данной области Авинаш Кошик в присущем ему блестящем стиле разоблачает укоренившиеся мифы и ведет по пути к получению действенного понимания аналитики. Узнайте, как отойти от анализа посещаемости сайта, почему основное внимание следует уделять качественным данным, каковы методы обретения лучшего понимания, которое поможет выработать мировоззрение, ориентированное на мнение клиента, без необходимости жертвовать интересами компании.- Изучите все преимущества и недостатки методов сбора данных.- Выясните, как перестать подсчитывать количество просмотренных страниц, получить лучшее представление о своих клиентах.- Научитесь определять ценность показателей при помощи тройной проверки "Ну и что".- Оптимизируйте организационную структуру и выберите правильный инструмент аналитики.- Изучите и примените передовые аналитические концепции, включая анализ SEM/PPC, сегментацию, показатели переходов и др.- Используйте решения с быстрым началом для блогов и электронной торговли, а также веб-сайтов мелкого бизнеса.- Изучите ключевые компоненты платформы экспериментирования и проверки.- Используйте анализ конкурентной разведки для обретения понимания и принятия мер.Здесь также находятся:- Десять шагов по улучшению веб-аналитики.- Семь шагов по созданию управляемой данными культуры в организации.- Шесть способов замера успеха блога.- Три секрета создания эффективной веб-аналитики.- Десять признаков великого веб-аналитика.

Авинаш Кошик

ОС и Сети, интернет