Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Состояния процессов




Сигналы

Сигнал – это способ сообщить процессу о каких-либо изменениях и заставить его поступить надлежащим образом. В ОС UNIX определено свыше 30 различных видов сигналов. Все они посылаются процессу с помощью команды kill.

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

Вызов подпрограммы обработки сигнала называют перехватом сигнала. По завершении выполнения подпрограммы обработки, процесс возобновляется в той точке, где был получен сигнал.

Имеется возможность блокировать или игнорировать сигналы. Игнорируемый сигнал просто отбрасывается, не оказывая на процесс никакого влияния. Блокированный сигнал ставится в очередь на выдачу, но ядро не требует от процесса никаких действий до явного разблокирования сигнала. Подпрограмма обработки разблокированного сигнала вызывается только один раз, даже если на протяжении периода блокировки были получены несколько экземпляров этого сигнала.

В самом начале развития BSD- и ATT- системы сильно отличались друг от друга по наборам сигналов и их значениям. Со временем, к счастью для системных администраторов, эти различия стерлись, и сегодняшние системы в этом плане, с точки зрения администраторов, практически одинаковы.

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

В качестве примера использования сигналов давайте посмотрим, что произойдет, если нажать клавиши [CTRL+C]. Драйвер терминала обработает введенную комбинацию клавиш и выдаст в группу активных процессов сигнал SIGINT (прерывание). Т.к. в подпрограмме обработки сигнала SIGINT по умолчанию задано завершение, выполнение большинства программ при получении этого сигнала прекращается.

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

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

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

Ожидание может длиться от нескольких микросекунд, до нескольких дней, но в большинстве случаев этот период занимает несколько десятков миллисекунд. Если процесс находится в состоянии ожидания более долгий период, то он считается интерактивным и ядро системы уделяет ему особое внимание. Когда период ожидания завершается, ядро обеспечивает мгновенный переход процесса в состояние выполнения. Это является очень существенной особенностью, т.к. повышает скорость реакции программ, зависящих от ввода с терминала.

Свопированный процесс – это процесс, удаленный из оперативной памяти компьютера, и переписанный на диск. Большинство систем свопируют процессы на диск, когда конкуренция за оперативную память столь велика, что замещение страниц (paging) “захлебывается” и вместо того, чтобы делать полезную работу, система тратит неоправданно много времени на обработку прерываний, вызванную нехваткой страниц памяти. Строго говоря, свопированный процесс – не состояние процесса. Процесс в этом состоянии может быть ожидающим, остановленным и даже нормально выполнимым. Он остается замороженным в том состоянии, в котором он находился перед записью на диск, вплоть до возвращения в оперативную память.

Остановленным называется процесс, выполнение которого запрещено. Процессы останавливаются при получении сигнала SIGSTOP (останов) или SIGTSTP (сигнал останова, генерируемый клавиатурой) и перезапускаются сигналом SIGCONT (продолжение после останова). Это состояние аналогично ожиданию, разница в том, что выйти из этого состояния можно только с помощью другого процесса.

Процессы, как правило, останавливаются в трех случаях:

 

· при получении интерактивным процессом кода комбинации клавиш [CTRL+Z] (или символа “приостанова”, объявленного в stty. В большинстве случаев, символом приостанова является символ, соответствующий коду, генерируемого комбинацией клавиш [CTRL+Z]);

· по особому запросу пользователя или программы;

· когда процесс, выведенный в фоновый режим, пытается обратиться к своему управляющему терминалу.

Первый случай – практически, встречается каждый день при работе с системой.

Второй случай – весьма часто встречается. Поскольку сигнал SIGSTOP перехвату не подлежит, то именно его используют, когда хотят надежно остановить процесс. Сигнал SIGSTOP – единственный гарантированный способ остановки процессов, которые перехватывают сигнал SIGTSTP; подпрограмма обработки сигнала SIGTSTP для какой-нибудь благовоспитанной программы типа vi должна в качестве завершающего этапа своего выполнения посылать самой себе сигнал SIGSTOP.




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 389; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.