Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Список процессов, отображаемых htop

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

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

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

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

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

Представление [ править ]

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

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

  • Образ исполняемого машинного кода , связанного с программой.
  • Память (обычно некоторая область виртуальной памяти ); который включает в себя исполняемый код, данные, относящиеся к процессу (ввод и вывод), стек вызовов (для отслеживания активных подпрограмм и / или других событий) и кучу для хранения промежуточных данных вычислений, сгенерированных во время выполнения.
  • Дескрипторы ресурсов операционной системы, которые выделяются процессу, такие как файловые дескрипторы ( терминология Unix ) или дескрипторы ( Windows ), а также источники и приемники данных.
  • Атрибуты безопасности , такие как владелец процесса и набор разрешений процесса (допустимые операции).
  • Состояние процессора ( контекст ), такое как содержимое регистров и адресация физической памяти. Состояние обычно хранится в регистрах компьютера , когда процесс выполняется, и в памяти в противном случае. [1]

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

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

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

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

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

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

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

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

Состояния процесса [ править ]

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

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

  • Во-первых, процесс «создается» путем загрузки с вторичного запоминающего устройства ( жесткого диска , CD-ROM и т. Д.) В основную память . После этого планировщик процесса переводит его в состояние «ожидания».
  • Пока процесс "ожидает", он ждет, пока планировщик выполнит так называемое переключение контекста . Переключатель контекста загружает процесс в процессор и меняет состояние на «выполняется», в то время как ранее «выполняющийся» процесс сохраняется в состоянии «ожидания».
  • Если процессу в состоянии «запущен» необходимо дождаться ресурса (например, дождаться ввода пользователя или открытия файла), ему назначается состояние «заблокировано». Состояние процесса изменяется обратно на «ожидание», когда процессу больше не нужно ждать (в заблокированном состоянии).
  • Когда процесс завершает выполнение или прекращает работу операционной системы, он больше не нужен. Процесс удаляется мгновенно или переводится в состояние «завершено». После удаления он просто ждет удаления из основной памяти. [1] [3]

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

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

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

История [ править ]

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

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

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

См. Также [ править ]

  • Дочерний процесс
  • Выход
  • Вилка
  • Легкий процесс
  • Сиротский процесс
  • Родительский процесс
  • Группа процессов
  • Ждать
  • Рабочий каталог
  • Зомби-процесс

Примечания [ править ]

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

Ссылки [ править ]

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

Дальнейшее чтение [ править ]

  • Ремзи Х. Арпачи-Дюссо и Андреа К. Арпачи-Дюссо (2014). « Операционные системы: три простых штуки ». Книги Арпачи-Дюссо. Соответствующие главы: Абстракция: процесс API процесса
  • Гэри Д. Нотт (1974) Предложение для некоторых примитивов управления процессами и взаимодействия. Обзор операционных систем ACM SIGOPS. Том 8, выпуск 4 (октябрь 1974 г.). стр. 7 - 44

Внешние ссылки [ править ]

  • СМИ, связанные с процессами (вычислениями) на Викискладе?
  • Интернет-ресурсы для получения информации о процессе
  • База данных информации о компьютерных процессах и форум
  • Модели процессов с методами создания и завершения процесса