Разработка прикладного API системы распределенной общей памяти МАКС DSM::Журнал СА 6.2017
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

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

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

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

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

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

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6225
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6931
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4213
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3006
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3806
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3819
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6315
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3168
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3459
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7276
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10645
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12364
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13998
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9123
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7077
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5387
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4615
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3426
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3154
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3399
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3024
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Разработка прикладного API системы распределенной общей памяти МАКС DSM

Архив номеров / 2017 / Выпуск №6 (175) / Разработка прикладного API системы распределенной общей памяти МАКС DSM

Рубрика: Событие /  Конспект

Павел Бойко ПАВЕЛ БОЙКО, ООО «АстроСофт», PavelB@astrosoft.ru

Разработка прикладного API
системы распределенной общей памяти МАКС DSM

Традиционно коммуникации в распределенных системах без общей памяти реализуются через примитивы обмена сообщениями Send и Receive. Наиболее популярным стандартом в этой области стал MPI. Однако программные решения, основанные на передаче сообщений в распределенных системах, оказались чрезвычайно сложны. Знакомим читателей с DSM-системой, о возможностях которой шла речь на конференции OS DAY

Разработка прикладного API системы распределенной общей памяти МАКС DSMАльтернативный подход предложила концепция распределенной общей памяти (англ. – distributed shared memory, DSM) [5]. Оказалось, что даже при физическом отсутствии общей памяти возможно создать программную прослойку, успешно такую память имитирующую. DSM предоставляет возможность существенно упростить организацию коммуникаций в распределенных системах за счет перехода на более высокий уровень абстракции, не требуя от разработчика «ручного» управления отдельными сообщениями, курсирующими в системе, а предлагая лишь производить обычные операции с памятью, консистентность которой на всех узлах системы обеспечивается внутренними механизмами.

Концепция DSM применима к любым видам распределенных систем. Однако сфера интернета вещей (IoT) – одна из наиболее бурно развивающихся, стимулирующая массовый интерес к распределенным системам, – остается данной концепцией не охвачена. Одна из причин, по всей видимости, заключается в том, что прежние DSM-системы [1-4] и др. разрабатывались зачастую на экзотических языках программирования (требуя создания новых или адаптации существующих компиляторов) и/или под неиспользуемые сегодня ОС. В данной ситуации была разработана система МАКС DSM, интегрируемая в ОСРВ МАКС – систему, предназначенную для упрощения разработки ПО в сфере embedded и IoT. В статье рассмотрен подход к созданию интерфейса прикладного программиста (API) к МАКС DSM.

Предпосылки

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

  • Реализация на стандартном языке Си++.
  • Классическая концепция DSM-интерфейса – маркировка распределенных переменных и специальные секции для работы с ними.
  • Жесткая связь каждой распределенной переменной с конкретной секцией.
  • Доступ к распределенным переменным только внутри соответствующих секций.
  • Синтаксическая лаконичность и самоочевидность результирующего прикладного кода.
  • Контроль выполнения заданных правил на этапе компиляции.

Реализация

Обеспечить выполнение данных принципов позволило задействование языка Си++ и директив препроцессора (что не типично для создававшихся DSM-систем). Последние позволили использовать техники метапрограммирования, расширив язык, не изменяя компилятор. Шаблоны принципиально не использовались, так как результирующие конструкции оказались бы слишком сложны для многих программистов, а уровень поддержки стандарта языка в области шаблонов со стороны среды разработки может различаться от продукта к продукту, что особенно характерно для компиляторов в области embedded. Простейшая программа с МАКС DSM:

Листинг 1. Пример простейшей программы с МАКС DSM

1 MDSM_DECLARE(X) // Объявляем группу распределенных переменных с именем «X».

2 int i ; // В данном примере группа содержит всего одну переменную.

3 MDSM_DECLARE_END //

4

5 int main ()

6 {

7 int result = 2;

8

9 MDSM_ACCESS_RW( X ) // Демонстрируется доступ на запись

10 MDSM_ITEM( i ) = result + 1; // к переменным группы «X».

11 MDSM_ACCESS_END //

12

13 MDSM_ACCESS_RO( X ) // Демонстрируется доступ на чтение.

14 result = MDSM_ITEM( i ) – 3; //

15 MDSM_ACCESS_END //

16

17 return result;

18 }

Объявление распределенных переменных отличается от объявления локальных лишь обрамлением из директив MDSM_DECLARE и MDSM_DECLARE_END. Так как внутри DSM необходимо иметь возможность работы со всеми переменными одной группы как с непрерывной областью памяти (сериализация и др.), обрамляющие директивы генерируют вокруг переменных пользователя структуру (struct). Структура, в свою очередь, помещается в класс (class), предоставляющий операции управления группой. Генерация дубликатов кода предотвращается наследованием данного класса от некоторого базового, реализующего общие методы. Возможность универсальной работы с любым изподобных классов в механизмах, описываемых ниже, обеспечивается их единым именованием. Возможность же создания множества групп переменных в одной программе обеспечивается размещением каждого класса в индивидуально сгенерированном пространстве имен (namespace), содержащем в названии уникальный идентификатор, задаваемый в качестве параметра конструкции MDSM_DECLARE.

Концепция DSM применима к любым распределенным системам. Однако сфера IoT остается не охвачена

Конструкции MDSM_ACCESS_RW и MDSM_ACCESS_RO, с точки зрения пользователя, открывают критическую секцию для работы с соответствующей группой распределенных переменных. С точки зрения реализации, данные конструкции создают переменную-ссылку на экземпляр класса, содержащий интересующие пользователя переменные (параллельно сгенерировав уникальное имя соответствующего пространства имен). В зависимости от типа конструкции (*_RW используется для доступа на чтение и запись, *_RO – только для чтения), ссылка создается либо обычная, либо константная (const). Таким образом, предотвращаются возможные ошибки пользователя, при которых секция открывается на чтение, но в ней производится модификация распределенной переменной. Для унификации последующих операций в любой секции ссылка создается всегда с одним и тем же именем. Дублирование имен ссылок предотвращается генерацией индивидуальной области видимости для каждой критической секции. Сразу после создания ссылки на класс генерируется код для вызова метода этого класса, обеспечивающего консистентность переменных соответствующей группы.

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

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

Благодаря описанным выше механизмам в МАКС DSM удалось совместить простой синтаксис, проверку на соблюдение пользователем соглашений системы на этапе компиляции и отсутствие зависимости от каких-либо дополнительных компонентов среды разработки. eof

  1. Bal H. E., Kaashoek M. F., Tanenbaum A. S. Orca: a language for parallel programming of distributed systems // IEEE Transactions on Software Engineering. – 1992. – Mar. – Vol. 18, no. 3. – P. 190-205.
  2. Bershad B. N., Zekauskas M. J., Sawdon W. A. The Midway distributed shared memory system // Digest of Papers. Compcon Spring. – 1993. – Feb. – P. 528-537.
  3. Carter J. B. Design of the Munin distributed shared memory system // Journal of Parallel and Distributed Computing. – 1995. – Vol. 29, no. 2. – P. 219-227.
  4. Gelernter D. Generative Communication in Linda // ACM Trans. Program. Lang. Syst. – 1985. – Jan. – Vol. 7, no. 1. – P. 80-112. – URL: http://doi.acm.org/10.1145/2363.2433.
  5. Stumm M., Zhou S. Algorithms implementing distributed shared memory // Computer. – 1990. – May. – Vol. 23, no. 5. – P. 54-64.

Комментарии отсутствуют

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

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

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru