Как много вы знаете о процессе?

Java

Статья впервые опубликована:Как много вы знаете о процессе?

Часть 1 серии статей о многопоточности в Java.

Если мы хотим говорить о потоках, нам, как правило, приходится говорить о процессах.Где процесс священный? Вот краткое введение.

Сначала посмотрите процессы под системой Windows через диспетчер задач.

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

Почему появляется процесс?

Цель внедрения процесса:Чтобы обеспечить одновременное выполнение нескольких программ для улучшения использования ресурсов и пропускной способности системы.. Как понять эту фразу? Программа будет включать в себя множество операций во время выполнения, используя вычисления ЦП, передачу данных через дисковый ввод-вывод и т. д. Мы знаем, что когда программа выполняет дисковый ввод-вывод, она будет работать медленнее из-за проблем со скоростью, а ЦП будет в этом процессе. При бездействии это приведет к растрате ресурсов. Именно из-за введения процессов, когда процесс А выполняет дисковый ввод-вывод, он отдает ЦП процессу Б, разумно используя ресурсы ЦП, так что программы могут выполняться одновременно.

С точки зрения ЦП процесс выполнения выглядит следующим образом: ЦП всегда отвечает за выполнение инструкций, а процессы конкурируют друг с другом за ресурсы ЦП.На следующем рисунке показаны процессы A и B. В определенный момент времени ЦП выполняет инструкции только одного процесса, потому что ЦП работает очень быстро, поэтому нам кажется, что несколько процессов выполняются одновременно. В чем преимущество процесса:Оптимизируйте использование ресурсов и выполняйте несколько программ одновременно.

Конечно, внедрение процесса не выгодно и не безвредно, оно повышает работоспособность системы.времяикосмоснакладные расходы. Пространственные накладные расходы легко понять, процесс имеет свои компоненты (описанные ниже), и это занимает место. Накладные расходы времени — это время, необходимое для переключения процессов.

Состав процесса

Процесс состоит из 3-х частей, которыекод,набор данных, стекиБлок управления технологическим процессом.

Их соответствующие роли следующие:

  1. код: описывает функцию, которую должен выполнить процесс.
  2. набор данных, стек: данные и рабочая область, необходимые программе во время выполнения.
  3. блок управления технологическим процессом: содержит информацию описания и управляющую информацию процесса, которая является уникальным идентификатором существования процесса.

Как конкурировать за ресурсы (алгоритм планирования)

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

FCFS

Первым пришел-первым вышел: Процесс, который первым входит в очередь готовности, запускается первым, выполняется до завершения или блокируется, а затем перепланируется. Как правило, этот алгоритм планирования сочетается со стратегией приоритетов, такой как одна очередь на приоритет, и для планирования в каждой очереди используется FCFS.

Функции:Простой,сравниватьдолгий процесс, по сравнению с другими алгоритмами планированияДолгое среднее время выполнения.

RR

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

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

SPN

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

Функции:хорош для коротких пробегов.

SRT

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

Функции:хорош для коротких пробегов, отличие от SPN в том, чтовоспользоватьсяВ этот момент из-за упреждения эффективность будет лучше, чем у SPN.

HRRN

Самый высокий коэффициент отклика Далее: Планирование происходит, когда текущий запущенный процесс завершен или заблокирован.Перед каждым планированием вычисляется коэффициент отклика всех готовых процессов, и первым запускается процесс с более высоким коэффициентом отклика.

Формула соотношения откликов выглядит следующим образом:

Функции:хорош для коротких пробегов,Для процессов с одинаковым временем обслуживания первая служба будет выполняться первой.,Поскольку приоритет длинного процесса становится все выше и выше в процессе ожидания, он не будет выполняться все время..

FB

Обратная связь: Механизм обратной связи, состоящий из нескольких очередей готовности, имеет следующие правила:

  1. Процессы в одной очереди планируются по алгоритму FCFS, а последняя готовая очередь — по алгоритму RR;
  2. Чем выше приоритет очереди, тем меньше квант времени;
  3. Если процесс не завершится в течение кванта времени, он переместится в конец следующей очереди;
  4. Только когда в очереди верхнего уровня нет процесса готовности, будет запущена очередь готовности текущего уровня, когда в очереди готовности текущего уровня нет процесса, будет запущена очередь готовности нижнего уровня и так далее.

Процесс выполнения процесса показан на следующем рисунке

Функции:Короткие процессы имеют большие преимущества, а все очереди во фронте короче по времени..

Выше приведено описание нескольких алгоритмов планирования для вытеснения ресурсов.

статус процесса

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

Диаграмма трех состояний

Диаграмма с тремя состояниями также является самой простой и основной диаграммой для описания состояния процесса.Она содержит самые основные три состояния процесса, а именно: состояние готовности, состояние выполнения и состояние блокировки.

Чтение (состояние готовности): Процесс получил другие необходимые ресурсы, кроме ЦП.Бег: Инструкция процесса выполняется.Заблокировано: Процесс ожидает появления ресурса или события.

进程三态图

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

Диаграмма с пятью состояниями

На основе графа с тремя состояниями добавляются два новых состояния, а именно: новое состояние и состояние выхода.

Новый (новое состояние): Процесс создается. После выделения памяти она будет переведена в состояние готовности.

Выход: Процесс завершился нормально или завершился аварийно. Перерабатывайте ресурсы.

进程五态图

Когда новый процесс только что создан и ему не выделены ресурсы, онновое состояние, подождите, пока ресурс будет выделен, а затем введите после загрузкисостояние готовности.当进程运行完后,就从рабочее состояниеВходитьсостояние выхода.

Диаграмма с семью состояниями

На основе графа с пятью состояниями добавляются два новых состояния ожидания, а именно состояние ожидания готовности и состояние ожидания блокировки.

готово отложенное состояние: Также называется состоянием готовности внешней памяти. Из-за ограниченного объема памяти,готовый процессДамп на внешнее хранилище (диск).

состояние ожидания блокировки: Также называется состоянием блокировки внешней памяти. Кроме того, поскольку объем памяти ограничен, исходная памятьпроцесс блокировкиДамп на внешнее хранилище (диск).

七态图

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

отношение процесса

Процессы на самом деле относительно независимы.Например, QQ и WeChat, которые мы используем ежедневно, имеют ли они какое-либо отношение к процессам, которые они запускают? На самом деле, кроме конкуренции за ресурсы, отношений нет.

отношения отца и сына

Хотя между упомянутыми выше процессами нет никакой связи, есть особая связь, о которой нужно сказать, т.отношения отца и сына.

Сначала проведите эксперимент, чтобы проверить взаимосвязь процесса родитель-потомок. Шаги:

  1. Откройте программу командной строки CMD, установите текущее окно как «Отец» и передайте команду в окне «Отец».start cmdзапустить другую программу командной строки CMD;
  2. Установите окно только что открытой программы командной строки CMD на Son и передайте команду в окне Son.start cmdзапустить другую программу командной строки CMD;
  3. Недавно открытое окно CMD командной строки в внуке.

Процесс работы показан на рисунке ниже.

Взаимосвязь между тремя процессами CMD можно четко увидеть с помощью ProcessExplorer. (Если вам нужен подключаемый модуль ProcessExplorer, вы можете скачать ссылку через сетевой диск Baidu:disk.baidu.com/is/19531 Кунг-фу 5 он…Код извлечения: qhc6)

Мы видим, что три процесса Отец, Сын и Внук представляют форму дерева, которую мы ожидали. Так что жеродительско-дочерний процессШерстяная ткань? Проще говоря, состоит в том, чтобы создать новый процесс в процессе, этот новый процесс является дочерним процессом, процесс может иметь несколько детей, но только один родитель. На системах Unix, родительский процесс, позвонивfork()Чтобы создать детский процесс, родительский ребенок имеет следующие характеристики:

  1. Родительский и дочерний процессы выполняются одновременно;
  2. Родительский и дочерний процессы совместно используют все ресурсы родительского процесса;
  3. Дочерний процесс копирует адресное пространство родительского процесса и даже имеет тот же текстовый сегмент и значение счетчика программ PC;
  4. использоватькопирование при записи(Copy on Write) Технология уменьшает ненужное копирование: родитель и ребенок делят родительское пространство во время вилки, и только копия, когда одна сторона пытается его изменить.

Здесь вы будете говорить об этомCopy On Write, используя эту технику, когда родительский процесс создает дочерний процесс, он не будет копировать все данные в дочерний процесс,Экономит время копирования и уменьшает объем памяти. Эта копия не нужна, потому что, если приложение загружает новую программу сразу после копии процесса, предыдущая работа по копированию является пустой тратой времени и памяти.

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

процесс зомби

процесс зомби: после завершения дочернего процесса родительский процесс не вызывает wait или waitpid для получения информации о состоянии дочернего процесса, а дескриптор дочернего процесса все еще хранится в системе.Такой тип процесса называется зомби-процессом. .

Опасности процессов-зомби: Процессы-зомби всегда будут занимать идентификаторы процессов, а количество идентификаторов процессов, которые может использовать система, ограничено.Если существует большое количество процессов-зомби, новые процессы не могут быть созданы, поскольку нет доступных идентификаторов процессов.

потерянный процесс

потерянный процесс: Родительский процесс завершается, а его дочерний процесс все еще работает.В это время дочерний процесс называется процессом-сиротой. Бесхозный процесс принимается процессом инициализации (номер процесса равен 1), и процесс инициализации завершает работу по сбору состояний для бесхозного процесса.

Осиротевшие процессы безвредны, потому что они размещаются в процессе init, который обрабатывает набор осиротевших процессов.

режим исполнения

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

Переключение между системным режимом и пользовательским режимом ЦП.

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

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

Трубка

Конвейер представляет собой полудуплексную связь, и данные передаются в одном направлении.Для установления взаимной связи между процессами требуются два конвейера.Этот метод связи может использоваться только между относительными процессами, такими как родительские и дочерние процессы.

Поточная труба

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

Названные трубы (по имени трубу)

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

семафор

Семафор эквивалентен счетчику, который используется для управления несколькими процессами для доступа к общим ресурсам. Когда процесс А обращается к общему ресурсу, семафор предотвращает доступ к нему других процессов. Только когда процесс А не обращается к общему ресурсу, другие процессы могут получить к нему доступ.

Сигнал

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

Очередь сообщений

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

Общая память

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

Разъем

Сокет — это сокет в нашем сетевом программировании.Он может взаимодействовать через сеть или локально.Его преимущество в том, что он может взаимодействовать между хостами.

Суммировать

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

Рекомендуемое чтение

Дизайнерский режим и забыл, снова забыл?

Ответьте на "Шаблон проектирования" в фоновом режиме официального аккаунта, чтобы получить электронную книгу "Одна история, один шаблон проектирования"

觉得文章有用帮忙转发&点赞,多谢朋友们!

LieBrother