Управление процессами (вычисления) - Process management (computing)

Процесс - это выполняемая программа. Неотъемлемая часть любого современного Операционная система (ОПЕРАЦИОННЫЕ СИСТЕМЫ). ОС должна выделять ресурсы для процессы, позволяют процессам обмениваться информацией, защищать ресурсы каждого процесса от других процессов и обеспечивать синхронизацию между процессами. Чтобы соответствовать этим требованиям, ОС должна поддерживать структура данных для каждого процесса, который описывает состояние и право собственности на ресурсы этого процесса и позволяет ОС контролировать каждый процесс.

Мультипрограммирование

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

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

Есть два возможных способа для ОС восстановить контроль над процессором во время выполнения программы, чтобы ОС выполнила выделение или выделение:

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

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

Как мультипрограммирование увеличивает эффективность

Общей чертой, наблюдаемой среди процессов, связанных с большинством компьютерных программ, является то, что они чередуются между ЦПУ циклы и Ввод / вывод циклы. В течение части времени, необходимого для циклов ЦП, процесс выполняется; т.е. занимает ЦП. В течение времени, необходимого для циклов ввода / вывода, процесс не использует процессор. Вместо этого он либо ожидает выполнения ввода / вывода, либо фактически выполняет ввод / вывод. Примером этого является чтение или запись файла на диске. До появления мультипрограммирование, компьютеры работают как однопользовательские системы. Пользователи таких систем быстро осознали, что большую часть времени, когда компьютер был выделен одному пользователю, процессор простаивал; например, когда пользователь вводил информацию или отлаживал программы. Компьютерные ученые заметил, что общую производительность машины можно улучшить, позволив другому процессу использовать процессор всякий раз, когда один процесс ожидает ввода / вывода. В система универсального программирования, если N пользователи должны были выполнять программы с индивидуальным временем выполнения т1, т2, ..., тN, то общее время, туни, для обслуживания N процессов (последовательно) всех N пользователи будут:

туни = т1 + т2 + ... + тN.

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

тя (процессор)тя (исполнение)

куда

тя (процессор) это временной процесс я тратит на использование процессора, и
тя (исполнение) - общее время выполнения процесса; то есть время циклов ЦП плюс циклы ввода / вывода, которые должны выполняться (выполняться) до завершения процесса.

Фактически, обычно это сумма всего процессорного времени, используемого N процессы, редко превышает малую долю времени для выполнения любого из процессов;

Поэтому в системах с единым программированием процессор большую часть времени простаивает. Чтобы преодолеть эту неэффективность, мультипрограммирование теперь реализовано в современных операционных системах, таких как Linux, UNIX и Майкрософт Виндоус. Это позволяет процессору переключаться с одного процесса X на другой Y, когда X участвует в фазе ввода-вывода своего выполнения. Поскольку время обработки намного меньше времени выполнения одного задания, общее время обслуживания всех N пользователей с системой мультипрограммирования можно сократить примерно до:

тмульти = макс (т1, т2, ..., тN)

Создание процесса

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

  • Инициализация системы.
  • Выполнение системного вызова создания процесса запущенным процессом.
  • Запрос пользователя на создание нового процесса.
  • Запуск пакетного задания.

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

Создание процессов в UNIX и Linux осуществляется с помощью системных вызовов fork () или clone (). Создание процесса состоит из нескольких этапов. Первым шагом является проверка того, родительский процесс имеет достаточные полномочия для создания процесса. После успешной проверки родительский процесс копируется почти полностью, с изменениями только уникального идентификатора процесса, родительского процесса и пользовательского пространства. Каждый новый процесс получает собственное пользовательское пространство.[1]

Прекращение процесса

Причин прекращения процесса много:

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

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

В Операционная система Основная ответственность заключается в контроле за исполнением процессы. Это включает определение шаблона чередования для выполнения и выделения ресурсов процессам. Одна часть разработки Операционные системы заключается в описании поведения, которое мы хотели бы продемонстрировать в каждом процессе. Самая простая модель основана на том факте, что процесс либо выполняется процессором, либо нет. Таким образом, можно считать, что процесс находится в одном из двух состояний: БЕГ или же НЕ БЕГАТЬ. Когда операционная система создает новый процесс, этот процесс изначально помечается как НЕ БЕГАТЬ, и помещается в очередь в системе в НЕ БЕГАТЬ государственный. Тогда процесс (или его часть) существует в основная память, и ожидает в очереди возможности выполнения. Через некоторое время текущий БЕГ процесс будет прерван и перемещен из БЕГ заявить НЕ БЕГАТЬ состояние, делая процессор доступным для другого процесса. Затем диспетчерская часть ОС выберет из очереди НЕ БЕГАТЬ процессы, один из процессов, ожидающих передачи процессору. Затем выбранный процесс переименовывается с НЕ БЕГАТЬ заявить БЕГ состояние, и его выполнение либо начинается, если это новый процесс, либо возобновляется, если это процесс, который был прерван ранее.

По этой модели мы можем идентифицировать некоторые элементы дизайна ОС:

  • Необходимость представлять и отслеживать каждый процесс.
  • Состояние процесса.
  • Очередь НЕ РАБОТАЕТ процессы

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

Хотя модель управления процессами с двумя состояниями является вполне допустимой схемой для операционной системы, отсутствие ЗАБЛОКИРОВАНО состояние означает, что процессор простаивает, когда активный процесс переключается с циклов ЦП на Ввод / вывод циклы. Такая конструкция не позволяет эффективно использовать процессор. Модель управления процессами с тремя состояниями предназначена для преодоления этой проблемы путем введения нового состояния, называемого ЗАБЛОКИРОВАНО государственный. Это состояние описывает любой процесс, который ожидает события ввода-вывода. В этом случае событие ввода-вывода может означать использование какого-либо устройства или сигнал от другого процесса. В этой модели есть три состояния:

  • БЕГ: Процесс, который в настоящее время выполняется.
  • ГОТОВЫ: Процесс, который стоит в очереди и готов к выполнению, когда представится возможность.
  • ЗАБЛОКИРОВАНО: Процесс, который не может выполняться до тех пор, пока не произойдет какое-либо событие, например, до завершения операции ввода-вывода.

В любой момент процесс находится в одном и только одном из трех состояний. Для однопроцессорного компьютера только один процесс может быть в БЕГ состояние в любой момент. Может быть много процессов в ГОТОВЫ и ЗАБЛОКИРОВАНО состояния, и каждое из этих состояний будет иметь связанную очередь для процессов.

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

  • РАБОТАЕТ → ГОТОВ Наиболее частая причина этого перехода заключается в том, что запущенный процесс достиг максимально допустимого времени для непрерывного выполнения; т.е. происходит тайм-аут. Другими причинами могут быть установление уровней приоритета, определенных планирование политика, используемая для низкого уровня Планировщик, и переход процесса с более высоким приоритетом в состояние ГОТОВ.
  • РАБОТАЕТ → ЗАБЛОКИРОВАНО Процесс помещен в ЗАБЛОКИРОВАНО указать, если он запрашивает то, чего должен ждать. Запрос к ОС обычно имеет форму системного вызова (т. Е. Вызова из запущенного процесса функции, которая является частью кода ОС). Например, запрос файла с диска или сохранение раздела кода или данных из памяти в файл на диске.

Описание процесса и контроль

Каждый процесс в системе представлена ​​структурой данных, называемой Блок управления процессом (PCB) или дескриптор процесса в Linux, который выполняет ту же функцию, что и паспорт путешественника. Плата содержит основную информацию о работе, в том числе:

  • Что это
  • Куда это идет
  • Насколько завершена его обработка
  • Где хранится
  • Сколько он «потратил» на использование ресурсов

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

Статус процесса: Указывает текущий статус процесса;ГОТОВЫ, БЕГ, ЗАБЛОКИРОВАНО, ГОТОВ ПРИОСТАНОВИТЬ, ЗАБЛОКИРОВАННАЯ ПРИОСТАНОВКА.

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

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

Режимы процессора

Современный процессоры включить бит режима, чтобы определить возможности выполнения программы в процессоре. Этот бит можно установить на режим ядра или же пользовательский режим. Режим ядра также обычно называют режим супервизора, режим монитора или же кольцо 0. В режиме ядра процессор может выполнять каждую инструкцию в своем аппаратном репертуаре, тогда как в пользовательском режиме он может выполнять только подмножество инструкций. Инструкции, которые могут выполняться только в режиме ядра, называются командами ядра, привилегированными или защищенными, чтобы отличать их от команд пользовательского режима. Например, Ввод / вывод инструкции являются привилегированными. Итак, если заявление программа выполняется в пользовательском режиме, она не может выполнять свои собственные Ввод / вывод. Вместо этого он должен запросить у ОС выполнение Ввод / вывод от его имени. Система может логически расширить бит режима, чтобы определить области памяти, которые будут использоваться, когда процессор находится в режиме ядра по сравнению с пользовательским режимом. Если бит режима установлен в режим ядра, процесс, выполняющийся в процессоре, может получить доступ либо к ядру, либо к пользовательскому разделу памяти. Однако, если установлен пользовательский режим, процесс может ссылаться только на пространство пользовательской памяти. Мы часто ссылаемся на два класса памяти: пользовательское пространство и системное пространство (или ядро, супервизор или защищенное пространство). В общем, бит режима расширяет права защиты операционной системы. Бит режима устанавливается инструкцией прерывания пользовательского режима, также называемой инструкцией вызова супервизора. Эта инструкция устанавливает бит режима и выполняет переход в фиксированное место в системном пространстве. Поскольку в системное пространство загружается только системный код, через ловушку можно вызывать только системный код. Когда ОС завершила вызов супервизора, она сбрасывает бит режима в режим пользователя перед возвратом.

Концепция системы ядра

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

Запрос системных услуг

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

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

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

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

Смотрите также

Рекомендации

Источники

  • Операционная система, включающая Windows и UNIX, Колин Ричи. ISBN  0-8264-6416-5
  • Операционные системы, Уильям Столлингс, Prentice Hall, (4-е издание, 2000 г.)
  • Мультипрограммирование, описание процесса и управление
  • Операционные системы - современная перспектива, Гэри Натт, Эддисон Уэсли (2-е издание, 2001 г.).
  • Модели управления процессами, планирование, UNIX System V Release 4:
  • Современные операционные системы, Эндрю Таненбаум, Прентис Холл, (2-е издание, 2001 г.).
  • Концепции операционных систем, Silberschatz & Galvin & Gagne (http://codex.cs.yale.edu/avi/os-book/OS9/slide-dir/ ), John Wiley & Sons, (6-е издание, 2003 г.)