Многопроцессорный режим работы его достоинства и недостатки

Работа по теме: Конспект лекций ПРОЕКТИРОВАНИЕ АВТОМАТИЗИРОВАННЫХ СИСТЕМ ОБРАБОТКИ ИНФОРМАЦИИ И УПРАВЛЕНИЯ. Глава: Многопроцессорные вычислительные системы. ВУЗ: БГТУ.
article placeholder

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

В общем и целом сателлитные вычислительные системы нацелены на решение задачи повышения производительности СОД и не решают в одиночестве задачу повышения надежности.

Содержание:

Многопроцессорные вычислительные системы

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

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

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

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

высокой надежностью и готовностью за счет резервирования всех устройств и возможности реконфигурации структуры;

высокой производительностью за счет возможности гибкой органи

зации параллельной обработки информации и более полной загрузки всего оборудования;

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

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

Вычислительные системы с общей шиной

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

30

htmlconvd

Рис. 23

П процессоры УВВ устройства вводавывода

В такой вычислительной системе интерфейс является односвязным, т.е.

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

Основными ее недостатками являются:

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

Недостаточная надежность изза использования одной шины (отказы разъемных соединений и электрорадиоэлементов (ЭРЭ) на входах и выходах проводов приводят к отказам системы).

Рис 24

31

htmlconvd

Основными достоинствами такой системы являются простота структуры и возможность наращивания и сокращения состава.

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

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

Вычислительные системы с перекрестной коммутацией

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

Рис. 25

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

32

htmlconvd

ное, время, что позволяет передавать большие массивы информации. Главными недостатками рассматриваемой вычислительной системы являются:

Невозможность наращивания, если при ее создании не предусмотрены в КМ дополнительные входы.

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

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

Вычислительные системы с многовходовыми ОЗУ

В таких системах все, что схемно связано с коммутацией устройств, осуществляется в ОЗУ. При этом все модули ОЗУ имеют число входов, равное числу устройств системы, которые к этим модулям подключаются (на рис. 26 – четыре входа).

Рис. 26

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

в отличие от систем с коммутационной матрицей позволяют просто решать вопрос о выделении какомулибо процессору (или всем) своей собственной оперативной памяти. Принцип такой реализации в системе показан на рис. 26 зачеркнутой связью 2 между процессором П2 и ОЗУ3. В этом случае ОЗУ3 выделяется только процессору П1. Правда при его отказе данные из ОЗУ3 в ОЗУ1 или ОЗУ2 можно переписывать только через каналы вводавывода КВВ, что требует продолжительного времени и приводит к потере производительности системы.

33

Особенности организации вычислительных процессов в классе систем МКМД

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

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

обеспечения обмена информацией между ЭВМ системы;

обеспечение взаимного контроля состояния ЭВМ системы;

проведения регламентных работ системы;

взаимодействие вычислительной системы с оператором.

Многопроцессорные вычислительные системы эффективно выполняют

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

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

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

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

1.Ведущийведомый.

2.Раздельное выполнение заданий в каждом процессоре.

3.Симметричная, или однородная, обработка информации всеми процессорами.

34

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

Недостатки:

1.Малая гибкость: при большом потоке коротких задач ведущий про

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

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

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

Тип симметричная, или однородная, обработка информации всеми процессорами. Все процессоры имеют максимальную самостоятельность.

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

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

Ее недостатки: большое число конфликтных ситуаций, в том числе «тупиковых», которые возникают, когда для решения двух (или более) задач требуются одни и те же ресурсы (УВВ, ОЗУ, наборы данных и др.), а приоритеты задач одинаковы. Для разрешения конфликтов в этом случае одну или более задач снимают с решения, т.е. переводят в режим ожидания решения, а это потеря производительности системы.

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

35

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #


Многопоточность и многопроцессорность – выбор правильного подхода для вашей разработки  16.12.2020 14:05

Дори Экстерман / 6 октября 2020 г.

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

Производители компьютеров, достигая своих пределов, «обходили» закон Мура, вводя мультипроцессоры, ведь многоядерная архитектура – это настоящий и будущий способ справиться с ограничениями. Современные рабочие станции имеют 4, 8, 16, 32, 64 ядра; ожидается, что  для повышения производительности и быстродействия приложений, будут использоваться несколько ядер, особенно при высокопроизводительных рабочих нагрузках, таких как рендеринг, моделирование, машинное обучение и другие трудоемкие вычислительные задачи.

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

Многопоточная разработка: преимущества

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

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

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

Но не может быть все так хорошо…

Многопоточная разработка: недостатки

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

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

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

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

Теперь давайте рассмотрим преимущества многопроцессорности.

Многопроцессорная разработка: Преимущества

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

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

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

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

Но масштабирование — это еще не все, и у многопроцессорной обработки тоже есть свои недостатки.

Многопроцессорная разработка: недостатки

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

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

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

Многопоточность и многопроцессорность: список критериев

Прежде чем решить, какая архитектура подходит вам больше, стоит принять во внимание следующие критерии:

  1. Синхронизация. У вас есть необходимость в синхронизации большого количества данных, и вам нужно поддерживать отношения между процессами? Синхронизация данных более проста в многопоточности, поскольку все потоки используют одно и то же пространство памяти процесса. Если ваши параллельные элементы (потоки или процессы) требуют обширной синхронизации и не являются инкапсулированными элементами, многопоточность может иметь преимущество с точки зрения простоты разработки.
  2. При многопроцессорной обработке синхронизация требует индивидуальной разработки, применения собственных логических механизмов и реализации элемента, с помощью которого процессы могут взаимодействовать или синхронизироваться – например, серверное приложение, общая память, прямая (одноранговая) связь, TCP-связь, база данных и т. д.

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

  1. Простота разработки. Кто будет участвовать в разработке? Опытный разработчик или новичок?

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

  1. Масштабирование – масштаб проекта. Сколько задач вам нужно выполнить одновременно? Каковы будут масштабы проекта в будущем? Сколько времени требуется для выполнения каждой задачи? Каковы зависимости между задачами? Сколько памяти потребуется для каждой задачи? Многопроцессорный код является более масштабируемым, поскольку вы можете легко использовать кластеры или грид-решения или даже публичное облако, чтобы получить больше вычислительных ресурсов при требованию. При использовании многопроцессорности вы можете перенести свой код с работы на одной машине на несколько машин. Существуют даже некоторые решения (в частности, Incredibuild), которые позволяют масштабировать и использовать простаивающие машины и ядра в вашей сети или публичном облаке без необходимости что-либо кодировать. Таким образом, вы можете добиться масштабируемости, эффективно превратив машину, на которой выполняется ваше приложение, в суперкомпьютер с тысячами ядер и гигабайтами памяти. Думаете, что в будущем вашему программному обеспечению может потребоваться такая вычислительная мощность?

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

Maven против Make

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

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

Во-первых, разработчики, которые выполняют сборку с использованием открытого исходного кода, часто должны компилировать открытый исходный код как часть своего проекта. Следовательно, у них есть большой объем исходного кода, который одна машина, какой бы мощной она ни была, компилирует медленно. Это влияет на время компиляции, производительность и время выпуска на рынок, особенно при переходе к гибкой непрерывной интеграции (agile continuous integration).

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

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

Архитектура системы сборки Make, в отличие от Maven, является многопроцессорной. Распределение процессов может применяться только к многопроцессорным, но не к многопоточным решениям; потоки не могут быть распределены за пределами области памяти родительского процесса в многопроцессорном режиме. Каждый процесс имеет собственное пространство памяти, переменные среды и так далее. Фактически, большинство современных инструментов сборки являются многопроцессорными, а не многопоточными (например, MSBuild в Visual Studio, CMake, Scons, Ninja, JAM, JOM, WAF и многие другие). Причина в том, что он предлагает лучшее использование памяти, более простую разработку и масштабируемость.

Например, выполнение Qt на Maven или Make на восьмиядерном компьютере занимает около 16 минут. Но если вы используете многопроцессорную архитектуру, такую ​​как Make, вы можете использовать распределенные вычисления (Incredibuild), выполняя все задачи компиляции удаленно (через другие машины в сети или в общедоступном облаке), сокращая время сборки до 1 минуты 40 секунд! Подумайте об этом: 1 минута 40 секунд вместо 16 минут…

Другие сценарии

Конечно, есть и другие сценарии из реальной жизни, которые мы можем рассмотреть.

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

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

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

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

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

Теперь давайте рассмотрим некоторые сценарии, в которых многопроцессорность имеет преимущество.

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

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

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

Потоковые сервисы также имеют тенденцию быть многопроцессорными. Например, Nvidia Shield – это приставка, которая позволяет любому человеку с комфортом играть в высококачественные игры с тяжелой графикой, используя удаленную группу высокопроизводительных компьютеров. Сервис OnLive имеет схожий характер, позволяя пользователям устанавливать приложение OnLive на любом устройстве. Netflix — это еще один пример, который не требует детализации. Когда выходные данные являются удаленными, мы всегда можем использовать балансировку нагрузки, чтобы гарантировать, что достаточно ресурсов и внутренних процессов доступно для обслуживания конечных пользователей в соответствии с динамическим спросом.

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

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

  • Может ли мое выполнение быть разбито на множество независимых задач?
  • Может ли работа быть распределена более чем на одном хосте?
  • Есть ли у меня большие наборы данных, с которыми мне нужно обрабатывать?
  • Сколько времени потребуется моим клиентам, чтобы выполнить объемный сценарий – есть ли у меня объемные сценарии?
  • Есть ли у меня какие-либо особые требования к связи и синхронизации?
  • Сложность разработки – будет ли мое программное обеспечение требовать сложных блокировок? Могу ли я этого избежать? И как часто я должен ожидать проблем, таких как сжатые сроки, проблемы со временем, нарушения совместного использования и так далее, которые сделают мою разработку и обслуживание программного обеспечения сложной и дорогостоящей?
  • Хотите ли вы масштабировать производительность обработки данных с помощью частного или публичного облака?

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

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

Удачного кодирования!

Источник 

Most computer systems are single processor systems i.e they only have one processor. However, multiprocessor or parallel systems are increasing in importance nowadays. These systems have multiple processors working in parallel that share the computer clock, memory, bus, peripheral devices etc. An image demonstrating the multiprocessor architecture is − Multiprocessor Systems

Types of Multiprocessors

There are mainly two types of multiprocessors i.e. symmetric and asymmetric multiprocessors. Details about them are as follows −

Symmetric Multiprocessors

In these types of systems, each processor contains a similar copy of the operating system and they all communicate with each other. All the processors are in a peer to peer relationship i.e. no master — slave relationship exists between them.

An example of the symmetric multiprocessing system is the Encore version of Unix for the Multimax Computer.

Asymmetric Multiprocessors

In asymmetric systems, each processor is given a predefined task. There is a master processor that gives instruction to all the other processors. Asymmetric multiprocessor system contains a master slave relationship.

Asymmetric multiprocessor was the only type of multiprocessor available before symmetric multiprocessors were created. Now also, this is the cheaper option.

Advantages of Multiprocessor Systems

There are multiple advantages to multiprocessor systems. Some of these are −

More reliable Systems

In a multiprocessor system, even if one processor fails, the system will not halt. This ability to continue working despite hardware failure is known as graceful degradation. For example: If there are 5 processors in a multiprocessor system and one of them fails, then also 4 processors are still working. So the system only becomes slower and does not ground to a halt.

Enhanced Throughput

If multiple processors are working in tandem, then the throughput of the system increases i.e. number of processes getting executed per unit of time increase. If there are N processors then the throughput increases by an amount just under N.

More Economic Systems

Multiprocessor systems are cheaper than single processor systems in the long run because they share the data storage, peripheral devices, power supplies etc. If there are multiple processes that share data, it is better to schedule them on multiprocessor systems with shared data than have different computer systems with multiple copies of the data.

Disadvantages of Multiprocessor Systems

There are some disadvantages as well to multiprocessor systems. Some of these are:

Increased Expense

Even though multiprocessor systems are cheaper in the long run than using multiple computer systems, still they are quite expensive. It is much cheaper to buy a simple single processor system than a multiprocessor system.

Complicated Operating System Required

There are multiple processors in a multiprocessor system that share peripherals, memory etc. So, it is much more complicated to schedule processes and impart resources to processes.than in single processor systems. Hence, a more complex and complicated operating system is required in multiprocessor systems.

Large Main Memory Required

All the processors in the multiprocessor system share the memory. So a much larger pool of memory is required as compared to single processor systems.

Most computer systems are single processor systems i.e they only have one processor. However, multiprocessor or parallel systems are increasing in importance nowadays. These systems have multiple processors working in parallel that share the computer clock, memory, bus, peripheral devices etc. An image demonstrating the multiprocessor architecture is − Multiprocessor Systems

Types of Multiprocessors

There are mainly two types of multiprocessors i.e. symmetric and asymmetric multiprocessors. Details about them are as follows −

Symmetric Multiprocessors

In these types of systems, each processor contains a similar copy of the operating system and they all communicate with each other. All the processors are in a peer to peer relationship i.e. no master — slave relationship exists between them.

An example of the symmetric multiprocessing system is the Encore version of Unix for the Multimax Computer.

Asymmetric Multiprocessors

In asymmetric systems, each processor is given a predefined task. There is a master processor that gives instruction to all the other processors. Asymmetric multiprocessor system contains a master slave relationship.

Asymmetric multiprocessor was the only type of multiprocessor available before symmetric multiprocessors were created. Now also, this is the cheaper option.

Advantages of Multiprocessor Systems

There are multiple advantages to multiprocessor systems. Some of these are −

More reliable Systems

In a multiprocessor system, even if one processor fails, the system will not halt. This ability to continue working despite hardware failure is known as graceful degradation. For example: If there are 5 processors in a multiprocessor system and one of them fails, then also 4 processors are still working. So the system only becomes slower and does not ground to a halt.

Enhanced Throughput

If multiple processors are working in tandem, then the throughput of the system increases i.e. number of processes getting executed per unit of time increase. If there are N processors then the throughput increases by an amount just under N.

More Economic Systems

Multiprocessor systems are cheaper than single processor systems in the long run because they share the data storage, peripheral devices, power supplies etc. If there are multiple processes that share data, it is better to schedule them on multiprocessor systems with shared data than have different computer systems with multiple copies of the data.

Disadvantages of Multiprocessor Systems

There are some disadvantages as well to multiprocessor systems. Some of these are:

Increased Expense

Even though multiprocessor systems are cheaper in the long run than using multiple computer systems, still they are quite expensive. It is much cheaper to buy a simple single processor system than a multiprocessor system.

Complicated Operating System Required

There are multiple processors in a multiprocessor system that share peripherals, memory etc. So, it is much more complicated to schedule processes and impart resources to processes.than in single processor systems. Hence, a more complex and complicated operating system is required in multiprocessor systems.

Large Main Memory Required

All the processors in the multiprocessor system share the memory. So a much larger pool of memory is required as compared to single processor systems.

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


Многопроцессность, многопоточность, асинхронность в Python и не только. Что это и как работает?

Видео: Многопроцессность, многопоточность, асинхронность в Python и не только. Что это и как работает?

Содержание

  • Что такое многопроцессорность?
  • Разница между многопроцессорностью и мультипрограммированием
  • Требования
  • Поддержка процессора
  • Кронштейн материнской платы
  • Поддержка операционной системы
  • Типы многопроцессорности
  • Симметричная многопроцессорная обработка
  • Асимметричная многопроцессорность
  • Преимущество
  • Более высокая производительность
  • Более высокая надежность
  • Экономить деньги
  • Недостатки
  • Более высокая стоимость покупки
  • Сложная операционная система
  • Требуется большой объем памяти
  • Ссылки

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

Эти несколько центральных процессоров (ЦП) находятся в тесном взаимодействии, разделяя шину, память и другие периферийные устройства компьютера. Поскольку доступно несколько процессоров, несколько процессов могут выполняться одновременно.

multiprocesamiento en qu consiste tipos requerimientos ventajas

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

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

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

Что такое многопроцессорность?

Благодаря поддержке многопроцессорной системы несколько процессов могут выполняться параллельно.

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

Однако при многопроцессорной обработке каждый процесс может быть настроен на определенный ЦП для обработки.

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

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

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

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

Разница между многопроцессорностью и мультипрограммированием

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

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

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

Требования

Чтобы эффективно использовать многопроцессорную систему, компьютерная система должна иметь следующее:

Поддержка процессора

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

Кронштейн материнской платы

Материнская плата, способная содержать и обрабатывать несколько процессоров. Это означает дополнительные гнезда или слоты для добавленных чипов.

Поддержка операционной системы

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

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

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

Типы многопроцессорности

Симметричная многопроцессорная обработка

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

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

Примером симметричной многопроцессорной системы является версия Unix Encore для компьютера Multimax.

Асимметричная многопроцессорность

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

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

Преимущество

Более высокая производительность

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

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

Более высокая надежность

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

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

Экономить деньги

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

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

Недостатки

Более высокая стоимость покупки

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

Гораздо дешевле купить простую систему с одним процессором, чем многопроцессорную.

Сложная операционная система

В многопроцессорных системах требуется более сложная операционная система.

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

Требуется большой объем памяти

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

Ссылки

  1. Динеш Такур (2019). Определение Многопроцессорная операционная система. Заметки для компьютера Взято с: ecomputernotes.com.
  2. Учебные пособия (2019 г.). Разница между многозадачностью, многопоточностью и многопроцессорностью. Взято из: tutorialspoint.dev.
  3. Британская энциклопедия (2019). Многопроцессорность. Взято с: britannica.com.
  4. Техопедия (2019). Мультипроцессор. Взято с: потолокpedia.com.
  5. Кристи Кастро (2018). Многопроцессорные системы. Учебные пособия. Взято с: tutorialspoint.com.

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

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

Мультипрограммирование означает, что несколько программ (последовательностей инструкций z / Architecture®) на разных этапах выполнения координируются для работы на одном механизме I-потока (ЦП). Многопроцессорность — это координация одновременное исполнение нескольких программ, работающих на нескольких процессорах I-stream.

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

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

Что такое многопроцессорность с примером?

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

Эффективна ли многопроцессорность без мультипрограммирования?

Ответ: Ниже приведены различия между многопроцессорностью и мультипрограммированием.

Типы ОС, вопросы и ответы №3.

Sr. No. многопроцессорная обработка Мультипрограммирование
5 Это способствует более эффективному использованию устройств компьютерной системы. Менее эффективен, чем многопроцессорность.

В чем недостатки мультипрограммирования?

Недостатки многопрограммной ОС:

  • Иногда долгую работу приходится долго ждать.
  • Отслеживание всех процессов иногда сложно.
  • Требуется планирование ЦП.
  • Требуется эффективное управление памятью.
  • Никакого взаимодействия пользователя с какой-либо программой во время выполнения.

В чем преимущества и недостатки многопроцессорной системы?

Преимущества многопроцессорных систем

  • Более надежные системы. В многопроцессорной системе даже при выходе из строя одного процессора система не остановится. …
  • Повышенная пропускная способность. …
  • Больше экономических систем. …
  • Увеличенные расходы. …
  • Требуется сложная операционная система. …
  • Требуется большая основная память.

Каковы преимущества операционной системы с разделением времени?

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

  • Разделение времени имеет проблему надежности.
  • Может возникнуть вопрос о безопасности и целостности пользовательских программ и данных.
  • Возникает проблема передачи данных.

Какова функция NOS?

Сетевая операционная система (NOS) — это операционная система, которая управляет сетевыми ресурсами: по сути, операционная система, которая включает специальные функции для подключения компьютеров и устройств в локальную сеть (LAN).

Что такое многозадачная ОС?

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

Мультипрограммирование и многозадачность ОС — одно и то же?

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

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

Понравилась статья? Поделить с друзьями:

А вот еще кое-что интересное для вас:

  • Для чего нужен дубликаты госномера авто. 10 причин сделать себе его
  • Разновидности похоронных бюро и сферы их деятельности
  • Как быстро изучить английский язык? Плюсы и минусы онлайн школы по изучения языков
  • Эффективное создание текста вакансии: ключевые шаги и рекомендации
  • Размещение серверов в дата-центрах: преимущества и недостатки