В вычисления, процесс - это экземпляр компьютерной программы, которая выполняется одним или несколькими потоками. Он содержит программный код и его действия. В зависимости от операционной системы (ОС) процесс может состоять из нескольких потоков выполнения, которые выполняют инструкции одновременно.
, в то время как компьютерная программа представляет собой пассивную совокупность для инструкций процесс - это фактическое выполнение этих инструкций. Несколько процессов могут быть связаны с одной и той же программой; например, открытие нескольких экземпляров одной и той же программы часто приводит к выполнению нескольких процессов.
Многозадачность - это метод, позволяющий нескольким процессам совместно использовать процессоры (ЦП) и другие системные ресурсы. Каждый ЦП (ядро) выполняет одну задачу за раз. Однако многозадачность позволяет каждому процессору переключать между выполняемыми задачами, не дожидаясь завершения каждой задачи (вытеснение ). В зависимости от реализации операционной системы переключение может выполняться, когда задачи инициируются и ожидают завершения операций ввода / вывода, когда задача добровольно уступает ЦП, на аппаратных прерываниях и когда планировщик операционной системы решает, что для процесса истек срок его справедливой доли процессорного времени (например, с помощью Completely Fair Scheduler ядра Linux ).
Обычная форма многозадачности обеспечивается процессором с разделением времени, который представляет собой метод чередования выполнения пользовательских процессов и потоков и даже независимых задач ядра, хотя последняя функция является возможно только в вытесняющих ядрах , таких как Linux. Вытеснение имеет важный побочный эффект для интерактивных процессов, которым дается более высокий приоритет по сравнению с процессами, связанными с процессором, поэтому пользователям немедленно выделяются вычислительные ресурсы при простом нажатии клавиши или при перемещении мыши. Кроме того, таким приложениям, как воспроизведение видео и музыки, дается некоторый приоритет в реальном времени, вытесняя любой другой процесс с более низким приоритетом. В системах с разделением времени переключение контекста выполняется быстро, что создает впечатление, что несколько процессов выполняются одновременно на одном процессоре. Это одновременное выполнение нескольких процессов называется параллелизмом.
. В целях безопасности и надежности большинство современных операционных систем предотвращают прямую связь между независимыми процессами, обеспечивая строго опосредованное и контролируемое взаимодействие. функциональные возможности связи процессов. Это основная микросхема компьютера, она обрабатывает инструкции, выполняет вычисления и управляет потоком информации через компьютерную систему, которая взаимодействует с системами ввода, вывода и хранения для выполнения задачи.
В общем, процесс компьютерной системы состоит из (или, как говорят, владеть) следующие ресурсы:
Операционная система хранит большую часть этой информации об активных процессах в структурах данных, называемых блоками управления процессом. Любое подмножество ресурсов, обычно по крайней мере состояние процессора, может быть связано с каждым из процессов «потоков в операционных системах, которые поддерживают потоки или дочерние процессы.
Операционная система хранит свои процессы отдельно и выделяет необходимые им ресурсы, чтобы они с меньшей вероятностью мешали друг другу и вызывали сбои системы (например, тупик или сбой ). Операционная система также может предоставлять механизмы для межпроцессного взаимодействия, чтобы процессы могли взаимодействовать безопасным и предсказуемым образом.
A Многозадачность операционная система может просто переключаться между процессами, чтобы создать впечатление, что многие процессы выполняют одновременно (т. Е. параллельный ), хотя на самом деле только один процесс может выполняться одновременно на одном ЦП (если ЦП не имеет нескольких ядер, тогда многопоточность или другое могут использоваться аналогичные технологии).
Обычно один процесс связывается с основной программой, а дочерние процессы - с любыми побочными параллельными процессами, которые ведут себя как асинхронные подпрограммы. Говорят, что процесс владеет ресурсами, из которых образ его программы (в памяти) является одним из таких ресурсов. Однако в многопроцессорных системах многие процессы могут запускаться из одной и той же повторно входимой программы или совместно использовать ее в одном и том же месте в памяти, но каждый процесс, как говорят, владеет своим собственным образом программы.
В встроенных операционных системах процессы часто называют «задачами». Смысл «процесса» (или задачи) - «что-то, что требует времени», в отличие от «памяти», которая является «чем-то, что занимает место».
Приведенное выше описание применимо к обоим управляемым процессам операционной системой и процессами, как определено в вычислении процессов.
. Если процесс запрашивает что-то, чего он должен ждать, он будет заблокирован. Когда процесс находится в заблокированном состоянии, он имеет право на подкачку на диск, но это прозрачно в системе виртуальной памяти, где области памяти процесса могут действительно находиться на диске а не в основной памяти в любое время. Обратите внимание, что даже части активных процессов / задач (выполнение программ) могут быть перенесены на диск, если эти части не использовались в последнее время. Не все части исполняемой программы и ее данные должны находиться в физической памяти, чтобы связанный процесс был активен.
Операционная система ядро , которое позволяет процессам, требующим многозадачности, иметь определенные состояния. Имена для этих состояний не стандартизированы, но они имеют аналогичную функциональность.
Когда процессам необходимо взаимодействовать друг с другом, они должны совместно использовать части своих адресных пространств или использовать другие формы межпроцессного взаимодействия (IPC). Например, в конвейере оболочки выходные данные первого процесса необходимо передать второму и так далее; другим примером является задача, которую можно разложить на взаимодействующие, но частично независимые процессы, которые могут выполняться одновременно (т. е. с использованием параллелизма или истинного параллелизма - последняя модель является частным случаем одновременного выполнения и возможна, когда достаточно ядер ЦП доступно для все процессы, которые готовы к запуску).
Два или более процесса могут работать на разных машинах, которые могут работать с разными операционными системами (ОС), поэтому некоторые механизмы для связи и синхронизации (называемые протоколами связи для распределенных вычисления) (например, интерфейс передачи сообщений, часто называемый просто MPI ).
К началу 1960-х программное обеспечение для компьютерного управления превратилось, например, из IBSYS в. Со временем компьютеры стали быстрее, в то время как компьютерное время по-прежнему не использовалось ни дешево, ни полностью; такая среда сделала мультипрограммирование возможным и необходимым. Мультипрограммирование означает, что несколько программ работают одновременно. Сначала несколько программ выполнялись на одном процессоре из-за базовой однопроцессорной компьютерной архитектуры, и они совместно использовали скудные и ограниченные аппаратные ресурсы; следовательно, параллелизм носил последовательный характер. В более поздних системах с несколькими процессорами несколько программ могут выполняться одновременно в параллельном.
. Программы состоят из последовательностей инструкций для процессоров. Один процессор может выполнять только одну инструкцию за раз: невозможно запускать несколько программ одновременно. Программе может потребоваться некоторый ресурс , например устройство ввода с большой задержкой, или программа может начать некоторую медленную операцию, такую как отправка вывода на принтер. Это приведет к тому, что процессор будет "простаивать" (не используется). Чтобы процессор был постоянно занят, выполнение такой программы останавливается, и операционная система переключает процессор на выполнение другой программы. Пользователю будет казаться, что программы выполняются одновременно (отсюда и термин «параллельный»).
Вскоре после этого понятие «программа» было расширено до понятия «выполняемая программа и ее контекст». Так родилась концепция процесса, что также стало необходимым с изобретением реентерабельного кода. Темы появились несколько позже. Однако с появлением таких концепций, как разделение времени, компьютерные сети и компьютеры с несколькими процессорами с общей памятью, старое «мультипрограммирование» уступило место true многозадачность, многопроцессорность и, позже, многопоточность.
Викиверситет содержит обучающие ресурсы по процессам и потокам в Операционные системы / процессы и потоки |