МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


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

    системой отказавшего процессора из списка доступных и запуске на другом

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

    процессоров ввода-вывода обнаруживаются довольно легко, восстановление

    ввиду наличия 4-х идентичных по функциям ПВВ также несложно – необходимо

    лишь подключение критичных для работы МПВК периферийных устройств ко всем

    ПВВ с соответствующей коммутацией. Отказы самих периферийных устройств –

    наиболее простая и хорошо проработанная часть организации

    отказоустойчивости. Наиболее часто применяется тот или иной вид

    резервирования на уровне устройств – нагруженное, ненагруженное или

    скользящее.

    Необходимо отметить, что поддержки операционной системы не требует в данном

    случае лишь организация отказоустойчивости оперативной памяти,

    коммутационной матрицы и некоторых периферийных устройств. Все остальные

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

    МПВК.

    Также стоит подчеркнуть, что, несмотря на возможности организации

    отказоустойчивости МПВК, все наиболее серьезные реализации отказоустойчивых

    вычислительных систем представляют собой ММВК. Это объясняется большей

    изолированностью, а следовательно и к меньшему воздействию отказавших

    модулей на другие модули в ММВК.

    3. Организация функционирования ОС на МПВК

    ОС МПВК должна выполнять все функции ОС однопроцессорной ЭВМ, однако

    дополнительно она должна обеспечивать эффективное использование ресурсов

    многопроцессорного комплекса (см. разделы “Симметричная многопроцессорная

    обработка”, “Нити”). Так как проблемы реализации ОС более серьезны, чем в

    однопроцессорном варианте, необходимо уделить особое внимание обеспечению

    корректного конкурентного доступа (предлагается использование семафоров –

    см. “Семафоры”). Для избежания простоев системы необходимо избегать

    тупиковых ситуаций (см. разделы “Тупиковые ситуации”, “Предотвращение

    тупиковых ситуаций”). Так как эффективных алгоритмов разрешения тупиков без

    потери информации, в общем случае, не существует, данные методы не

    рассматриваются (это в основном уничтожение процессов, начиная с наименее

    приоритетных процессов по какому-либо определенному заранее критерию).

    В общем можно сказать, что ОС многопроцессорных ЭВМ похожи по функциям и

    реализации на ОС однопроцессорных ЭВМ, однако они выполняют некоторые

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

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

    (Symmetric Multiprocessor Processing – SMP)

    Для многопроцессорной обработки всегда требуются и соответствующие

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

    многопроцессорные платформы несколькими разными способами. При

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

    назначаются конкретному процессору на аппаратной платформе. Нити каждого

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

    метод, как правило, менее эффективен, чем симметричный метод. Симметричная

    многопроцессорная обработка предполагает, что все процессоры имеют

    одинаковые возможности.

    Под симметричной многопроцессорной обработкой обычно понимают равноправное

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

    асимметричных системах могут быть ввод-вывод или числовые вычисления. В SMP

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

    выполняться на любом процессоре. SMP ОС запускает процесс (нить) из общей

    очереди на первом освободившемся процессоре, как только выполнение процесса

    (нити) после приоритетного прерывания ОС возобновляется. В SMP-модели

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

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

    другие ничем не заняты.

    Хотя все процессоры в SMP системе функционально идентичны, выделяется два

    их типа: загрузочный процессор (BSP) и прикладные процессоры (АР). Какой

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

    совместно аппаратурой и BIOS. Это сделано для удобства и имеет значение

    только во время инициализации и выключения. BSP-процессор отвечает за

    инициализацию системы и за загрузку ОС. АР-процессор активизируется после

    загрузки ОС.

    Симметричность имеет два важных аспекта: симметричность памяти и ввода-

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

    пространство памяти и имеют в этом пространстве доступ с одними и теми же

    адресами. Симметричность памяти предполагает, что все процессоры могут

    исполнять единственную копию ОС. В таком случае любые существующие системы

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

    установленных в системе процессоров. Требование симметричности ввода-вывода

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

    подсистемам ввода-вывода (включая порты и контроллеры прерывания), причем

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

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

    время являются асимметричными по отношению к прерываниям устройств ввода-

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

    Симметричность ввода-вывода помогает убрать потенциально узкие места ввода-

    вывода и тем самым повысить расширяемость системы.

    Системы, обладающие симметричностью памяти и ввода-вывода, позволяют

    обеспечить расширяемость аппаратных средств, а также стандартизовать

    программные средства.

    Есть две общие реализации SMP, известные как сильносвязанная и

    слабосвязанная. Сильносвязанная реализация базируется на схеме, согласно

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

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

    обмена сообщениями между процессами для совместного использования ресурсов,

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

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

    Наиболее целесообразно использовать симметричную сильносвязанную модель.

    Тогда ОС обеспечивает мощную поддержку симметричной многопроцессорной

    обработки, так как планировщик в ядре ОС функционирует на уровне нити,

    поэтому сервер может назначить две нити одного процесса различным

    процессорам. Это особенно полезно для прикладных программ баз данных, где

    запросы могут быть расщеплены на нити и распределены между процессорами,

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

    Чтобы полнее воспользоваться преимуществами SMP при организации

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

    приоритетных прерываний. Приоритетное прерывание позволяет операционной

    системе поддерживать контроль над программами, какую программу и когда

    запускать, так что сбившиеся программы не могут поработить систему и

    вызвать проблемы. При приоритетных прерываниях - постоянный, занимающие

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

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

    Основным преимуществом такой архитектуры является то, что прикладные

    программы имеют в своем распоряжении столько центральных процессоров,

    сколько имеется в наличии у сервера. Так как операционная система

    занимается планированием работы процессоров, прикладным программам нет

    необходимости знать о количестве имеющихся процессоров. Операционная

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

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

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

    с ними справиться.

    Одним из преимуществ SMP-платформ, является их масштабируемость. Компания,

    реализовавшая однопроцессорную систему с таким сервером, в будущем будет

    иметь возможность реализовать SMP с той же самой версией ОС. Если задачи

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

    можно приобрести сначала сервер только с одним процессором, а позднее

    добавлять дополнительные процессоры. Если масштабируемость реальна, то по

    мере того, как развивается информационная система и, соответственно,

    требования пользователей к мощности системы, можно добавить еще один

    процессор без какого-либо изменения программного обеспечения.

    Для достижения масштабируемости важно использовать также асинхронные

    операции. При асинхронном вводе/выводе процессу не надо ожидать завершения

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

    Каждый процесс создается с использованием единственной нити, которая

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

    Программы могут запускать новые нити по мере потребности, и ОС назначает и

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

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

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

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

    может выполняться на отдельном процессоре без контроля со стороны

    прикладной программы.

    Такая архитектура имеет еще одно преимущество. Накладные расходы связаны

    скорее с процессом, чем с нитью. Кроме того, нити создаются быстрее, чем

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

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

    Помимо этого, все ресурсы процесса доступны всем нитям внутри процесса.

    Конечно, для работы с текстовыми редакторами и электронными таблицами мощь

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

    является в рамках сетевого сервера или сервера базы данных, ответственного

    за оперативную обработку транзакций, поступающих от большого числа

    пользователей.

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

    все преимущества ОС на уровне нити, а не на уровне процесса. Определяя

    производительность и гибкость какой-либо системы как единого целого,

    необходимо иметь в виду, что аппаратное обеспечение, сетевая операционная

    система и прикладное программное обеспечение работают вместе.

    Необходимо иметь в виду, что эффективность не растет линейно при добавлении

    еще одного процессора. Для любой SMP-системы выгода от дополнительного

    процессора постепенно сходит на нет с добавлением каждого последующего

    процессора.

    Производительность не растет линейно, поскольку ОС должна управлять каждым

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

    вызовами и периферийными устройствами на шине. Когда нить в

    однопроцессорной системе не может более выполняться до осуществления

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

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

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

    осуществлении условия.

    Когда есть только один процессор, довольно просто сохранять описание

    уровней прерывания и масок, контролирующих доступ к структурам данных ОС. С

    добавлением каждого нового процессора эта задача становится все более

    трудной. Операционная система для SMP-платформы должна уточнить, что только

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

    глобальную структуру данных.

    В системе с одним процессором маскированное прерывание предотвращает

    использование процессором ресурса. Но в SMP-среде этот механизм не дает

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

    тому же самому ресурсу через другое прерывание.

    В SMP ОС целесообразно использовать метод взаимоблокировки для управления

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

    программной процедурой, которая блокирует доступ второго процессора к уже

    занятому ресурсу. Например, когда ядро хочет получить доступ к защищенной

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

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

    распоряжении какого-либо процессора, то другой процессор пытается получить

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

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

    данных на уровне ядра. Однако при непродуманной реализации, он может

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

    периода, ожидая освободившийся замок. Этот метод хорошо работает, когда

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

    в функциях ядра, которые не вызывают внешние процедуры, не вытесняются из

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

    взаимоблокировка не действует, в то время как ядро должно синхронизировать

    нити между процессорами.

    Ядро также может управлять нитью, назначая ей одно из трех состояний:

    готова, выполняется или ждет. Когда нить ждет результатов запроса, ядро

    изменяет состояние нити с "выполняется" на "ждет" и удаляет ее из очереди

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

    изменяет состояние нити с "ждет" на "готова" и возвращает ее в очередь.

    Нить выполняется, когда появляется возможность.

    Хотя это объяснение поверхностно, оно все же показывает, насколько сложным

    для операционной системы оказывается управление синхронизацией нескольких

    процессов. По мере добавления новых процессоров к системе накладные расходы

    на управление конфликтами возрастают, и это уменьшает отдачу от ОС,

    ориентированных на симметрично-многопроцессорную обработку.

    3.2 Нити (threads)

    Понятие "легковесного процесса" (light-weight process), или, как принято

    называть его в современных вариантах ОС, "thread" (нить, поток управления)

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

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

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

    одной виртуальной памяти должен соответствовать один и только один поток

    управления. Поэтому, например, в ОС Multics допускалось (и являлось

    принятой практикой) иметь произвольное количество процессов, выполняемых в

    общей (разделяемой) виртуальной памяти.

    Понятно, что если несколько процессов совместно пользуются некоторыми

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

    (например, с использованием семафоров, см. раздел “Семафоры”). Многолетний

    опыт программирования с использованием явных примитивов синхронизации

    показал, что этот стиль "параллельного" программирования порождает

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

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

    синхронизацией). Это явилось одной из причин того, что в традиционных

    вариантах ОС понятие процесса жестко связывалось с понятием отдельной и

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

    защищен ядром операционной системы от неконтролируемого вмешательства

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

    системы (впрочем, это мнение существует и сегодня).

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

    мере, две проблемы. Первая проблема связана с так называемыми системами

    реального времени. Такие системы, как правило, предназначены для

    одновременного управления несколькими внешними объектами и наиболее

    естественно представляются в виде совокупности "параллельно" (или

    "квазипараллельно") выполняемых потоков команд (т. е. взаимодействующих

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

    память, то смена контекста процессора (т. е. его переключение с выполнения

    одного процесса на выполнение другого процесса) является относительно

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

    использованию системы в приложениях реального времени.

    Второй (и может быть более существенной) проблемой явилось появление так

    называемых симметричных мультипроцессорных компьютерных архитектур (SMP -

    Symmetric Multiprocessor Processing). В таких компьютерах физически

    присутствуют несколько процессоров, которые имеют одинаковые по скорости

    возможности доступа к совместно используемой основной памяти. Появление

    подобных машин на мировом рынке, естественно, вывело на первый план

    проблему их эффективного использования. Понятно, что при применении

    традиционного подхода к организации процессов от наличия общей памяти не

    очень много толка (хотя при наличии возможностей разделяемой памяти об этом

    можно спорить). К моменту появления SMP выяснилось, что технология

    программирования все еще не может предложить эффективного и безопасного

    способа реального параллельного программирования. Поэтому пришлось

    вернуться к явному параллельному программированию с использованием

    параллельных процессов в общей виртуальной (а тем самым, и основной) памяти

    с явной синхронизацией.

    Что же понимается под "нитью" (thread)? Это независимый поток управления,

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

    Страницы: 1, 2, 3, 4


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.