В какое состояние переходит процесс из состояния готовности при предоставлении ему процессора

Обновлено: 28.06.2024

Понятие процесс(process) введено разработчиками ОС с 60-х годов, как программа во время выполнения. Заметим, что программа - это всего лишь файл в формате загрузки, сохраняемый на диске, а процесс расположен в памяти на этапе выполнения.

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

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

Процесс находится в состоянии выполнения, если в данный момент ему выделен центральный процессор (ЦП).

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

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

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

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

Запуск, или выбор процесса для выполнения - это предоставление ЦП первому процессу из списка готовых процессов. Запуск осуществляется с помощью программы - диспетчер. Обозначим такую смену состояний следующим образом: операционная система linux

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

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

Пробуждение процесса осуществляется тогда, когда происходит какое-либо событие, ожидаемое процессом, и он переходит из состояния блокировки в состояние готовности. Так в выше описанном случае, после завершения операции ввода-вывода.

Итак, мы определили четыре возможные смены состояния процесса.

Отметим, что единственная смена состояния, инициируемая самим процессом - это блокирование, остальные инициируются объектами, внешними по отношению к данному процессу.

Операции над процессами

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

Создание процесса. операционная система linux

Создание процесса включает присвоение имени процессу; включение его имени в список имен процессов; определение начального приоритета процесса; формирование блока управления процессом РСВ; выделение процессу начальных ресурсов.

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

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

Каждому созданному процессу UNIX назначает уникальный идентификатор процесса - PID , который идентифицирует процесс для ОС. Кроме того, каждый процесс имеет еще PPID (parent process), который представляет собой не что иное как PID его родителя.

Используя в UNIX команду ps можно видеть идентификаторы текущих процессов в системе.

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

Приостановленный процесс может продолжить свое выполнение тогда, когда его активизирует какой-либо другой процесс.

Операция подготовки процесса к повторному запуску с той точки , в которой он был приостановлен, называется - возобновлением.

Изменение приоритета процесса.

Эта операция означает модификацию значения приоритета процесса в РСВ.

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

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

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

Модуль 3. Управление процессами

Тема 4. Диаграмма перехода процессса

Подсистема Управления процессами (УП) является наиболее интенсивно используемым компонентом ОС, входящим в состав ядра ОС, то есть резидентно размещенным в ОП и выполняющим следующие важнейшие функции:

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

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

  1. Приостановка готовности, когда процесс готов, но задержан и не конкурирует за ЦП.
  2. Приостановка блокировки, когда процесс блокирован и задержан. То есть также не будет конкурировать за ЦП.

Дополнительные состояния процессов кратковременны и обычно используются в ОС РВ (реального времени при перегрузках ЦП.

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

Рисунок 1. Диаграмма переходов процесса

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

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

  1. Когда в ОС поступает задание на обслуживание, создается процесс, который устанавливается в очередь готовых процессов.
  2. Процесс постепенно продвигается в очереди и, когда очередь подходит при освобождении ЦП, процесс переходит в состояние активности. Предоставление ЦП процесса называется запуском или выбором процесса для выполнения. Эту функцию выполняет системная программа, называющаяся диспетчером.
  3. Процесс, получивший ЦП, выполняется. Для предотвращения случайного, либо умышленного монопольного захвата ресурсов ЭВМ каким-либо процессом устанавливается временной интервал, называющийся квантом времени, в течение которого процессу разрешено занимать ЦП. Этот интервал устанавливается аппаратным таймером прерываний. По истечении кванта времени диспетчер возвращает процесс в состояние готовности и выбирает следующий готовый процесс.
  4. Если выполняемый процесс до истечения кванта запрашивает какое-либо внешнее событие (обычно ввод/вывод), то добровольно освобождает ЦП, переводится в очередь блокировки до наступления события, безвозвратно теряет остаток кванта.
  5. При наступлении события (завершении операции ввода/вывода) процесс переводится в состояние готовности.

Операции приостановки и возобновления играют важную роль в ОС РВ и используются в следующих случаях:

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

При приостановке процесс обязательно освобождает ОП, его копия сбрасывается на диск, в специальный свопинг файл (swaping). Также могут быть освобождены и другие ресурсы.

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

Все смены состояний происходят по прерываниям.

Прерывание – это событие/сигнал, привлекающий внимание ЦП и заставляющий его изменить текущий порядок исполнения команд процесса. Существуют аппаратные и программные прерывания.

Аппаратные прерывания инициируются аппаратурой (например, сигнал микросхемы таймера в IBM PC вырабатывается 18.2 раза в секунду), сигналом принтера, нажатием клавиш клавиатуры и многими другими причинами.

Программные прерывания инициируются процессом и на самом деле ничего не прерывают. Это обычные процедуры, которые используются программами для выполнения стандартной рутиной работы. Однако, эти программы содержатся в ОС, и механизм прерываний дает возможность обратиться к ним из программ пользователей. Программные прерывания могут выдаваться внутри друг друга (быть вложенными). Например, аппаратные прерывания могут возникнуть при выполнении программных прерываний. Когда разрешенное прерывание вызывается, то ЦП оставляет свою работу, выполняет прерывание, а затем возвращается в место прерывания. Управляет прерываниями обработчик прерываний (Interrupt Handler).

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

Кроме этого, операционной системе для реализации планирования процессов требуется дополнительная информация: идентификатор процесса, состояние процесса, данные о степени привилегированности процесса, место нахождения кодового сегмента и другая информация. В некоторых ОС (например, в ОС UNIX) информацию такого рода, используемую ОС для планирования процессов, называют дескриптором или блоком управления процесса.

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

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

В этой связи подсистема Управление процессом должна выполнять следующие операции над процессами:

  1. Создание.
  2. .Уничтожение.
  3. Запуск.
  4. Блокировка.
  5. Приостановка.
  6. Возобновление, а также
  7. Изменение диспетчерского приоритета процесса (работа с очередями).

Создание состоит из многих этапов:

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

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

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

Блок управления процессом (Program Control Block – PCB) является центральным объектом в ОС, который определяет процесс и содержит всю необходимую информацию о процессе.

PCB содержит определенные сведения.

Когда ОС переключает ЦП с процесса на процесс, используется область сохранения регистров в PSB, чтобы запомнить информацию, необходимую для возобновления процесса, когда он снова получит ЦП.

Обработка прерываний состоит в следующем:

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

В различных ЭВМ существует различный набор типов прерываний, которые можно разделить на 6 классов.

  1. Программные прерывания по системной директиве. Инициатор – активный процесс, выполнивший команду SVC(обращение к супервизору), то есть запрос на предоставление ОС какой-либо системной вычислительной услуги.
  2. Прерывания ввода-вывода. Инициируются устройством ввода/вывода (УВВ) и сигнализируют ЦП о том, что произошло изменение состояния канала ввода-вывода (КВВ) или УВВ (например: завершение операции, ошибка, переход устройства в состояние готовности).
  3. Внешние прерывания. Причинами их является нажатие операторами клавиш на панели ЭВМ или прием сигнала прерывания от другого ЦП в мультипроцессорной системе, сигнала от модема.
  4. Прерывание по рестарту. Нажатие оператором на панели управления кнопки рестарта или Reset.
  5. Логические прерывания по контролю программы вызываются программными ошибками, обнаруженными при выполнении программы (деление на ноль, попытка выполнить привилегированную команду в пользовательском режиме, неверный код операции, защита памяти и т.д.).
  6. Прерывания по контролю машины вызываются аппаратными ошибками.

Планирование процессов включает в себя решение следующих задач:

  1. определение момента времени для смены выполняемого процесса;
  2. выбор процесса на выполнение из очереди готовых процессов;
  3. переключение контекстов "старого" и "нового" процессов.

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

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

Немного теории

  1. программа на стадии выполнения
  2. "объект", которому выделено процессорное время
  3. асинхронная работа
  1. состояния выполнения
  2. состояния ожидания
  3. состояния готовности

Выполнение - это активное состояние, во время которого процесс обладает всеми необходимыми ему ресурсами. В этом состоянии процесс непосредственно выполняется процессором.

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

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

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

Из состояния выполнения процесс может перейти либо в состояние ожидания или состояние готовности. Почему процесс может оказаться в состоянии ожидания, мы уже знаем - ему просто нужны дополнительные данные или он ожидает освобождения какого-нибудь ресурса, например, устройства или файла. В состояние готовности процесс может перейти, если во время его выполнения, квант времени выполнения "вышел". Другими словами, в операционной системе есть специальная программа - планировщик, которая следит за тем, чтобы все процессы выполнялись отведенное им время. Например, у нас есть три процесса. Один из них находится в состоянии выполнения. Два других - в состоянии готовности. Планировщик следит за временем выполнения первого процесса, если "время вышло", планировщик переводит процесс 1 в состояние готовности, а процесс 2 - в состояние выполнения. Затем, когда, время отведенное, на выполнение процесса 2, закончится, процесс 2 перейдет в состояние готовности, а процесс 3 - в состояние выполнения.

Диаграмма модели трех состояний представлена на рисунке 1.

Рисунок 1. Модель трех состояний

Более сложная модель - это модель, состоящая из пяти состояний. В этой модели появилось два дополнительных состояния: рождение процесса и смерть процесса. Рождение процесса - это пассивное состояние, когда самого процесса еще нет, но уже готова структура для появления процесса. Как говорится в афоризме: "Мало найти хорошее место, надо его еще застолбить", так вот во время рождения как раз и происходит "застолбление" этого места. Смерть процесса - самого процесса уже нет, но может случиться, что его "место", то есть структура, осталась в списке процессов. Такие процессы называются зобми и о них мы еще поговорим в этой статье.

Диаграмма модели пяти состояний представлена на рисунке 2.

Рисунок 2. Модель пяти состояний

  1. Создание процесса - это переход из состояния рождения в состояние готовности
  2. Уничтожение процесса - это переход из состояния выполнения в состояние смерти
  3. Восстановление процесса - переход из состояния готовности в состояние выполнения
  4. Изменение приоритета процесса - переход из выполнения в готовность
  5. Блокирование процесса - переход в состояние ожидания из состояния выполнения
  6. Пробуждение процесса - переход из состояния ожидания в состояние готовности
  7. Запуск процесса (или его выбор) - переход из состояния готовности в состояние выполнения
  1. Присвоить процессу имя
  2. Добавить информацию о процессе в список процессов
  3. Определить приоритет процесса
  4. Сформировать блок управления процессом
  5. Предоставить процессу нужные ему ресурсы

Подробнее о списке процессов, приоритете и обо всем остальном мы еще поговорим, а сейчас нужно сказать пару слов об иерархии процессов. Процесс не может взяться из ниоткуда: его обязательно должен запустить какой-то процесс. Процесс, запущенный другим процессом, называется дочерним (child) процессом или потомком. Процесс, который запустил процесс называется родительским (parent), родителем или просто - предком. У каждого процесса есть два атрибута - PID (Process ID) - идентификатор процесса и PPID (Parent Process ID) - идентификатор родительского процесса.

Процессы создают иерархию в виде дерева. Самым "главным" предком, то есть процессом, стоящим на вершине этого дерева, является процесс init (PID=1).

Практика

Для наблюдения за процессами мы будем использовать программу top.

Примечание. Общей средней загрузкой системы называется среднее число процессов, находящихся в состоянии выполнения (R) или в состоянии ожидания (D). Общая средняя загрузка измеряется каждые 1, 5 и 15 минут.

Во второй строке вывода программы top сообщается, что в списке процессов находятся 52 процесса, из них 51 спит (состояние готовности или ожидания), 1 выполняется (у меня только 1 процессор), 0 процессов зомби и 0 остановленных процессов.

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

В таблице отображается различная информация о процессе. Нас сейчас интересуют колонки PID (идентификатор процесса), USER (пользователь, запустивший процесс), STAT (состояние процесса) и COMMAND (команда, которая была введена для запуска процесса).

    R - процесс выполняется или готов к выполнению (состояние готовности)
  • D - процесс в "беспробудном сне" - ожидает дискового ввода/вывода
  • T - процесс остановлен (stopped) или трассируется отладчиком
  • S - процесс в состоянии ожидания (sleeping)
  • Z - процесс-зобми
  • < - процесс с отрицательным значением nice
  • N - процесс с положительным значением nice (о команде nice мы поговорим позже)

Давайте просмотрим, когда же процесс находится в каждом состоянии. Создайте файл process - это обыкновенный bash-сценарий

Сделайте этот файл исполнимым chmod +x ./process и запустите его ./process. Теперь перейдите на другую консоль (ALT + Fn) и введите команду ps -a | grep process. Вы увидите следующий вывод команды ps:

Данный вывод означает, что нашему процессу присвоен идентификатор процесса 4035. Теперь введите команду top -p 4035

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

Теперь попробуем "усыпить" наш процесс. Для этого нужно сначала "убить" его: kill 4035. Затем добавить перед циклом while в сценарии ./process строку sleep 10m, которая означает, что процесс будет спать 10 минут. После этого опять запустите команду ps -a | grep process, чтобы узнать PID процесса, а затем - команду top -p PID. Вы увидите в колонке состояния букву S, что означает, что процесс находится в состоянии ожидания или готовности - попросту говоря "спит".

Мы вплотную подошли к самому интересному - созданию процесса-зомби. Во многих статьях, посвященных процессам, пишется "зомби = не жив, не мертв". А что это означает на самом деле? При завершении процесса должна удаляться его структура из списка процессов. Иногда процесс уже завершился, но его имя еще не удалено из списка процессов. В этом случае процесс становится зомби - его уже нет, но мы его видим в таблице команды top. Такое может произойти, если процесс-потомок (дочерний процесс) завершился раньше, чем этого ожидал процесс-родитель. Сейчас мы напишем программу, порождающую зомби, который будет существовать 8 секунд. Процесс-родитель будет ожидать завершения процесса-потомка через 10 секунд, а процесс-потомок завершить через 2 секунды.

Для компиляции данной программы нам нужен компилятор gcc:

Для тех, у кого не установлен компилятор, скомпилированная программа доступна отсюда.

После того, как программа будет откомпилирована, запустите ее: ./zombie. Программа выведет следующую информацию:

Запомните последний номер и быстро переключайтесь на другую консоль. Затем введите команду top -p 1148

Мы видим, что в списке процессов появился 1 зомби (STAT=Z), который проживет аж 10 секунд.

Мы уже рассмотрели все возможные состояния процессов. Осталось только рассмотреть команду для повышения приоритета процесса - это команда nice. Повысить приоритет команды может только пользователь root, указав соответствующий коэффициент понижения. Для увеличения приоритета нужно указать отрицательный коэффициент, например, nice -5 process

  • Разные программы работают с разными наборами данных: формируются два несвязанных процесса
  • Различные программы работают с одним и тем же набором данных: процесс обмена данными между двумя общими данными
  • Один и тот же код работает с разными наборами данных: два несвязанных процесса, которые составляют два общих кода.
  • Общий код называетсяРеентерабельный, Например редактор
  • Реентерабельная программа - это чистый код
  • Вышеупомянутые программы и наборы данных относятся к уровню памяти.
  • Затем запуск (одного и того же программного файла внешнего хранилища) для (одного и того же файла данных внешнего хранилища) в разные периоды времени означает совершенно разные (P, C, D, R, Psw)
  • Таким образом, два прогона представляют собой два разных процесса.

[Статус процесса на уровне концепции]

  • Состояние работыОтносится к процессу, занимающему работающий процессор.
  • Готовое состояниеОтносится к процессу, который имеет рабочие условия для ожидания запуска процессора.
  • Состояние ожиданияОтносится к процессу, не имеющему рабочих условий из-за ожидания ресурсов, ввода, вывода, сигналов и т. Д.

【Модель процесса с тремя состояниями】


  • Состояние выполнения -> состояние ожидания: ожидание ресурсов, ввода-вывода, сигналов
  • Состояние ожидания -> Состояние готовности: ресурсы удовлетворены, ввод-вывод завершен, сигнал завершен
  • Состояние готовности -> состояние выполнения: выберите процесс с более высоким приоритетом для прерывания, когда процессор простаивает
  • Состояние выполнения -> Состояние готовности: время работы разделено, и есть процесс с более высоким приоритетом

[Концепция приостановки процесса]

  • ОС не может предсказать количество процессов и требования к ресурсам, а компьютерная система может иметь недостаточно ресурсов во время работы.
  • Производительность недостаточных операционных ресурсовНизкая производительностьсТупикДва случая
  • Решение: лишить некоторые процессы памяти и других ресурсов, перенести в область подкачки, управляемую ОС, не участвовать в планировании процессов, а затем передать в память, восстановить ресурсы и участвовать в работе, когда это необходимо.
  • ЭтоЗависает процесс
  • Между приостановленным состоянием и состоянием ожидания есть существенная разница. Последнее содержит запрошенные ресурсы и ожидает, в то время как первое не имеет ресурсов.

[Выбор и восстановление процесса приостановлены]


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

2. Описание данных процесса
[Блок управления процессом, Блок управления процессом]


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

[Блок управления процессом - идентификационная информация]

[Блок управления процессом - информация поля]

[Блок управления процессом - управляющая информация]

[Образ процесса, Образ процесса]


[Принципиальная схема памяти образа процесса]

[Контекст процесса, Контекст процесса]

3. Управление процессами
[Программное обеспечение для управления процессами ОС на уровне концепции]


[Модель очереди, реализованная процессом]

【Модуль управления очередью】

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

【Контроль и управление процессами】

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

[Примитивы и примитивы управления процессами]

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

Четыре, переключение процессов и переключение режимов
[Переключение процесса]

Читайте также: