Новости
Главная / 2ИСиП / Лекция № 3. ПРОЦЕССЫ

Лекция № 3. ПРОЦЕССЫ

3.1 Определение процесса

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

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

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

При исполнении программ на процессоре чаще всего различают следующие характерные отдельные состояния:

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

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

Рис. 3.1. Граф существования процесса

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

  • Классификация процессов

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

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

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

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

Программные процессы принято делить на системные и пользовательские. При развитии системного процесса исполняется программный код из состава операционной системы. При развитии пользовательского процесса исполняется пользовательская (прикладная) программа.

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

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

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

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

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

3.2 Программные потоки

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

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

Рис. 3.2. Модель программных потоков: а – три процесса с собственным программным потоком каждый; б – один процесс с тремя потоками

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