Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OS-theory.doc
Скачиваний:
7
Добавлен:
01.03.2025
Размер:
155 Кб
Скачать
☆

Кластеры

Топология:

Еще есть куб, гиперкуб n-й степени. Полносвязная топология – минимальный диаметр, но сложно и дорого.

Кластер – набор компьютеров, соединенных высокоскоростной локальной сетью.

Предназначены для решения вычислительных задач.

Задача разбивается на параллельные процессы.

Т=Т1+…+Тn, N<<n, где N – кол-во компьютеров в кластере.

Наша задача – построить высокоскоростную сеть. Основные используемые топологии – решетка, двойной тор, n-мерный гиперкуб.

Нужно организовать передачу данных между компьютерами (выбор пути и т.п.). Время передачи – O(kt), k – макс. количество связей между компьютерами, t – время передачи по одной связи.

Чтобы ускорить – используют коммутацию пакетов (строят заранее путь, потом быстро проталкивают пакет), wormhole – начинают строить путь и проталкивают одновременно.

Для связи используются специальные интерфейсные карты.

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

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

OS кластера должна иметь в API ф-ии send и receive

send(addr,pmsg); receive(addr,pmsg);

Синхронный (блокирующий) send – дожидается выхода пакета из карты, асинхронный – не дожидается. Пакеты ходят без подтверждения, аналог UDP.

При асинхронном выводе используются дополнительные буферы в памяти ядра, механизм прерываний, copy-on-write (копирование буфера передачи, который можно заполнять снова, при этом старый буфер будет по-прежнему передаваться. Все это решает проблему синхронизации буфера передачи – нельзя испортить старый). Зато быстрее синхронного.

Другой подход – RPC (Remote Procedure Call). Мы хотим с машины A вызывать функцию f(a,b,c) на машине B, чтобы параметры и результат передавались неявно. Удобно с точки зрения программиста.

int f(int x,int y) {return x+y;}

int x=B.f(1,2)

П роблемы: формат передаваемых данных, тип. Маршализация – упаковка параметров согласованным образом.

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

RPC – один из центральных механизмов обработки данных в кластере (не считая общения с БД).

Распределенные системы

Отличия от кластеров: к сети подключены полноценные компьютеры; топология уже реализована; сеть глобальная (медленнее); обилие протоколов прикладного уровня (вместо RPC/send-receive); неоднородность характеристик машин (OS, CPU).

Распределенная система всегда использует некий middleware – еще один слой абстракции.

П рикл. прогр. middleware OS, протоколы, …

Middleware

  1. Абстрактные файловые системы (AFS)

  2. Компоненты Компонент – более абстрактная вещь, чем объект, черный ящик с интерфейсом.

    1. CORBA – разработка OMG. В нем есть IDL – Interface Description Language.

    2. COM – разработка Microsoft. Почти все в Windows написано с использованием COM.

  3. Виртуальные машины

    1. J

      Java

      байткод

      JVM

      ava (1995), разраб. Sun. Раньше назыв. Oak. Впервые стала использоваться в браузере (Netscape). Преимущества JVM – кроссплатформенность и сборка мусора.

    2. .NET, разраб. Microsoft, очень похож на Java Отличия:

      • можно писать на любом языке. CLI – common language interface. Ассемблер машины .NET очень высокого уровня. От MS есть компиляторы для VB.NET, C#, C++ managed, J#, JScript.NET и еще множество сторонних компиляторов.

      • JIT-компиляция (just in time – прямо перед выполнением байткод компилируется в нормальный код). На самом деле переводится в нормальный код только арифметика (~40%). На счетных программах .NET работает как C++, в остальных случаях – медленнее Java. Вообще, Java обычно медленнее C++ примерно в 5 раз.

В .NET единицей хранения dll является не имя, а assembly (имя, версия, язык, …). .NET потихоньку вытесняет COM. Вообще, производительность теряет значение.

В виртуальных машинах есть такое понятие, как Sandbox – можно ограничивать доступ виртуальной машины к ресурсам реальной машины. Очень важная для безопасности вещь, реализована и в JVM и в .NET

  1. H

    слой данных

    бизнес-логика

    UI

    TTP/XML three-tier model многослойность дает безопасность: веб-сервер (UI) ничего не знает о БД, поэтому ничего не может сообщить злоумышленнику.

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