В вычислении , А процесс является экземпляром из компьютерной программы , которая выполняется с помощью одного или многих нитей . Он содержит программный код и его действия. В зависимости от операционной системы (ОС) процесс может состоять из нескольких потоков выполнения, которые выполняют инструкции одновременно . [1] [2]
В то время как компьютерная программа представляет собой пассивный набор инструкций, обычно хранящихся в файле на диске, процесс - это выполнение этих инструкций после загрузки с диска в память. Несколько процессов могут быть связаны с одной и той же программой; например, открытие нескольких экземпляров одной и той же программы часто приводит к выполнению нескольких процессов.
Многозадачность - это метод, позволяющий нескольким процессам совместно использовать процессоры (ЦП) и другие системные ресурсы. Каждый процессор (ядро) одновременно выполняет одну задачу . Однако многозадачность позволяет каждому процессору переключаться между выполняемыми задачами, не дожидаясь завершения каждой задачи ( приоритетное прерывание ). В зависимости от реализации операционной системы переключатели могут выполняться, когда задачи инициируются и ожидают завершения операций ввода / вывода , когда задача добровольно уступает ЦП, при аппаратных прерываниях и когда планировщик операционной системы решает, что процесс истек. доля процессорного времени (например, по Completely Fair Scheduler в Linux ядра ).
Распространенная форма многозадачности обеспечивается разделением времени ЦП, которое представляет собой метод чередования выполнения пользовательских процессов и потоков и даже независимых задач ядра - хотя последняя функция возможна только в вытесняющих ядрах, таких как Linux . Вытеснение имеет важный побочный эффект для интерактивных процессов, которым дается более высокий приоритет по сравнению с процессами, связанными с процессором, поэтому пользователям немедленно выделяются вычислительные ресурсы при простом нажатии клавиши или при перемещении мыши. Кроме того, таким приложениям, как воспроизведение видео и музыки, дается какой-то приоритет в реальном времени, вытесняя любой другой процесс с более низким приоритетом. В системах с разделением времени переключение контекста выполняется быстро, что создает впечатление, что несколько процессов выполняются одновременно на одном процессоре. Это одновременное выполнение нескольких процессов называется параллелизмом .
В целях безопасности и надежности большинство современных операционных систем предотвращают прямую связь между независимыми процессами, обеспечивая строго опосредованную и контролируемую функциональность взаимодействия между процессами.
Представление
В общем, процесс компьютерной системы состоит из следующих ресурсов (или считается, что они владеют ими ):
- Образ исполняемого машинного кода , связанного с программой.
- Память (обычно некоторая область виртуальной памяти ); который включает в себя исполняемый код, данные для конкретного процесса (ввод и вывод), стек вызовов (для отслеживания активных подпрограмм и / или других событий) и кучу для хранения промежуточных данных вычислений, сгенерированных во время выполнения.
- Дескрипторы ресурсов операционной системы, которые выделяются процессу, например файловые дескрипторы ( терминология Unix ) или дескрипторы ( Windows ), а также источники и приемники данных.
- Атрибуты безопасности , такие как владелец процесса и набор разрешений процесса (допустимые операции).
- Состояние процессора ( контекст ), такое как содержимое регистров и адресация физической памяти. Состояние обычно хранится в регистрах компьютера , когда процесс выполняется, и в памяти в противном случае. [1]
Операционная система хранит большую часть этой информации об активных процессах в структурах данных, называемых блоками управления процессом . Любое подмножество ресурсов, обычно по крайней мере состояние процессора, может быть связано с каждым из потоков процесса в операционных системах, которые поддерживают потоки или дочерние процессы.
Операционная система разделяет свои процессы и распределяет необходимые им ресурсы, так что они с меньшей вероятностью будут мешать друг другу и вызывать системные сбои (например, тупик или сбой ). Операционная система может также предоставлять механизмы для межпроцессного взаимодействия, чтобы процессы могли взаимодействовать безопасным и предсказуемым образом.
Многозадачность и управление процессами
Многозадачный операционная система может просто переключаться между процессами , чтобы создать видимость многих процессов , выполняющую одновременно (то есть в параллели ), хотя на самом деле только один процесс может быть выполнением в любой момент времени на одном процессоре (если процессор не имеет несколько ядер , то можно использовать многопоточность или другие аналогичные технологии). [а]
Обычно один процесс связывается с основной программой, а дочерние процессы - с любыми побочными параллельными процессами, которые ведут себя как асинхронные подпрограммы. Говорят, что процесс владеет ресурсами, из которых образ его программы (в памяти) является одним из таких ресурсов. Однако в многопроцессорных системах многие процессы могут запускаться из одной и той же повторно входимой программы или совместно использовать ее в одном и том же месте в памяти, но считается, что каждый процесс владеет своим собственным образом программы.
Во встроенных операционных системах процессы часто называют «задачами» . Смысл «процесса» (или задачи) - «что-то, что требует времени», в отличие от «памяти», которая является «чем-то, что занимает место». [b]
Приведенное выше описание применимо как к процессам, управляемым операционной системой, так и к процессам, определенным в вычислениях процессов .
Если процесс запрашивает что-то, чего он должен ждать, он будет заблокирован. Когда процесс находится в заблокированном состоянии , он имеет право на подкачку на диск, но это прозрачно в системе виртуальной памяти , где области памяти процесса могут действительно находиться на диске, а не в основной памяти в любое время. Обратите внимание, что даже части активных процессов / задач (выполняемые программы) могут быть перенесены на диск, если эти части не использовались в последнее время. Не все части исполняемой программы и ее данные должны находиться в физической памяти, чтобы связанный процесс был активен.
Состояния процесса
Ядро операционной системы, которое позволяет выполнять многозадачность, требует, чтобы процессы имели определенные состояния . Имена для этих состояний не стандартизированы, но имеют схожую функциональность. [1]
- Во-первых, процесс «создается» путем загрузки с вторичного запоминающего устройства ( жесткого диска , CD-ROM и т. Д.) В основную память . После этого планировщик процесса переводит его в состояние «ожидания».
- Пока процесс «ожидает», он ждет, пока планировщик выполнит так называемое переключение контекста . Переключатель контекста загружает процесс в процессор и меняет состояние на «выполняется», в то время как ранее «запущенный» процесс сохраняется в состоянии «ожидания».
- Если процессу в «запущенном» состоянии необходимо дождаться ресурса (например, дождаться ввода пользователя или открытия файла), ему назначается состояние «заблокировано». Состояние процесса изменяется обратно на «ожидание», когда процессу больше не нужно ждать (в заблокированном состоянии).
- Когда процесс завершает выполнение или прерывается операционной системой, он больше не нужен. Процесс удаляется мгновенно или переводится в состояние «завершено». При удалении он просто ждет удаления из основной памяти. [1] [3]
Межпроцессного взаимодействия
Когда процессам необходимо взаимодействовать друг с другом, они должны совместно использовать части своего адресного пространства или использовать другие формы межпроцессного взаимодействия (IPC). Например, в конвейере оболочки выходные данные первого процесса должны передаваться второму и так далее; другим примером является задача, которую можно разложить на взаимодействующие, но частично независимые процессы, которые могут выполняться одновременно (т. е. с использованием параллелизма или истинного параллелизма - последняя модель является частным случаем одновременного выполнения и возможна, когда для все процессы, которые готовы к запуску).
Возможно даже, что два или более процесса будут выполняться на разных машинах, которые могут работать с разными операционными системами (ОС), поэтому необходимы некоторые механизмы для связи и синхронизации (называемые протоколами связи для распределенных вычислений) (например, интерфейс передачи сообщений, часто просто называют MPI ).
История
К началу 1960-х программное обеспечение для компьютерного управления превратилось из программного обеспечения для управления мониторами , например IBSYS , в программное обеспечение для исполнительного управления . Со временем компьютеры стали быстрее, в то время как компьютерное время все еще не использовалось ни дешево, ни полностью; в такой среде мультипрограммирование стало возможным и необходимым. Мультипрограммирование означает, что несколько программ работают одновременно . Сначала несколько программ выполнялись на одном процессоре из-за лежащей в основе однопроцессорной компьютерной архитектуры, и они совместно использовали скудные и ограниченные аппаратные ресурсы; следовательно, параллелизм носил серийный характер. В более поздних системах с несколькими процессорами несколько программ могут работать одновременно и параллельно .
Программы состоят из последовательностей инструкций для процессоров. Один процессор может одновременно выполнять только одну инструкцию: невозможно запустить несколько программ одновременно. Программе может потребоваться какой-то ресурс , например устройство ввода, которое имеет большую задержку, или программа может начать медленную операцию, например, отправку вывода на принтер. Это приведет к тому, что процессор будет "простаивать" (не используется). Чтобы процессор был постоянно занят, выполнение такой программы останавливается, а операционная система переключает процессор на выполнение другой программы. Пользователю будет казаться, что программы выполняются одновременно (отсюда и термин «параллельный»).
Вскоре после этого понятие «программа» было расширено до понятия «выполняемая программа и ее контекст». Так родилась концепция процесса, что также стало необходимым с изобретением реентерабельного кода . Темы пришли несколько позже. Однако с появлением таких понятий, как разделение времени , компьютерные сети и компьютеры с общей памятью с несколькими процессорами , старое «мультипрограммирование» уступило место истинной многозадачности , многопроцессорности и, позднее, многопоточности .
Смотрите также
- Дочерний процесс
- Выход
- Вилка
- Легкий процесс
- Сиротский процесс
- Родительский процесс
- Группа процессов
- Ждать
- Рабочий каталог
- Зомби-процесс
Заметки
- ^ Некоторые современные процессоры объединяют два или более независимых процессора в многоядерной конфигурации и могут выполнять несколько процессов одновременно. Другой методназываемый одновременной многопоточности (используется в Intel «s -Threading Hyper технологии) может имитировать одновременное выполнение нескольких процессов или потоков.
- ^ Задачи и процессы относятся к одному и тому же объекту. И хотя у них несколько разная терминологическая история, они стали использоваться как синонимы. Сегодня термин «процесс» обычно предпочтительнее, чем «задача», за исключением случаев, когда используется термин «многозадачность», поскольку альтернативный термин «многопроцессорность» слишком легко спутать с многопроцессорным (то есть компьютером с двумя или более процессорами).
Рекомендации
- ^ a b c d Зильбершац, Авраам ; Кань, Грег; Галвин, Питер Баер (2004). «Глава 4. Процессы». Концепции операционной системы с Java (Шестое изд.). Джон Вили и сыновья . ISBN 0-471-48905-0.
- ^ Вахалия, Уреш (1996). «Глава 2. Процесс и ядро». Внутреннее устройство UNIX: новые рубежи . ISBN компании Prentice-Hall Inc. 0-13-101908-2.
- ^ Столлингс, Уильям (2005). Операционные системы: внутреннее устройство и принципы построения (5-е изд.). Прентис Холл. ISBN 0-13-127837-1. (в частности, глава 3, раздел 3.2, «состояния процесса», включая рисунок 3.9 «переход между состояниями процесса с приостановленными состояниями»)
дальнейшее чтение
- Ремзи Х. Арпачи-Дюссо и Андреа К. Арпачи-Дюссо (2014). « Операционные системы: три простых штуки ». Книги Арпачи-Дюссо. Соответствующие главы: Абстракция: процесс API процесса
- Гэри Д. Нотт (1974) Предложение для некоторых примитивов управления процессами и взаимодействия. Обзор операционных систем ACM SIGOPS. Том 8, выпуск 4 (октябрь 1974 г.). стр. 7 - 44
Внешние ссылки
- СМИ, связанные с процессами (вычислениями) на Викискладе?
- Интернет-ресурсы для получения информации о процессе
- База данных информации о компьютерных процессах и форум
- Модели процессов с методами создания и завершения процесса