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

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

В общем, процесс компьютерной системы состоит из (или, как говорят, владеет ) следующих ресурсов:
- Изображение связанного исполняемого машинного кода, с программой.
- Память (обычно некоторая область виртуальной памяти ); который включает в себя исполняемый код, данные, специфичные для процесса (входные и выходные), стек вызовов (для отслеживания активных подпрограмм и/или других событий) и кучу для хранения промежуточных вычислительных данных, сгенерированных во время выполнения.
- Дескрипторы операционной системы ресурсов, выделенных процессу, например дескрипторы файлов ( терминология Unix ) или дескрипторы ( Windows ), а также источники и приемники данных.
- Атрибуты безопасности , такие как владелец процесса и набор разрешений процесса (разрешенные операции).
- процессора Состояние ( контекст ), такое как содержимое регистров и адресация физической памяти. Состояние обычно сохраняется в регистрах компьютера во время выполнения процесса и в памяти в противном случае. [ 1 ]
Операционная система хранит большую часть этой информации об активных процессах в структурах данных, называемых блоками управления процессами . Любое подмножество ресурсов, обычно, по крайней мере, состояние процессора, может быть связано с каждым потоком процесса в операционных системах, которые поддерживают потоки или дочерние процессы.
Операционная система разделяет свои процессы и выделяет необходимые им ресурсы, чтобы они с меньшей вероятностью мешали друг другу и вызывали сбои системы (например, взаимоблокировку или сбой ). Операционная система также может предоставлять механизмы межпроцессного взаимодействия , позволяющие процессам взаимодействовать безопасным и предсказуемым образом.
Многозадачность и управление процессами
[ редактировать ]Многозадачная ), хотя на самом деле операционная система может просто переключаться между процессами, чтобы создать видимость одновременного выполнения множества процессов (то есть параллельно в любой момент времени на одном ЦП может выполняться только один процесс (если только ЦП не имеет несколько ядер). , то многопоточность или другие подобные технологии). можно использовать [ а ]
Обычно один процесс связывают с основной программой, а дочерние процессы — с любыми дополнительными параллельными процессами, которые ведут себя как асинхронные подпрограммы. Говорят, что процесс владеет ресурсами, одним из которых является образ его программы (в памяти). Однако в многопроцессорных системах многие процессы могут запускаться или совместно использовать одну и ту же реентерабельную программу в одном и том же месте памяти, но говорят, что каждый процесс владеет своим собственным образом программы.
операционных системах процессы часто называют «задачами» Во встроенных . Смысл «процесса» (или задачи) — это «что-то, что занимает время», в отличие от «памяти», которая является «чем-то, что занимает пространство». [ б ]
Приведенное выше описание применимо как к процессам, управляемым операционной системой, так и к процессам, определяемым исчислением процессов .
Если процесс запрашивает что-то, чего он должен ожидать, он будет заблокирован. Когда процесс находится в заблокированном состоянии , его можно переместить на диск, но это прозрачно в системе виртуальной памяти , где области памяти процесса могут действительно находиться на диске, а не в основной памяти в любой момент . Даже части активных процессов/задач (выполняющих программ) могут быть перенесены на диск, если эти части в последнее время не использовались. Не все части исполняемой программы и ее данные должны находиться в физической памяти, чтобы соответствующий процесс был активным.
Состояния процесса
[ редактировать ]
операционной системы Ядро , обеспечивающее многозадачность, требует, чтобы процессы имели определенные состояния . Имена этих состояний не стандартизированы, но они имеют схожую функциональность. [ 1 ]
- Сначала процесс «создается» путем загрузки со вторичного запоминающего устройства ( жесткого диска , компакт-диска и т. д.) в основную память . После этого планировщик процесса переводит его в состояние «ожидание».
- Пока процесс «ждёт», он ждёт, пока планировщик выполнит так называемое переключение контекста . Переключатель контекста загружает процесс в процессор и меняет состояние на «выполняется», в то время как ранее «выполнявшийся» процесс сохраняется в состоянии «ожидания».
- Если процессу в «работающем» состоянии необходимо дождаться ресурса (например, дождаться пользовательского ввода или открытия файла), ему присваивается «заблокированное» состояние. Состояние процесса снова меняется на «ожидание», когда процессу больше не нужно ждать (в заблокированном состоянии).
- Как только процесс завершает выполнение или завершается операционной системой, он больше не нужен. Процесс удаляется мгновенно или переводится в состояние «завершено». После удаления он просто ожидает удаления из основной памяти. [ 1 ] [ 3 ]
Межпроцессное взаимодействие
[ редактировать ]Когда процессам необходимо взаимодействовать друг с другом, они должны совместно использовать части своих адресных пространств или использовать другие формы межпроцессного взаимодействия (IPC). Например, в оболочки конвейере выходные данные первого процесса должны передаваться второму и так далее. Другой пример — задача, которая была разложена на взаимодействующие, но частично независимые процессы, которые могут выполняться одновременно (т. е. с использованием параллелизма или настоящего параллелизма — последняя модель представляет собой частный случай одновременного выполнения и осуществима всякий раз, когда для выполнения задачи доступно несколько ядер ЦП). процессы, готовые к запуску).
Возможно даже, что два или более процессов будут выполняться на разных машинах, которые могут работать под управлением разных операционных систем (ОС), поэтому некоторые механизмы связи и синхронизации (называемые протоколами связи необходимы для распределенных вычислений) (например, интерфейс передачи сообщений { МПИ}).
История
[ редактировать ]К началу 1960-х годов программное обеспечение для управления компьютером превратилось из программного обеспечения для управления мониторами , например IBSYS , в программное обеспечение для исполнительного управления . Со временем компьютеры стали быстрее, а компьютерное время все еще не было ни дешевым, ни полностью использованным; такая среда сделала мультипрограммирование возможным и необходимым. Мультипрограммирование означает, что несколько программ выполняются одновременно . Поначалу из-за базовой однопроцессорной компьютерной архитектуры на одном процессоре работало более одной программы, и они использовали скудные и ограниченные аппаратные ресурсы; следовательно, параллелизм имел последовательный характер. В более поздних системах с несколькими процессорами несколько программ могут выполняться параллельно .
Программы состоят из последовательностей инструкций для процессоров. Один процессор может одновременно выполнять только одну инструкцию: одновременно выполнять больше программ невозможно. Программе может потребоваться некоторый ресурс , например устройство ввода, которое имеет большую задержку, или программа может начать какую-то медленную операцию, например отправку вывода на принтер. Это приведет к тому, что процессор будет «простаивать» (не использоваться). Чтобы процессор постоянно был занят, выполнение такой программы приостанавливается, и операционная система переключает процессор на запуск другой программы. Пользователю будет казаться, что программы выполняются одновременно (отсюда и термин «параллельно»).
Вскоре после этого понятие «программа» было расширено до понятия «исполняемая программа и ее контекст». Родилось понятие процесса, которое также стало необходимым с изобретением реентерабельного кода . Темы появились несколько позже. Однако с появлением таких концепций, как разделение времени , компьютерные сети и многопроцессорные компьютеры с общей памятью , старое «мультипрограммирование» уступило место истинной многозадачности , многопроцессорности и, позднее, многопоточности .
См. также
[ редактировать ]Примечания
[ редактировать ]- ^ Некоторые современные процессоры объединяют два или более независимых процессора в многоядерной конфигурации и могут выполнять несколько процессов одновременно. Другой метод, называемый одновременной многопоточностью (используемый в Intel технологии Hyper-threading ), может имитировать одновременное выполнение нескольких процессов или потоков.
- ^ Задачи и процессы по существу относятся к одному и тому же объекту. И хотя они имеют несколько разную терминологическую историю, их стали использовать как синонимы. Сегодня термин «процесс» обычно предпочтительнее задачи, за исключением случаев, когда речь идет о «многозадачности», поскольку альтернативный термин «многопроцессорность» слишком легко спутать с многопроцессором (то есть компьютером с двумя или более процессорами).
Ссылки
[ редактировать ]- ^ Jump up to: а б с д Зильбершац, Авраам ; Кань, Грег; Гэлвин, Питер Баер (2004). «Глава 4. Процессы». Концепции операционной системы с Java (Шестое изд.). Джон Уайли и сыновья . ISBN 0-471-48905-0 .
- ^ Вахалия, Уреш (1996). «Глава 2. Процесс и ядро». Внутреннее устройство UNIX: новые рубежи . Prentice-Hall Inc. ISBN 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
Внешние ссылки
[ редактировать ]
СМИ, связанные с процессами (вычислениями), на Викискладе?
- Интернет-ресурсы для информации о процессах
- База данных и форум информации о компьютерных процессах
- Модели процессов с методами создания и завершения процессов. Архивировано 6 февраля 2021 г. на Wayback Machine.