Основы операционной системы UNIX



         

Создание процесса - часть 2


  • Общее количество системной памяти, предоставленной для физического ввода-вывода, временно оказалось недостаточным.
  • При успешном завершении порожденному процессу возвращается значение 0, а родительскому процессу возвращается идентификатор порожденного процесса. В случае ошибки родительскому процессу возвращается -1, новый процесс не создается и переменной errno присваивается код ошибки.

    Обычно после порождения порожденный процесс выполняет системный вызов exec, перекрывающий сегменты текста и данных процесса новыми сегментами текста и данных, взятыми из указанного выполняемого файла. При этом аппаратный контекст процесса инициализируется заново.

    Выполняемый файл состоит из заголовка, сегмента команд и сегмента данных. Данные (глобальные переменные) состоят из инициализированной и неинициализированной частей.

    Если системный вызов exec закончился успешно, то он не может вернуть управление, так как вызвавший процесс уже заменен новым процессом. Возврат из системного вызова exec свидетельствует об ошибке. В таком случае результат равен -1, а переменной errno присваивается код ошибки.

    Новый процесс наследует у процесса, вызвавшего exec, следующие основные характеристики:

  • Значение поправки приоритета.
  • Идентификатор процесса.
  • Идентификатор родительского процесса.
  • Идентификатор группы процессов.
  • Терминальную линию.
  • Текущий каталог.
  • Корневой каталог.
  • Маску создания файлов.
  • Ограничения ресурсов.
  • Счетчики времени, потраченного системой на обслуживание этого процесса.
  • Блокировки доступа к сегментам файлов.



  • Содержание  Назад  Вперед