Поток и процесс: В чем разница между потоком и процессом?

Содержание

Поток выполнения — Национальная библиотека им. Н. Э. Баумана

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:54, 24 августа 2017.

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

Отличие от процессов

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

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

История

Потоки впервые появились в 1967 году в OS/360 Multiprogramming с переменным числом задач, в контексте которой они назывались «задачами». Термин «поток» был приписан Виктору Высоцкому. Планировщики процессов многих современных операционных систем напрямую поддерживают как поточную, так и многопроцессорную потоковую обработку, а ядро операционной системы позволяет программистам манипулировать потоками, предоставляя необходимые функциональные возможности через интерфейс системных вызовов.

Некоторые реализации потоков называются потоками ядра, в то время как легкие процессы (англ. Light-weight processes, LWP) — это особый тип потока ядра, который имеет одно и то же состояние и информацию. Кроме того, программы могут иметь потоки пользовательского пространства при потоковой передаче с помощью таймеров, сигналов или других методов, чтобы прервать собственное выполнение.

Многопоточность

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

[Источник 1]

Преимущества
  • Реактивность: многопоточность может позволить приложению оставаться отзывчивым к вводу. В однопоточной программе, если основной поток выполнения блокирует длительную задачу, все приложение может зависнуть. Перемещая такие длительные задачи в рабочий поток, который выполняется одновременно с основным исполнительным потоком, приложение может оставаться отзывчивым к вводу пользователя при выполнении задач в фоновом режиме. С другой стороны, в большинстве случаев многопоточность не является единственным способом поддержания реакции программы, при этом для получения аналогичных результатов доступны неблокирующие сигналы ввода / вывода и / или Unix.
  • Более быстрое выполнение: это преимущество многопоточной программы позволяет ей работать быстрее в компьютерных системах, имеющих несколько центральных процессоров (CPU) или один или несколько многоядерных процессоров, или через кластер машин при условии достаточной независимости (отсутствия необходимости ждать друг друга).
  • Более низкое потребление ресурсов: при использовании потоков приложение может обслуживать несколько клиентов одновременно, используя меньшее количество ресурсов, чем это требовалось бы при использовании нескольких копий процессов.
    Например, HTTP-сервер Apache использует пулы потоков: пул потоков слушателя для прослушивания входящих запросов и пул потоков сервера для обработки этих запросов.
  • Эффективное использование системы: в качестве примера файловая система, использующая несколько потоков, может достичь более высокой пропускной способности и меньшей задержки, поскольку данные на более быстром носителе (например, в кэш-памяти) могут быть получены одним потоком, в то время как другой поток извлекает данные с более медленной среды (например, как внешнее хранилище), причем ни один поток не ожидает завершения другого.
  • Упрощенный обмен и обмен данными: в отличие от процессов, для которых требуется передача сообщений или механизм общей памяти для выполнения межпроцессного взаимодействия (англ. inter-process communication, IPC), потоки могут взаимодействовать через данные, код и файлы, которые они уже используют.
  • Распараллеливание: приложения, использующие многоядерные или многопроцессорные системы, могут использовать многопоточность для разделения данных и задач на параллельные подзадачи, и позволить базовой архитектуре управлять тем, как выполняются потоки, либо одновременно на одном ядре, либо параллельно на нескольких ядрах. Графические вычислительные среды, такие как CUDA и OpenCL, используют модель многопоточности, где от нескольких десятков до сотен потоков параллельно работают с данными, используя большое количество ядер.
Недостатки
  • Синхронизация: поскольку потоки используют одно и то же адресное пространство, программист должен быть осторожным, чтобы избежать конкуренции и других неинтуитивных действий. Для правильного управления данными потоки часто должны состыковываться во времени, чтобы обрабатывать данные в правильном порядке. Потоки могут также требовать взаимоисключающих операций (часто реализуемых с помощью семафоров), чтобы предотвратить одновременное изменение или чтение общих данных в процессе их модификации. Небрежное использование таких примитивов может привести к ошибках.
  • Поток разрушает процесс: незаконная операция, выполняемая потоком, приводит к сбою всего процесса; Поэтому один неверный поток может нарушить обработку всех других потоков в приложении.

Планирование

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

lock convoy), инверсию приоритета или другие негативные эффекты, которых может избежать совместная многопоточность. С другой стороны, совместная многопоточность полагается на то, что сами потоки отказываются от управления, когда они находятся в точке остановки. Это может создать проблемы, если поток ждет, когда ресурс станет доступным.

До начала 2000-х годов большинство настольных компьютеров имели только один одноядерный процессор без поддержки аппаратных потоков, хотя потоки все еще использовались на таких компьютерах, потому что переключение между потоками, как правило, было все же более быстрым, чем контекстные переключатели полного процесса. В 2002 году Intel добавила поддержку одновременной многопоточности процессора Pentium 4 под названием hyper-threading; В 2005 году они представили двухъядерный процессор Pentium D, а AMD представила двухъядерный процессор Athlon 64 X2.

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

Процессы, потоки выполнения ядра, пользовательские потоки и файберы

Планирование может выполняться на уровне ядра или на уровне пользователя, а многозадачность может выполняться как превентивно, так и совместно. Это дает множество связанных понятий.

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

Планирование ядра, как правило, равномерно выполняется превентивно или, реже, совместно. На пользовательском уровне такой процесс, как система выполнения, сам может планировать несколько потоков исполнения. Если они не делятся данными, как в Erlang, их обычно аналогично называют процессами , а если они совместно используют данные, то их обычно называют (пользовательскими) потоками, особенно если они предварительно запланированы. Совместно запланированные пользовательские потоки известны как файберы; Различные процессы могут планировать пользовательские потоки по-разному. Пользовательские потоки могут выполняться потоками ядра различными способами (one-to-one, many-to-one, many-to-many). Термин «облегченный процесс» по-разному относится к пользовательским потокам или к механизмам ядра для планирования пользовательских потоков в потоках ядра.

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

Поток ядра — это «легкая» единица планирования ядра. По крайней мере, один поток ядра существует в каждом процессе. Если в процессе существует несколько потоков ядра, они совместно используют одни и те же ресурсы памяти и файла. Потоки ядра упреждающе многозадачны, если планировщик процесса операционной системы упреждающий. Потоки ядра не имеют собственных ресурсов, кроме стека, копии регистров, включая счетчик программ, и локального хранилища потоков (если они есть), и поэтому они относительно дешевы для создания и уничтожения. Переключение потоков также относительно дешево: требуется коммутатор контекста (сохранение и восстановление регистров и указателя стека), при этом не изменяется виртуальная память и поэтому не требуется кэширование . Ядро может назначить один поток для каждого логического ядра в системе (так как каждый процессор разбивается на несколько логических ядер, если он поддерживает многопоточность или поддерживает только одно логическое ядро ​​на каждое физическое ядро, если это не так), и может обменивать заблокированные потоки. Тем не менее, потоки ядра занимают гораздо больше времени для обмена, чем пользовательские потоки.

Потоки иногда реализуются в пользовательских библиотеках, которые называются пользовательскими потоками. Ядро не знает о них, поэтому они управляются и планируются в пользовательском пространстве. Некоторые реализации основывают свои пользовательские потоки на нескольких потоках ядра, чтобы использовать многопроцессорные машины (модель M: N). В этой статье термин «поток» по умолчанию ссылается на потоки ядра. Пользовательские потоки, реализованные виртуальными машинами, также называются «зелеными потоками». Пользовательские потоки обычно быстро создаются и управляются, но не могут использовать многопоточность или многопроцессорность, и будут заблокированы, если все связанные с ними потоки ядра будут заблокированы, даже если есть некоторые пользовательские потоки, которые готовы к запуску. выполняющийся файбер должен явно «уступить» право другим файберам на выполнение, что делает их реализацию гораздо легче, чем реализацию потоков выполнения ядра или пользовательских потоков выполнения. Файберы могут быть запланированы для запуска в любом потоке выполнения внутри того же процесса. Это позволяет приложениям получить повышение производительности за счет управления планированием самого себя, вместо того чтобы полагаться на планировщик ядра (который может быть не настроен на такое применение). Параллельные среды программирования, такие как OpenMP, обычно реализуют свои задачи посредством файберов.

Проблемы потоков и файберов
Параллелизм и структуры данных

Потоки в одном процессе имеют одинаковое адресное пространство. Это позволяет одновременно запускать код для надежного и удобного обмена данными без дополнительных затрат или сложности IPC. Однако при совместном использовании потоков ни одна простая структура данных не подвержена гонке, если для их обновления требуется более одной инструкции ЦП: два потока могут в конечном итоге попытаться обновить структуру данных в одно и то же время и обнаружить, что она неожиданно меняется. Ошибки, вызванные условиями гонки, может быть очень трудно воспроизвести и изолировать. Чтобы этого не происходило, потоковые интерфейсы прикладного программирования (API) предлагают примитивы синхронизации, такие как мьютексы, для блокировки структур данных с одновременным доступом. На однопроцессорных системах поток, запущенный в заблокированный мьютекс, должен спать и, следовательно, запускать контекстный переключатель. В многопроцессорных системах поток может вместо этого опросить мьютекс в спин-блокировке. Оба они могут нарушить производительность и заставить процессоры в симметричных многопроцессорных системах (SMP) бороться за шину памяти, особенно если гранулярность блокировки (уровень модульности) в порядке.

Ввод-вывод и планирование

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

Модели

1:1 (на уровне ядра)

Потоки в данной модели соответствуют диспетчируемым сущностям ядра, что является простейшим способом реализации потоковости. В Windows API этот подход использовался с самого начала. В Linux обычная библиотека C реализует этот подход (через библиотеку потоков POSIX, а в более старших версиях через LinuxThreads). Аналогичный подход используется NetBSD, ОС Solaris, FreeBSD.

N:1 (на уровне пользователя)

Данная модель предполагает, что все потоки выполнения уровня пользователя отображаются на единую планируемую сущность уровня ядра, и ядро ничего не знает о составе прикладных потоков выполнения. При таком подходе переключение контекста может быть сделано очень быстро, и, кроме того, он может быть реализован даже на простых ядрах, которые не поддерживают многопоточность. Однако при таком подходе нельзя извлечь никакой выгоды из аппаратного ускорения на многопоточных процессорах или многопроцессорных компьютерах, потому что только один поток выполнения может быть запланирован на любой момент времени. Эта модель используется в GNU Portable Threads, Netscape Portable Runtime, FSU Pthreads.

M:N (смешанная потоковость)

В модели M:N некоторое число M прикладных потоков выполнения отображаются на некоторое число N сущностей ядра или «виртуальных процессоров». Модель является компромиссной между моделью уровня ядра («1:1») и моделью уровня пользователя («N:1»). Реализована, например в Microsoft Windows 7 или The Glasgow Haskell Compiler (GHC).

Реализация файберов

Файберы могут быть реализованы без поддержки операционной системы, хотя некоторые операционные системы и библиотеки предоставляют явную поддержку для них, например Библиотека Win32 содержит API для файберов, Ruby как реализация «зелёных потоков», Netscape Portable Runtime и т.д.

Поддержка языков программирования

IBM PL / I (F) включила поддержку многопоточности (так называемой многозадачности) в конце 1960-х годов, и это было продолжено в Оптимизационном компиляторе и более поздних версиях. Компилятор IBM Enterprise PL / I представил новую модель API-потоков. Ни одна из версий не была частью стандарта PL / I.

Многие языки программирования поддерживают потоки в некоторой степени. Многие реализации C и C ++ поддерживают потоковую обработку и предоставляют доступ к собственным API-интерфейсам потоков в операционной системе. Некоторые более высокоуровневые (и, как правило, кросс-платформенные) языки программирования, такие как языки Java[Источник 2], предоставляют разработчикам потоки, абстрагируя специфические для платформы различия в реализациях потоков во время выполнения. Некоторые другие языки программирования и языковые расширения также пытаются полностью отделить концепцию параллелизма и потокования от разработчика (Cilk, OpenMP, Message Passing Interface (MPI)). Некоторые языки предназначены для последовательного параллелизма (особенно с использованием графических процессоров), не требуя параллелизма или потоков (Ateji PX, CUDA).

Некоторые интерпретируемые языки программирования имеют реализации (например, Ruby MRI для Ruby, CPython для Python), которые поддерживают потоковую обработку и параллелизм, но не параллельное выполнение потоков из-за глобальной блокировки интерпретатора (GIL). GIL — блокировка взаимного исключения, удерживаемая интерпретатором, которая может помешать интерпретатору одновременно интерпретировать код приложения на двух или более потоках одновременно, что фактически ограничивает параллелизм в нескольких основных системах.

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

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

Практическая многопоточность

Стандартизованным интерфейсом для реализации потоков является POSIX Threads (Pthreads), который представляет собой набор вызовов библиотеки C-функций[Источник 3]. Поставщики ОС могут свободно внедрять интерфейс по желанию, но разработчик приложения должен иметь возможность использовать один и тот же интерфейс на нескольких платформах. Большинство платформ Unix, включая Linux, поддерживают Pthreads. Microsoft Windows имеет свой собственный набор функций потока в интерфейсе process.h для многопоточности. Java предоставляет еще один стандартизованный интерфейс для операционной системы хоста, используя библиотеку java.util.concurrent для Java.[Источник 4]


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

Еще одна парадигма использования потоков — это пулы потоков, где заданное число потоков создается при запуске, а затем ожидает назначения задачи. Когда приходит новая задача, пул просыпается, выполянет задачу и возвращается к ожиданию после ее завершения. Это позволяет избежать относительно дорогих функций создания и уничтожения потоков для каждой выполняемой задачи и выводит управление потоками из руки разработчика приложения и оставляет его в библиотеке или операционной системе, которая лучше подходит для оптимизации управления потоками. Используется в таких структурах как Grand Central Dispatch и Threading Building Blocks.

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

Источники

Разница между процессом и потоком

Процесс и поток по существу связаны. Процесс — это выполнение программы, тогда как поток — это выполнение программы, управляемой средой процесса.

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

Сравнительная таблица

Основа для сравненияПроцессНить
основнойПрограмма в исполнении.Облегченный процесс или его часть.
Разделение памятиПолностью изолированы и не разделяют память.Делится памятью друг с другом.
Потребление ресурсовБольшеМеньше
КПДМенее эффективен по сравнению с процессом в контексте общения.Повышает эффективность в контексте общения.
Время, необходимое для созданияБольше
Меньше
Время переключения контекстаЗанимает больше времени.Потребляет меньше времени.
Неопределенное завершениеПриводит к потере процесса. Нить может быть исправлена.
Время, необходимое для прекращенияБольшеМеньше

Определение процесса

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

Операции процесса контролируются с помощью PCB (Блок управления процессом), который можно рассматривать как мозг процесса, который содержит всю важную информацию, относящуюся к процессу, такую ​​как идентификатор процесса, приоритет, состояние, PWS и регистр процессора содержимого.,

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

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

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

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

Чередование операций процессов повышает скорость вычислений, когда операция ввода-вывода в одном процессе перекрывается с вычислительной активностью в другом процессе.

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

Определение темы

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

Потоки реализованы тремя различными способами; это потоки уровня ядра, потоки уровня пользователя, гибридные потоки. Потоки могут иметь три состояния: готово и заблокировано; он включает в себя только вычислительное состояние, а не распределение ресурсов и состояние связи, которое уменьшает накладные расходы на переключение. Это увеличивает параллелизм (параллелизм), следовательно, скорость также увеличивается.

Многопоточность также сопровождается недостатками. Многопоточность не создает сложностей, но взаимодействие между ними.

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

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

Ключевые различия между процессом и потоком

  1. Все потоки программы логически содержатся в процессе.
  2. Процесс имеет большой вес, а поток — легкий.
  3. Программа представляет собой изолированную исполнительную единицу, тогда как поток не изолирован и разделяет память.
  4. Нить не может иметь индивидуального существования; оно привязано к процессу. С другой стороны, процесс может существовать индивидуально.
  5. Во время истечения срока действия потока связанный с ним стек может быть восстановлен, поскольку каждый поток имеет свой собственный стек. Напротив, если процесс умирает, все потоки умирают, включая процесс.

Заключение

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

Процесс и поток создания ценности. Как понимать? — Leanbase

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

Для начала давайте разберём разницу в понятиях «поток» и «процесс».  На практике мы часто употребляем эти два понятия, порой вкладывая в них один и тот же смысл. В lean работают, как правило, с процессами: мы ищем в них потери, улучшаем и оптимизируем процессы. По определению, процесс – это набор действий по преобразованию некого «входа» в некий «выход». Поставщик определяет вход процесса, а Заказчик получает выход. Соответственно, выход – это то, что получилось в результате преобразований (совершения некого набора действий) над входом процесса, то, что необходимо Заказчику.

Например, процесс расплава металла – набор действий, начинающийся с комплектования шихты и заканчивающийся получением необходимого результата анализа. Входом процесса является получение задания с определёнными требованиями (химическим составом), а выходом процесса  является расплавленный металл, соответствующий требуемым свойствам, объёмам и срокам его выплавки. 
Еще пример. Процесс поставки комплектующих – набор действий от обработки заявки, содержащей перечень соответствующей номенклатуры, необходимое количество и оговоренные сроки поставки (вход поставки) до доставки необходимого количества и номенклатуры в установленный срок в оговоренное место. Выходом этого процесса, наряду с доставленными комплектующими, может быть подписанная накладная о доставке или переданная карточка канбан.

Теперь переключим наше внимание на понятие «поток». Если рассматривать общее определение, то поток – это перемещение масс в определённом направлении. Почему же используют именно этот термин?  Для начала важно правильно различать материальный и информационный поток.  Материальный поток – то, что становится на выходе продуктом, который мы можем потрогать, увидеть и понять, как он преобразуется и движется. Это может быть поток сборки автомобиля, где по мере движения по сборочному конвейеру рамы на неё крепятся множество узлов и комплектующих. Этот поток можно сравнить с потоком бурной реки, в которую по мере течения впадают мелкие реки (узлы автомобиля) и ручьи (комплектующие), поток то замедляется, образуя запруду (запасы узлов и комплектующих), то ускоряется, двигаясь быстрее (прохождение операций с минимальным временем цикла). Именно поэтому применяется понятие «поток». Идеальный поток – ровный, с постоянной рассчитанной скоростью, без глубоких запруд, водопадов и отмелей, выдающий на выходе необходимый объём воды. Любая составная часть материального потока либо является составной частью готового продукта, либо выражается в конечных свойствах готового продукта. Название «поток создания ценности»  как раз и отражает, что по мере движения продукта в потоке он видоизменяется и приобретает формы и свойства, необходимые Заказчику.

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

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

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

Статья подготовлена на основании материала из книги «Стоимость ≠ Ценность. Современные методики картирования потоков с применением правила 80/20» , 2013 г. Ф.А. Семенычев. 

Facebook

Twitter

Вконтакте

Одноклассники

Google+

2. Процессы и потоки

2. 1 Понятия процесс и поток

2.2 Создание процессов и потоков

2.3 Состояния потоков

2.4 Планирование процессов

2.4.1 Основные понятия планирования процессов

2.4.2 Алгоритмы планирования, основанные на квантовании

2.4.3 Алгоритмы планирования, основанные на приоритетах

2.4.4 Планирование в операционных системах пакетной обработки информации

2.4.4.1 Критерий эффективности

2.4.4.2 Алгоритмы планирования

2.4.5 Планирование в интерактивных системах (системах разделения времени)

2.4.5.1 Критерий эффективности

2.4.5.2 Алгоритмы планирования

Схема назначения приоритета потокам в Windows 2000

2.4.6 Планирование в системах реального времени

2.5 Взаимодействие между процессами

2.5.1 Виды взаимодействий между процессами

2.5.2 Синхронизация процессов и потоков

2.5.2.1 Состязания (гонки)

2.5.2.1.1 Ситуация состязания

2.5.2.1.2 Критические секции

2.5.2.1.3 Способы реализации взаимного исключения

2. 5.2.2 Взаимные блокировки

2.5.2.2.1 Ситуация взаимной блокировки

2.5.2.2.2 Моделирование взаимоблокировок

2.5.2.3 Методы борьбы с тупиками

 2.5.2.3.1 Пренебрежением проблемой в целом (страусовый алгоритм)

 2.5.2.3.2 Обнаружение и устранение взаимоблокировок

 2.5.2.3.3 Обнаружение взаимоблокировки при наличии одного ресурса каждого типа

2.5.2.3.4 Обнаружение взаимоблокировки при наличии нескольких ресурсов каждого типа

2.5.2.3.5 Выход из взаимоблокировки

2.5.2.4 Динамическое избежание взаимоблокировок

2.5.2.4.1 Траектории ресурсов

2.5.2.4.2 Безопасные и небезопасные состояния

2.5.2.4.3 Алгоритм банкира для одного вида ресурсов

2.5.2.4.4 Алгоритм банкира для несколько видов ресурсов

 2.5.2.5 Предотвращение условий, необходимых для взаимоблокировок

2.5.2.6 Системные средства синхронизации процессов

2.5.2.6.1 Мьютексы

2.5.2.6.2 Системные семафоры

2.5.2.6.3 События

2.5. 2.6.4 Ждущие таймеры

2.5.2.6.5 Сигналы

2.5.2.6.3 Мониторы Хоара

2.5.3 Обмен данными между процессами и потоками

2.5.3.1 Конвейеры (каналы)

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

2.5.3.3 Разделяемая память

2.5.3.4 Почтовые ящики

2.5.3.5 Сокеты

2 Процессы и потоки

2.1 Понятия процесс и поток

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

С каждым процессом связывается его адресное пространство. Адресное пространство процесса содержит саму программу, ее данные, стек программы.

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

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

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

Преимущества использования потоков:

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

  2. Быстрота создания потока по сравнению с процессом.

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

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

Как посмотреть потоки процесса в Linux

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

Для планировщика ядра потоки ничем не отличаются от обычных процессов которые имеют общие ресурсы. Поэтому для просмотра потоков можно использовать такие классические инструменты командной строки как ps и top. В этой статье мы поговорим о том как посмотреть потоки процесса Linux.

Содержание статьи:

Потоки процессов в Linux

Сразу необходимо разобраться в том что же такое процессы и потоки в linux и чем они отличаются от друг от друга. В Linux есть два способа наладить многопоточное выполнение какого-либо действия. Первый, когда процесс создает свои копии с помощью механизма fork и затем эти процессы взаимодействуют через сокеты или IPC. Тогда мы получаем отдельные процессы, каждый процесс имеет свои ресурсы и занимает память. Второй же способ подразумевает выделение потоков в рамках одного процесса. Все протоки одного процесса будут иметь один идентификатор группы потоков, а также уникальный идентификатор потока. Они будут иметь доступ ко всем ресурсам родительского процесса и занимать меньше памяти.

1. Утилита ps

В утилите ps показ потоков процесса включается опцией -T. Например вот такой командой можно посмотреть все потоки процесса с PID, например, для Chromium:

ps -T -p <PID>

В колонке SPID отображается идентификатор потока, а в CMD его имя.

2. Утилита top

Команда top позволяет просматривать потоки в реальном времени. Для включения отображения потоков запустите top с опцией -H. Также можно включить или отключить показ потоков во время выполнения с помощью клавиши H:

top -H

 

Если вы хотите посмотреть только потоки нужного процесса выполните:

top -H -p pid

 

3. Утилита htop

Ну и как всегда под конец самое интересное. Самой удобной утилитой для просмотра потоков процесса я считаю команду htop. Это основный на ncurces интерактивный просмотрщик процессов. С помощью этой утилиты вы можете наблюдать за потоками в реальном времени в виде дерева.

Для того чтобы включить просмотр потоков в htop откройте программу, войдите в меню нажав клавишу F2, затем выберите Display Options, в разделе Setup. Теперь отметьте Three view и Show custom thread names. Все, можно нажимать F10 для сохранения настроек:

 

Теперь вы можете просматривать потоки в виде дерева отдельно для каждого процесса. Здесь снова отображаются потоки для браузера Chromium:

 

Оцените статью:

Загрузка…

Процессы и потоки в Python (CPython) — Документация Python для сетевых инженеров 3.0

Для начала нам нужно разобраться с терминами:

  • процесс (process) — это, грубо говоря, запущенная программа. Процессу выделяются отдельные ресурсы: память, процессорное время
  • поток (thread) — это единица исполнения в процессе. Потоки разделяют ресурсы процесса, к которому они относятся.

Python (а точнее, CPython — реализация, которая используется в книге) оптимизирован для работы в однопоточном режиме. Это хорошо, если в программе используется только один поток. И, в то же время, у Python есть определенные нюансы работы в многопоточном режиме. Связаны они с тем, что CPython использует GIL (global interpreter lock).

GIL не дает нескольким потокам исполнять одновременно код Python. Если не вдаваться в подробности, то GIL можно представить как некий переходящий флаг, который разрешает потокам выполняться. У кого флаг, тот может выполнять работу. Флаг передается либо каждые сколько-то инструкций Python, либо, например, когда выполняются какие-то операции ввода-вывода.

Поэтому получается, что разные потоки не будут выполняться параллельно, а программа просто будет между ними переключаться, выполняя их в разное время. Однако, если в программе есть некое «ожидание»: пакетов из сети, запроса пользователя, пауза типа time. sleep, то в такой программе потоки будут выполняться как будто параллельно. А всё потому, что во время таких пауз флаг (GIL) можно передать другому потоку.

То есть, потоки отлично подходят для задач, которые связаны с операциями ввода-вывода:

  • Подключение к оборудованию и подключение по сети в целом
  • Работа с файловой системой
  • Скачивание файлов по сети

Примечание

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

В следующих разделах рассматривается, как использовать потоки для подключения по Telnet/SSH. И проверяется, какое суммарное время будет занимать исполнение скрипта, по сравнению с последовательным исполнением и с использованием процессов.

Процессы

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

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

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

Примечание

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

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

Примечание

Помимо процессов и потоков есть еще один вариант одновременного подключения к оборудованию: асинхронное программирование. Этот вариант не рассматривается в книге.

Операционная система — многопоточность — CoderLessons.com

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

Поток делится со своими равноправными потоками такой информацией, как сегмент кода, сегмент данных и открытые файлы. Когда один поток изменяет элемент памяти сегмента кода, все остальные потоки видят это.

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

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

Разница между процессом и потоком

SN Процесс Нить
1 Процесс тяжелый или ресурсоемкий. Нить имеет малый вес и требует меньше ресурсов, чем процесс.
2 Процесс переключения требует взаимодействия с операционной системой. Переключение потоков не требует взаимодействия с операционной системой.
3 В нескольких средах обработки каждый процесс выполняет один и тот же код, но имеет собственные ресурсы памяти и файлов. Все потоки могут совместно использовать один и тот же набор открытых файлов, дочерних процессов.
4 Если один процесс заблокирован, то ни один другой процесс не может выполняться, пока первый процесс не будет разблокирован. Пока один поток заблокирован и ожидает, второй поток в той же задаче может работать.
5 Несколько процессов без использования потоков используют больше ресурсов. Многопоточные процессы используют меньше ресурсов.
6 В нескольких процессах каждый процесс работает независимо от других. Один поток может читать, записывать или изменять данные другого потока.

Преимущества нити

  • Потоки минимизируют время переключения контекста.
  • Использование потоков обеспечивает параллелизм внутри процесса.
  • Эффективное общение.
  • Более экономично создавать и переключать контекстные потоки.
  • Потоки позволяют использовать многопроцессорные архитектуры с большим масштабом и эффективностью.

Типы ниток

Потоки реализуются следующими двумя способами:

  • Потоки уровня пользователя — управляемые пользователем потоки.

  • Потоки уровня ядра — управляемые потоки операционной системы, работающие на ядре, ядре операционной системы.

Потоки уровня пользователя — управляемые пользователем потоки.

Потоки уровня ядра — управляемые потоки операционной системы, работающие на ядре, ядре операционной системы.

Потоки уровня пользователя

В этом случае ядро ​​управления потоками не знает о существовании потоков. Библиотека потоков содержит код для создания и уничтожения потоков, для передачи сообщений и данных между потоками, для планирования выполнения потоков и для сохранения и восстановления контекстов потоков. Приложение запускается с одного потока.

преимущества

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

Недостатки

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

Потоки уровня ядра

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

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

преимущества

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

Недостатки

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

Многопоточные модели

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

  • Много ко многим отношениям.
  • Много к одному отношения.
  • Отношения один к одному.

Модель много ко многим

Модель «многие ко многим» мультиплексирует любое количество пользовательских потоков на равное или меньшее количество потоков ядра.

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

Много к одной модели

Модель «многие к одному» отображает множество потоков уровня пользователя в один поток уровня ядра. Управление потоками осуществляется в пространстве пользователя библиотекой потоков. Когда поток выполняет системный вызов блокировки, весь процесс будет заблокирован. Только один поток может одновременно обращаться к Ядру, поэтому несколько потоков не могут работать параллельно на многопроцессорных системах.

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

Модель один на один

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

Недостатком этой модели является то, что для создания пользовательского потока требуется соответствующий поток ядра. OS / 2, Windows NT и Windows 2000 используют модель отношений один к одному.

В чем разница между рабочим процессом и процессами?

Те, кто работает с BPM, часто обнаруживают, что работают с концепциями рабочего процесса и процессов. И даже некоторые люди, имеющие некоторый опыт в этой области, могут спутать эти два термина, что, кстати, очень часто встречается.

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

В нашем блоге вы также можете увидеть: BPM и рабочий процесс — это не одно и то же: разберитесь в их сходстве и различии


Понять рабочий процесс и определения процессов

Важно помнить, что мы используем слово «процесс» во многих контекстах, например в законодательстве.В данном случае мы имеем в виду бизнес-процессы.

Что такое бизнес-процессы

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

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

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

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

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

Дополнительные сведения см. В этой статье: Что такое управление бизнес-процессами?

Что такое рабочий процесс?

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

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

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

Подробнее: Узнайте больше о рабочем процессе: объединение рабочего процесса и ИТ


Различия между рабочим процессом и процессами

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

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

Также прочтите: Все о рабочем процессе — концепции, типы, различия


Рабочий процесс — это небольшая часть того, что BPM может сделать для процессов вашей компании.

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

Итак, чего вы ждете? Познакомьтесь с HEFLO , облачным программным обеспечением BPMN с низким кодом.

Что такое блок-схема? Блок-схемы и карты

Глоссарий качества Определение: блок-схема

Также называется: блок-схема процесса, блок-схема процесса

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

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

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

Когда использовать блок-схему

  • Для понимания того, как выполняется процесс
  • Изучить процесс улучшения
  • Чтобы сообщить другим, как выполняется процесс
  • Когда необходимо улучшить взаимодействие между людьми, участвующими в одном процессе
  • Для документирования процесса
  • При планировании проекта

Блок-схема основной процедуры

Необходимые материалы: Клейкие заметки или карточки, большой лист бумаги для флипчарта или газетной бумаги и маркеры.

  1. Определите процесс для отображения в диаграмме. Напишите его название вверху рабочей поверхности.
  2. Обсудите и определите границы вашего процесса: где и когда процесс начинается? Где и когда это закончится? Обсудите и выберите уровень детализации, который будет включен в диаграмму.
  3. Проведите мозговой штурм над происходящими действиями. Напишите каждое на карточке или стикере.
  4. Организуйте действия в правильной последовательности.
  5. Когда все действия включены и все согласны с тем, что последовательность правильная, нарисуйте стрелки, чтобы показать ход процесса.
  6. Просмотрите блок-схему вместе с другими участниками процесса (работниками, руководителями, поставщиками, клиентами), чтобы убедиться, что они согласны с тем, что процесс построен правильно.

Рекомендации по блок-схеме

  • Не беспокойтесь о том, как правильно нарисовать блок-схему. В конце концов, правильный путь — это тот способ, который помогает участникам понять процесс.
  • Определите и вовлеките в процесс построения блок-схемы всех ключевых людей, участвующих в процессе. Сюда входят поставщики, клиенты и руководители.Вовлеките их в фактические сеансы блок-схемы, опросив их перед сессиями и / или показывая им развивающуюся блок-схему между рабочими сессиями и получая их отзывы.
  • Не назначайте «технического эксперта» для рисования блок-схемы. Люди, которые действительно выполняют этот процесс, должны это делать.

Примеры блок-схем

1. Блок-схема высокого уровня для процесса заполнения заказа


2. Подробная блок-схема

Часто используемые символы в подробных блок-схемах

Один шаг в процессе.Шаг написан внутри коробки. Обычно из коробки выходит только одна стрелка.

Направление потока от одного шага или решения к другому.

Решение на основании вопроса. Вопрос написан ромбиком. Из ромба выходит более одной стрелки, каждая из которых показывает направление, в котором процесс принимает данный ответ на вопрос. (Часто ответы «да» и «нет». )

Задержать или подождать

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

Вход или выход

Документ

Альтернативные символы для начальной и конечной точек


Разработайте блок-схему

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

Адаптировано из The Quality Toolbox, Second Edition , ASQ Quality Press.

Что такое технологическая схема

Наиболее распространенные символы PFD, используемые сегодня, поступают от таких агентств, как Международная организация по стандартизации (ISO 10628 — Технологические схемы технологических установок, Общие правила), Немецкий институт стандартизации (DIN) и Американский национальный институт стандартов (ANSI.) Однако многие компании используют свои собственные символы, которые часто похожи, но меняются по мере того, как они становятся более подробными.

Вы можете найти исчерпывающий список стандартизированных символов в нашем руководстве по символам PFD.

Типичный PFD для единичного процесса будет включать следующие элементы:

  • Основное оборудование: Включая имена и идентификационные номера. Примеры включают компрессоры, смесители, сосуды, насосы, котлы и охладители.
  • Технологический трубопровод: Перемещает продукт, обычно жидкости, между частями оборудования.
  • Направление технологического потока
  • Регулирующие клапаны и критически важные для процесса клапаны
  • Основные системы байпаса и рециркуляции
  • Рабочие данные: Такие как давление, температура, плотность, массовый расход и массово-энергетический баланс . Значения часто включают минимальное, нормальное и максимальное.
  • Состав жидкостей
  • Названия технологических потоков
  • Соединения с другими системами

Что исключать в PFD

Обычно эти более подробные позиции опускаются:

  • Классы труб и номера трубопроводов
  • Приборы для управления технологическим процессом
  • Незначительные значения байпаса
  • Запорные и запорные клапаны
  • Вентиляционные и дренажные отверстия для технического обслуживания
  • Предохранительные клапаны и предохранительные клапаны
  • Информация о кодовом классе

Другие типы PFD

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

С другой стороны, схема трубопроводов и приборов (P&ID) является более технической, описывая механические детали для проектировщиков трубопроводов, инженеров-электриков, инженеров по приборам и других технических экспертов, которым эта деталь нужна больше, чем детали процесса.P&ID учитывают концептуальные аспекты PFD и добавляют подробности об оборудовании, последовательности процесса, технологических и инженерных трубопроводах, байпасных линиях, инструментах, клапанах, вентиляционных и дренажных каналах и других элементах.

Обзор потоков бизнес-процессов — Power Automate

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *