Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборная ответов к госэкзаменам.doc
Скачиваний:
122
Добавлен:
02.09.2019
Размер:
7 Mб
Скачать

Атрибуты процесса

В таблице процессов:

  • состояние процесса;

  • физический адрес в основной или внешней памяти u-области процесса;

  • идентификаторы пользователя, от имени которого запущен процесс (UID);

  • Эффективный идентификатор пользователя (EUID). Используется для определения доступа к ресурсам и файлам системы.

  • идентификатор процесса (PID);

  • Идентификатор родительского процесса (PPID)

  • Идентификатор группы (GID)

  • Эффективный идентификатор группы (EGID)

  • Приоритет процесса

  • Значение nice (внутренний приоритет процесса)

  • прочую информацию, связанную с управлением процессом.

Адресное пространство задачи, выделенное процессу, содержит описывающую процесс информацию, доступ к которой должен обеспечиваться только во время выполнения процесса. Важными полями являются:

  • указатель на позицию в таблице процессов, соответствующую текущему процессу,

  • идентификаторы пользователя,

  • параметры текущей системной операции, возвращаемые значения и коды ошибок,

  • дескрипторы файла для всех открытых файлов,

  • внутренние параметры ввода-вывода,

  • текущий каталог и текущий корень,

  • границы файлов и процесса.

  • счетчик времени, в течение которого процесс реально выполнялся (т.е. занимал процессор) в режиме пользователя и режиме ядра,

  • параметры системного вызова,

  • результаты системного вызова,

  • предельные размеры адресного пространства процесса;

  • предельные размеры файла, в который процесс может писать;

Сигналы

Сигналы сообщают процессам о возникновении асинхронных событий. Посылка сигналов производится процессами - друг другу, с помощью функции kill, - или ядром. В версии V (вторая редакция) системы UNIX существуют 19 различных сигналов, которые можно классифицировать следующим образом:

  • Сигналы, посылаемые в случае завершения выполнения процесса, то есть тогда, когда процесс выполняет функцию exit или функцию signal с параметром death of child (гибель потомка);

  • Сигналы, посылаемые в случае возникновения вызываемых процессом особых ситуаций, таких как обращение к адресу, находящемуся за пределами виртуального адресного пространства процесса, или попытка записи в область памяти, открытую только для чтения (например, текст программы), или попытка исполнения привилегированной команды, а также различные аппаратные ошибки;

  • Сигналы, посылаемые во время выполнения системной функции при возникновении неисправимых ошибок, таких как исчерпание системных ресурсов во время выполнения функции exec после освобождения исходного адресного пространства;

  • Сигналы, причиной которых служит возникновение во время выполнения системной функции совершенно неожиданных ошибок, таких как обращение к несуществующей системной функции (процесс передал номер системной функции, который не соответствует ни одной из имеющихся функций), запись в канал, не связанный ни с одним из процессов чтения, а также использование недопустимого значения в параметре "reference" системной функции lseek. Казалось бы, более логично в таких случаях вместо посылки сигнала возвращать код ошибки, однако с практической точки зрения для аварийного завершения процессов, в которых возникают подобные ошибки, более предпочтительным является именно использование сигналов;

  • Сигналы, посылаемые процессу, который выполняется в режиме задачи, например, сигнал тревоги (alarm), посылаемый по истечении определенного периода времени, или произвольные сигналы, которыми обмениваются процессы, использующие функцию kill;

  • Сигналы, связанные с терминальным взаимодействием, например, с "зависанием" терминала (когда сигнал-носитель на терминальной линии прекращается по любой причине) или с нажатием клавиш "break" и "delete" на клавиатуре терминала;

  • Сигналы, с помощью которых производится трассировка выполнения процесса. Условия применения сигналов каждой группы будут рассмотрены в этой и последующих главах.