stringtranslate.com

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Процессные состояния

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

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

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

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

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

История

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

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

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

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

Примечания

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

Ссылки

  1. ^ abcd Silberschatz, Abraham ; Cagne, Greg; Galvin, Peter Baer (2004). "Глава 4. Процессы". Концепции операционных систем с Java (шестое изд.). John Wiley & Sons . ISBN 0-471-48905-0.
  2. ^ Vahalia, Uresh (1996). "Глава 2. Процесс и ядро". UNIX Internals: The New Frontiers . Prentice-Hall Inc. ISBN 0-13-101908-2.
  3. ^ Сталлингс, Уильям (2005). Операционные системы: внутреннее устройство и принципы проектирования (5-е изд.). Prentice Hall. ISBN 0-13-127837-1.(в частности, глава 3, раздел 3.2, «Состояния процесса», включая рисунок 3.9 «Переход состояний процесса с состояниями приостановки»)

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

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