- программировать мультикомпьютерные системы значительно сложнее, чем мультипроцессорные, поскольку
- связь посредством процессов, имеющих доступ к совместно используемой памяти, и простых примитивов синхронизации, таких как семафоры и мониторы, значительно проще, чем работа с одним только механизмом обмена сообщениями
- буферизация, блокировка и надежность связи, только усложняют положение
- проводились исследования по вопросу эмуляции совместно используемой памяти на мультикомпьютерных системах с целью:
- создание виртуальных машин с разделяемой памятью, работающих на мультикомпьютерных системах для которых,
- можно было бы писать приложения, рассчитанные на модель совместно используемой памяти, даже если физически она отсутствует.
- главную роль в этом играет мультикомпьютерная операционная система.
- Один из распространенных подходов — задействовать виртуальную память каждого отдельного узла для поддержки общего виртуального адресного пространства.
- Это приводит нас к распределенной разделяемой памяти (Distributed Shared Memory, DSM) со страничной организацией.
- Принцип работы этой памяти следующий. В системе с DSM адресное пространство разделено на страницы (обычно по 4 или по 8 Кбайт), распределенные по всем процессорам системы.
- Когда процессор адресуется к памяти, которая не является локальной:
- происходит внутреннее прерывание,
- операционная система считывает в локальную память страницу, содержащую указанный адрес,
- и перезапускает выполнение вызвавшей прерывание инструкции, которая теперь успешно выполняется.
Разделяемое глобальное адресное пространство - Страницы адресного пространства распределены по четырем машинам
- Обращении процессора 1 к коду или данным со страницы 0, 2, 5 или 9 обращение происходит локально. Ссылки на другие страницы вызывают внутреннее прерывание
Do'stlaringiz bilan baham: |