Процесс (вычисления) - Process (computing)

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

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

Многозадачность - это метод, позволяющий нескольким процессам совместно использовать процессоры (ЦП) и другие системные ресурсы. Каждый процессор (ядро) одновременно выполняет одну задачу . Однако многозадачность позволяет каждому процессору переключаться между выполняемыми задачами, не дожидаясь завершения каждой задачи ( приоритетное прерывание ). В зависимости от реализации операционной системы переключатели могут выполняться, когда задачи инициируются и ожидают завершения операций ввода / вывода , когда задача добровольно уступает ЦП, при аппаратных прерываниях и когда планировщик операционной системы решает, что процесс истек. доля процессорного времени (например, по Completely Fair Scheduler в Linux ядра ).

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

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

Представление

Список процессов, отображаемых htop
Таблица процессов, отображаемая KDE System Guard
Таблица процессов, отображаемая KDE System Guard

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

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

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

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

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

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

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

Во встроенных операционных системах процессы часто называют «задачами» . Смысл «процесса» (или задачи) - «что-то, что требует времени», в отличие от «памяти», которая является «чем-то, что занимает место».

Приведенное выше описание применимо как к процессам, управляемым операционной системой, так и к процессам, определенным в вычислениях процессов .

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

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

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

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

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

Межпроцессного взаимодействия

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

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

История

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

Программы состоят из последовательностей инструкций для процессоров. Один процессор может одновременно выполнять только одну инструкцию: невозможно запустить несколько программ одновременно. Программе может потребоваться какой-то ресурс , например устройство ввода с большой задержкой, или программа может начать медленную операцию, например, отправку вывода на принтер. Это приведет к тому, что процессор будет "простаивать" (не используется). Чтобы процессор был постоянно занят, выполнение такой программы останавливается, а операционная система переключает процессор на выполнение другой программы. Пользователю будет казаться, что программы выполняются одновременно (отсюда и термин «параллельный»).

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

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

Примечания

использованная литература

дальнейшее чтение

внешние ссылки