Свежие комментарии
Посещение сайта
Благодарность: Школа StartUp.
)

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

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

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

Процесс это:

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

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

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

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

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

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

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

  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. Синхронизация – когда процессу нужно получить доступ к какому-либо ресурсу, который используется другим процессом, ему приходится ждать.

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

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

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

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

 

Скачать презентацию к лекции «Процессы и потоки»

 

Скачать тест по теме «Процессы и потоки»

 

 

Понравилась статья, рекомендуйте Вашим друзьям!

Давайте дружить!

Оставить комментарий