stringtranslate.com

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

Программа , процесс и планирование потоков , вытеснение , переключение контекста

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

История

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

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

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

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

Примечания

  1. ^ Некоторые современные процессоры объединяют два или более независимых процессора в многоядерной конфигурации и могут выполнять несколько процессов одновременно. Другой метод, называемый одновременной многопоточностью (используемый в технологии Intel Hyper-threading ), может имитировать одновременное выполнение нескольких процессов или потоков.
  2. ^ Задачи и процессы по существу относятся к одному и тому же объекту. И хотя они имеют несколько разную терминологическую историю, их стали использовать как синонимы. Сегодня термин «процесс» обычно предпочтительнее задачи, за исключением случаев, когда речь идет о «многозадачности», поскольку альтернативный термин «многопроцессорность» слишком легко спутать с многопроцессором (то есть компьютером с двумя или более процессорами).

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

  1. ^ abcd Зильбершац, Авраам ; Кань, Грег; Гэлвин, Питер Баер (2004). «Глава 4. Процессы». Концепции операционной системы с Java (Шестое изд.). Джон Уайли и сыновья . ISBN 0-471-48905-0.
  2. ^ Вахалия, Уреш (1996). «Глава 2. Процесс и ядро». Внутреннее устройство UNIX: новые рубежи . ISBN Prentice-Hall Inc. 0-13-101908-2.
  3. ^ Столлингс, Уильям (2005). Операционные системы: внутреннее устройство и принципы проектирования (5-е изд.). Прентис Холл. ISBN 0-13-127837-1.(особенно глава 3, раздел 3.2, «Состояния процесса», включая рисунок 3.9 «Переход между состояниями процесса с состояниями ожидания»)

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

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