Что такое процесс в компьютере
Перейти к содержимому

Что такое процесс в компьютере

  • автор:

Компьютер с нуля

23 июля, 2014 | Автор: admin

Понятие ПРОЦЕСС

Рассмотрим ключевые понятия в теории операционных систем, такие как процессы и потоки. Посмотрим, как все это исторически развивалось и к чему привело сейчас. Начнем с самого фундаментального понятия в операционных системах – ПРОЦЕСС, на нем строится все остальное.

Процесс это:

  • Это программа в состоянии выполнения;
  • Некоторый объект, который выполняется на процессоре.

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

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

Как исполняемый объект, процесс позволяет параллельное выполнение нескольких программ в системе (ЦП переключается между программами)

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

Состав процесса

Разберем из чего же состоит процесс. Процесс состоит из трех основных компонент:

  1. Исполняемого кода;
  2. Ассоциируемых с ним данных, необходимых для выполнения этой программы;
  3. Контекста – информация для ОС, необходимая для управления процессом.
    Эта информация используется для переключения между процессами, для сохранения и восстановления состояния процесса:
    — Номер процесса;
    — Регистры ЦП;
    — Содержимое стека.
    Таким образом, контекст – это основа для переключения процессов.

ОС ведет список всех процессов, находящихся в системе. Он может усложняться, а может быть самым простым.

понятие ПРОЦЕСС

Физическое представление процесса

Внизу 0 адрес, сверху максимальный. На максимуме расположен стек, затем куча, которые растут в противоположных направлениях, данные и код программы.

Важно понимать, что каждый процесс обладает своим адресным пространством.

На схеме виртуальное адресное пространство начинается c нуля и заканчивается неким максимумом, которое состоит из сегментов : кода, данных и стека.

При запуске программы (например MS Word) в ОС происходит следующее:

— Выделяется место в памяти.

Каждый процесс выполняется в собственном виртуальном адресном пространстве, которое состоит:

  1. Сегмента стека –используется для вызовов функций и системных вызовов;
  2. Сегмента данных – переменные статические и динамические, выделяемые из кучи (все что нужно для работы);
  3. Сегмента кода – код программы, обычно предоставляется доступ «только для чтения».

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

Как все этим управляет операционная система?

Структура управления процессами в ОС

ОС ведет некоторый список процессов.

Таблица процессов – на каждый процесс приходится одна запись в этой таблице;

Для каждого процесса нужна некая структура данных, которая содержала бы в себе все то, что относится к процессу (некий контекст). Все это хранится в ОС в определенном универсальном понятии, которое называется:
Блок управления процессом (Process Control Block – PCB) . Описывает свой процесс, которому он принадлежит и его текущее состояние.

Образ процесса ( Process Image) – на предыдущей схеме – память, выделенная для процесса.

Блок управления процессом (Process Control Block – PCB)

Данный блок постоянного размера для все процессов в ОС.

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

Идентификаторы процесса

  • Номер процесса(так называемый PID — Process IDentificator)
  • Информация о пользователе

Состояние процесса – регистры, указатели стека. Состояние процесса:

  • Информация для планировщика – приоритет которым обладает данные процесс;
  • Привилегии – доступ к памяти, допустимые инструкции;
  • Информация о виртуальной памяти, присвоенной процессу;
  • Статистическая информация и ограничения (ограничения по времени выполнения, статистика о затраченном времени ЦП);
  • Ввод/вывод – владение ресурсами, открытые файлы, выделенные устройства.

Диспетчеризация

Диспетчер – отправляет процессы на выполнение, выделяет время ЦП и переключает ЦП с одного процесса на другой.

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

Рассмотрим две модели состояний процессов.

Первая модель состояний процесса

Конечная цель любой операционной системы – выполнить какую-либо работу, задачу, ответить на запрос пользователя…

Можно выделить три основные состояния процесса

  1. Выполнения (исполняется на ЦП);
  2. Готовности (временно остановлен);
  3. Блокировки (ожидает внешнего события);

модель состояний процесса

Модель состояний процесса

Любой процесс находится в нескольких состояниях, в самом простом варианте можно выделить три состояния:

  1. Предположим, что любой процесс начинает свою “жизнь” с состояния « Выполнение ».
  2. Если был сделан запрос на ввод/вывод, то он осуществляется с некоторой задержкой, ибо ввод/вывод работает медленней чем ЦП, значит появляется некоторое ожидание события (т.е. ожидание ввода/вывода).
    Процесс в это время находится в заблокированном состоянии « Блокировка ». Ему диспетчер не выделяет времени ЦП, ведь это бесполезно, процесс не может делать какую-либо работу пока не выполнится ввод/вывод.
  3. Далее, когда произошел ввод/вывод процесс уже может что-то обработать, его состояние изменяется в состояние « Готовность » (процесс должен показать диспетчеру о своей готовности работать).
    Диспетчер при очередном переключении между процессами видит, что есть процесс в состоянии «Готовность» и переключает его в состоянии « Выполнение ».
    В этом состоянии «Выполнение», диспетчер передает процессу квант времени ЦП – начинается непосредственное выполнение. Этот круг замкнутый.
  4. Еще одно состояние, когда процесс попадает в «Готовность» — когда квант процессорного времени, отведенный на выполнение истекает, то происходит так называемый таймаут , процесс из состояния « Выполнение » переходит в « Готовность » и диспетчер в это время передает управление другому процессу.

Диспетчеру системы нужно знать, что происходит с общими событиями: с вводом/выводом, синхронизацией, др.

Перейдем к рассмотрению второй модели состояний процесса.

Вторая модель состояний процесса

модель состояния процесса 2

Вторая модель состояний процесса

Новая модель состоит из пяти состояний, эта модель очень близка к сегодняшним ОС.

  1. « Новый » – процесс создан, но он еще не помещен ОС в пул выполняемых процессов. Создана структура РСВ, но процесс еще не загружен в память (т.е.создан РСВ и пустое адресное пространство).
  2. Если новый процесс принимается ОС, если все соблюдается, все права доступа, то процесс помещается в состояние « Готовность »: процесс полностью готов к выполнению, т.е. может получить управление и непосредственно начать работать. Все загружено в память, инициализированы данные, стек, куча.
  3. « Выполнение » — процесс исполняется.
  4. « Блокировка » — процесс ожидает внешнего события (ввода/вывода).
  5. « Завершение » — процесс удаляется из пула выполненных процессов, он закончил работу. Процесс помечается как «завершенный».
    Диспетчер будет выполнять работу по очистке процесса. На данном этапе проходит работа по освобождению памяти, закрытию ресурсов процесса (вв/выв, файлов…).

Планирование процессов

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

Поэтому в ОС вводятся различные очереди (списки) для планирования процессов.

Исходя из трех состояний процесса вводятся три очереди:

  1. Очередь задач: множество всех процессов, которые есть в системе
  2. Очередь готовых: множество всех процессов, готовых для выполнения, им можно в любой момент дать квант процессорного времени и они будут выполняться.
  3. Очередь ожидающих: множество всех заблокированных процессов.

В процессе жизненного цикла процессы перемещаются между этими очередями.

Рассмотрим планирование процессов на примере Диспетчера задач (task manager) Windows.

Очередь задач Windows

task manager Windows

Task manager Windows

Диспетчер задач показывает множество всех процессов в ОС.

Исторически эта задача называется Task Manager – менеждер задач. Он отображает все процессы, которые есть в ОС, правда состояний процесса (готовность, ожидание, выполнение) мы не видим. Видим только общий список, можно настроить видимость колонок списка.

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

Ядро в Windows представлено как процесс с идентификатором 4(PID), наименьший 0, но он занятый.

В Linux ядро не является процессом.

Управление процессами

управление процессами

Используется одна очередь «готовых» и одна очередь «заблокированных» процессов.

При этом есть следующие недостатки:

  • При наступлении события, все ожидающие этого события процессы нужно переместить из «заблокированных» в очередь «готовых»;
  • Нужно смотреть в очереди все процессы, которые ожидают именно того события, которое произошло и после этого переместить их в очередь «готовых». После этого им будет дано диспетчером время ЦП и они будут выполняться;
  • ОС нужно посмотреть все заблокированные процессы в очереди, чтобы выбрать правильный. Для этого придется все время перебирать очередь заблокированных по кругу.

Событие это :

  1. Ожидание ввода/вывода
  2. Синхронизация – когда процессу нужно получить доступ к какому-либо ресурсу, который используется другим процессом, ему приходится ждать.

Каким то образом данную схему необходимо улучшить. Наиболее логично – каждому событию в ОС должна быть своя очередь заблокированных по этому событию. Тогда, выбирая события видим все процессы, которые его ожидают, сразу же все переносим в очередь «готовых» и все работает быстро и замечательно.

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

РЕШЕНИЕ: использовать несколько очередей заблокированных процессов. Уменьшить нагрузку и не перебирать весь список заблокированных процессов.

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

Что такое «процессы Windows» и зачем они нужны

Что такое процесс

Многим пользователям Windows приходилось слышать о процессах, но не все знают что такое «процессы», для чего они нужны и нужно ли на них вообще обращать внимание. Именно поэтому я запланировал серию заметок, в которых немного расскажу о процессах Windows.

Можно сказать, что процесс — это выполняемая на компьютере программа, но тут нужно кое что прояснить. Дело в том, что программа и процесс — это не одно и тоже. Программа представляет собой некоторый код (набор команд и инструкций), который находится на компьютере в виде файлов. А вот процесс — это некоторый набор ресурсов и данных, которые используются при выполнении программы. То есть упрощенно можно сказать, что процесс — это выполняющаяся программа со всеми необходимыми для ее выполнения ресурсами.

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

Увидеть весь список запущенных в данный момент на компьютере процессов можно через Диспетчер задач. Для этого нужно вызвать контекстное меню на панели задач и из меню выбрать пункт «Запустить диспетчер задач».

Диспетчер задач

Далее необходимо перейти на вкладку «Процессы».

Процесы Windows

Каждый процесс, запущенный на компьютере, потребляет определенные ресурсы, что и отображается в окне Диспетчера задач. Логично предположить, что чем меньше запущенно процессов, тем лучше, так как они не будут «грузить» компьютер. Но тут не все так просто как кажется.

Windows — это операционная система (ключевое слово здесь — «система»), то есть можно сказать, что это пакет программ, предназначенных для управления компьютером. Системные программы в Windows называют службами и каждая из них решает определенные узконаправленные задачи.

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

Обычно по умолчанию Windows настроена некоторым универсальным (по мнению разработчиков) образом и вполне вероятна ситуация, что запускаемые со стартом Windows процессы вы никогда не будете использовать, а значит они будут просто висеть «мертвым грузом», перетягивая на себя некоторые ресурсы компьютера.

Список запущенных процессов, который вы увидите открыв Диспетчер задач, будет характерен только для вашего компьютера, ведь как вы понимаете, количество и набор процессов зависит от установленных и запущенных на вашем компьютере программ, а также от редакции операционной системы. И тут речь идет не только о версии Windows (например, XP, Vista, 7 или 8), а и о редакции — так у Windows 7 Домашняя набор запущенных процессов будет отличаться от Windows 7 Максимальная и дело тут в том, что эти операционные системы предназначены для разных задач, а значит и список запускаемых со стартом Windows системных служб будет у них отличаться.

Более подробно о некоторых службах и процессах я расскажу в следующих заметках.

Интересные заметки и видеоуроки по этой теме:

  1. Как изменить программу по умолчанию
  2. Эффективный поиск файлов и папок в Windows XP
  3. Как изменить имя пользователя Windows
  4. Как вывести компьютер из спящего режима или гибернации?
  5. Что за папка Program Files (x86)?

Что такое процесс в компьютере

Евдокимов А.А., Майстренко Н.В., Майстренко А.В.

3.1.1. Модель процесса

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

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

В дальнейшем изложении материала примем допущение, что в нашем распоряжении имеется лишь один центральный процессор.

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

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

Также стоит отметить, что если программа была запущена дважды, то это значит, что этой программой заняты оба процесса. Например, можно дважды запустить текстовый редактор или одновременно распечатать два файла при условии наличия двух доступных для печати принтера. Эти процессы для операционной системы являются разными, хотя они и были запущены от одной и той же программы. Данные процессы может объединять только общий код, существующий в памяти в виде одной копии и доступ к которому может предоставить операционная система.

Многозадачность и процессы

Как современные компьютеры могут выполнять несколько задач одновременно.

Время чтения: 9 мин

Открыть/закрыть навигацию по статье
Контрибьюторы:

Обновлено 3 сентября 2023

Кратко

Скопировать ссылку «Кратко» Скопировано

Современные операционные системы позволяют нескольким пользователям одновременно работать на одном компьютере. При этом ресурсы компьютера должны правильно распределяться между приложениями, которые запускают пользователи. Для этого в операционной системе используется специальная абстракция — «процесс».

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

Для управления процессами операционная система использует механизм прерываний. Процессы можно останавливать или ставить на паузу, перезапускать различными способами, сообщать процессам об изменении состояния системы и прочее. Прерывания в операционных системах реализованы по-разному. В Unix-подобных системах существует несколько механизмов реализации прерываний. Один из них — управления процессами с помощью сигналов, описанный в стандарте POSIX для Unix-подобных операционных систем.

Как понять

Скопировать ссылку «Как понять» Скопировано

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

Работа процессов в однопоточных операционных системах

Вскоре выяснилось, что такой механизм не очень хорошо работает. Программы могут запрашивать данные у внешних устройств или ждать ввода данных от пользователя, и процессор все это время простаивает. Хочется использовать процессор эффективнее, загружая выполнением других программ. Для этого операционная система стала разбивать программы на блоки. Каждый блок выбирался так, чтобы процессор не простаивал.

Например, можно было сделать так:

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

Следующим шагом было внедрение специального диспетчера операционной системы. Главная задача диспетчера — максимально эффективно использовать процессор. Для этого все программы бились уже не на блоки, а на отдельные операции (команды для процессора). Процессор заблокирован, пока команда не выполнится полностью. На схеме показано, как диспетчер использует очередь готовых к запуску программ (процессов в терминах операционной системы):

Очередь готовых к запуску процессов в многопоточных операционных системах

Диспетчер операционной системы распределяет процессы в очереди в порядке приоритета. Такая очередь называется очередью готовых к запуску. Например, системным процессам назначается наивысший приоритет. Приоритет означает количество процессорного времени, которое будет отдано процессу. В некоторых операционных системах приоритетом процессов можно управлять. Linux одна из таких операционных систем. Все процессы в Linux имеют свой приоритет, который задаётся числом от -20 (наивысший приоритет) до 19 (наименьший приоритет). Любой пользователь может понижать приоритет процесса, но только суперпользователь может его увеличивать. Управление приоритетом возможно как на этапе запуска, так и на этапе работы процесса.

После создания одной очереди, оказалось, что и это не совсем оптимальный механизм работы с несколькими процессами. Всё дело в том, что разные внешние устройства работают за разное время. Какие-то устройства работают в автоматическом режиме, какие-то в ручном (с участием пользователя). Решили, что было бы здорово сделать несколько очередей, каждая из которых обеспечивает доступ до какого-то определённого ресурса:

Множественная очередь для процессов в многопоточных операционных системах

Например, существуют очереди для доступа к клавиатуре или принтеру, видеокарте или накопителю (HDD, SSD, Flash-drive и так далее). На рисунке разные устройства обозначены буквами (A, B и так далее).

Процесс для операционной системы — это не просто совокупность операций или код программы. Для того чтобы процессор мог возвращаться к выполнению программы, в операционной системе должны храниться промежуточные результаты выполнения программы, состояние процессора на момент перехода к другому процессу (контекст) и значения переменных (данные программы):

Как устроен процесс в операционной системе

Для операционной системы процесс состоит из трёх частей: программы, контекста и данных. Программа — это последовательность операций над данными, записанная в оперативной памяти. Данные программ располагаются в оперативной памяти и на внешних устройствах. Перед выполнением очередной операции программы все требуемые данные должны быть загружены в оперативную память компьютера.

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

  • состояние регистров процессора;
  • состояние стека программы;
  • состояние стека операционной системы;
  • состояния зарезервированной памяти.

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

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

Каждому процессу соответствует набор состояний. В современных операционных системах набор состояний сводится к следующим пяти:

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

Состояние «блокирован» соответствует случаю, когда процесс, например, ожидает ответа от внешнего устройства: ввод с клавиатуры или ответ от накопителя. Количество состояний увеличивается, если ввести возможность приостанавливать процесс в момент того, когда он, например, заблокирован или готов продолжить свою работу:

Состояния процесса в случае использования возможности приостановить процесс

Прерывания

Скопировать ссылку «Прерывания» Скопировано

Чтобы можно было управлять процессами на уровне операционной системы, существует механизм прерываний. Когда происходит прерывание, выполнение процесса прерывается и совершается какое-то действие. Например, можно приостановить процесс или переместить из одной очереди в другую. Часть прерываний обрабатываются только операционной системой, другую часть можно слушать и реагировать на них, аналогично событиям в DOM. Прерывания делятся на две группы: прерывания на уровне железа, и программные прерывания.

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

По типу источника «железные» прерывания делятся на:

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

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

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

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

В рамках стандарта POSIX описан набор стандартных сигналов операционной системы, которые можно обрабатывать в программах. Однако можно устанавливать и свои сигналы, стандарт этого не запрещает.

Вот список наиболее используемых сигналов:

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

Сигналы можно послать работающему процессу:

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

Вот несколько наиболее распространённых сигналов, которые можно послать текущему процессу из терминала:

— SIGINT , нажав на клавиатуре Ctrl C ;
— SIGQUIT , нажав на клавиатуре Ctrl \ ;
— SIGTSTP , нажав на клавиатуре Ctrl Z .

На практике

Скопировать ссылку «На практике» Скопировано

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *