Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры

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

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

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

Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть картинку Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Картинка про Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры

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

Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть картинку Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Картинка про Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры

Разница между асимметричной и симметричной многопроцессорной обработкой:

Источник

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

Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть картинку Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Картинка про Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектурыСуществует два типа многопроцессорной обработки: симметричная многопроцессорная и асимметричная многопроцессорная. Многопроцессорная система имеет более одного процессора, и они могут выполнять несколько процессов одновременно. В Symmetric Multiprocessing процессоры совместно используют одну и ту же память. В Asymmetric Multiprocessing есть один главный процессор, который управляет структурой данных системы. Основное различие между Symmetric и Asymmetric Multiprocessing заключается в том, что в Symmetric Multiprocessing все процессоры в системе выполняют задачи в ОС. Но в Asymmetric Multiprocessing только главный процессор запускает задачу в ОС.

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

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

Основа для сравненияСимметричная многопроцессорная обработкаАсимметричная многопроцессорная обработка
основнойКаждый процессор запускает задачи в операционной системе.Только мастер процессор выполняет задачи операционной системы.
ПроцессПроцессор берет процессы из общей очереди готовности, или для каждого процессора может быть личная очередь готовности.Главный процессор назначает процессы подчиненным процессорам, или у них есть некоторые предопределенные процессы.
АрхитектураВсе процессоры в Symmetric Multiprocessing имеют одинаковую архитектуру.Все процессоры в асимметричной многопроцессорной обработке могут иметь одинаковую или разную архитектуру.
связьВсе процессоры обмениваются данными с другим процессором посредством общей памяти.Процессоры не должны обмениваться данными, поскольку они контролируются главным процессором.
недостаточностьЕсли процессор выходит из строя, вычислительная мощность системы уменьшается.Если ведущий процессор выходит из строя, ведомый превращается в ведущий процессор для продолжения выполнения. В случае сбоя подчиненного процессора его задача переключается на другие процессоры.
непринужденностьСимметричный мультипроцессор сложен, так как все процессоры должны быть синхронизированы для поддержания баланса нагрузки.Асимметричный мультипроцессор прост как главный процессор доступа к структуре данных.

Определение симметричной многопроцессорной обработки

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

Определение асимметричной многопроцессорной обработки

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

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

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

Заключение:

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

Источник

Разница между симметричной многопроцессорной обработкой и асимметричной многопроцессорностью

Главное отличие

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

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

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

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

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

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

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

Тип многопроцессорной обработки, при которой все процессоры выполняют задачу в операционной системе, известен как симметричная многопроцессорная обработка. В асимметричной многопроцессорной обработке есть отношения ведущий-ведомый, но в симметричной многопроцессорной обработке отношения ведущий-ведомый отсутствуют. При симметричной многопроцессорной обработке все процессоры взаимодействуют с использованием общей памяти. Из общей очереди готовности процессоры начинают выполнение процессов. В симметричной многопроцессорной обработке может быть частная очередь, которая позволяет процессу выполняться. Система с более чем одним процессором называется многопроцессорной системой. Для увеличения мощности компьютера добавлено более двух процессоров. CPU имеет набор регистров, в которых хранится процесс. Например, если выполняется процесс сложения двух чисел, целые числа будут сохранены в регистрах, а сложение числа также будет сохранено в регистре. Если будет более одного процесса, будет больше регистров, чем если бы один процессор работал, а другие были бы свободны, таким образом мощность компьютера увеличивается. Существуют типы процессоров, такие как симметричная многопроцессорная обработка и асимметричная многопроцессорная обработка. Если мы говорим о симметричной многопроцессорной обработке, то при симметричной многопроцессорной обработке процессор свободен для запуска и может запускать любой процесс, тогда как в случае многопоточности существует связь мастер-мазь. В многопроцессорной обработке используется встроенный контроллер памяти, задача которого заключается в добавлении памяти. В симметричной многопроцессорной обработке может быть планировщик, который следит за тем, чтобы никакие два процессора не выполнялись одновременно. Правильная балансировка нагрузки — одна из основных характеристик симметричной многопроцессорной обработки. В симметричной многопроцессорной обработке лучшая отказоустойчивость снижает вероятность «узкого места» ЦП. Симметричная многопроцессорная обработка сложна, потому что память распределяется между всеми процессорами. Если процессор выходит из строя, то симметричная многопроцессорная обработка приводит к снижению вычислительной мощности.

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

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

Источник

Мультипроцессорная обработка

Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть картинку Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Картинка про Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть картинку Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Картинка про Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть картинку Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Картинка про Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть картинку Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Картинка про Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры

Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть картинку Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Картинка про Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры

Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть картинку Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Картинка про Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры

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

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

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

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

В наши дни становится общепринятым введение в ОС, функций поддержки мультипроцессорной обработки данных. Такие функции имеются во всех популярных ОС, таких как Sun Solaris 2.x, Santa Crus Operations Open Server 3.x, IBM OS/2, Microsoft Windows NT и Novell NetWare, начиная с 4.1.

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

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

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

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

Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Смотреть картинку Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Картинка про Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры. Фото Что означает симметричная и несимметричная мультипроцессорная обработка с точки зрения архитектуры

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

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

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

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

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

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

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

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

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

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

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

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

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

5.3 Понятия «процесс» и «поток»

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

Итак, в чем же состоят принципиальные отличия в понятиях «процесс» и «поток»?

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

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

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

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

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

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

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

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

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

Из всего вышеизложенного, следует, что в операционной системе наряду с процессами нужен другой механизм распараллеливания вычислений, который учитывал бы тесные связи между отдельными ветвями вычислений одного и того же приложения. Для этих целей современные ОС предлагают механизм многопоточной обработки (multithreading). При этом вводится новая единица работы — поток выполнения, а понятие «процесс» в значительной степени меняет смысл. Понятию «поток» соответствует последовательный переход процессора от одной команды программы к другой. ОС распределяет процессорное время между потоками. Процессу ОС назначает адресное пространство и набор ресурсов, которые совместно используются всеми его потоками.

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

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

Использование потоков связано не только со стремлением повысить производительность системы за счет параллельных вычислений, но и с целью создания более читабельных, логичных программ. Введение нескольких потоков выполнения упрощает программирование. Например, в задачах типа «писатель-читатель» один поток выполняет запись в буфер, а другой считывает записи из него. Поскольку они разделяют общий буфер, не стоит их делать отдельными процессами. Другой пример использования потоков — управление сигналами, такими как прерывание с клавиатуры (del или break). Вместо обработки сигнала прерывания один поток назначается для постоянного ожидания поступления сигналов. Таким образом, использование потоков может сократить необходимость в прерываниях пользовательского уровня. В этих примерах не столь важно параллельное выполнение, сколь важна ясность программы.

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

Источник

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

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