Глава 18. Начальные сведения о внутреннем устройстве openMosix

Содержание

18.1. Введение

18.1. Введение

(автор: Amit Shah)

На самом деле, пока не так много документации о ядре, но надеюсь, что ситуация улучшится со временем. Тем не менее, для начала, вот где располагаются исходники:

Код openMosix находится в основном в каталогах hpc/ и include/hpc. Помимо этого, добавляется множество патчей для файлов ядра, начиная с каталогов arch/i386, и включая mm/, fs/ и т.д. Вам необходимо будет найти прочитать код, который вам нужен (это не проблема, если вы уже писали код для ядра).

А вот что вы можете обнаружить в файлах исходных текстов:

  • hpc/badops.c: Единый файл, обрабатывающий неудачные операции: в основном возвращает коды ошибок.

  • hpc/balance.c: Код балансировки (нагрузка + использование памяти).

  • hpc/comm.c: Настройка внутрикластерного взаимодействия.

  • hpc/config.c: Код конфигурации для openMosix: то есть то, что выполняется после того, как вы запустили startup script.

  • hpc/decay.c: Задержка (возраст) статистики и информации, собираемой с других узлов.

  • hpc/deputy.c: Код, выполняемый как вспомогательный: удалённые системные вызовы служб (т.е. после того, как процесс мигрировал), сигналы и т.п.

  • hpc/dfsa.c: Код DFSA: уровень абстракции распределённой файловой системы.

  • hpc/div.c: Алгоритмы, отвечающие за деление с плавающей точкой.

  • hpc/export.c: Экспорт символов, необходимых для других файлов.

  • hpc/freemem.c: Необходим для отслеживания свободной и доступной памяти, а также её освобождения при необходимости. Большая часть кода заимствована из кода Linux mm/.

  • hpc/hpcadmin.c: Настройка административных опций openMosix (посредством /proc/hpc).

  • hpc/hpcproc.c: Здесь обрабатывается код /proc/hpc.

  • hpc/info.c: info-демон: отправляет и получает (multicast) информацию о нагрузке+использовании памяти в кластере.

  • hpc/init.c: Код инициализации: стартует демоны и т.п.

  • hpc/kernel.c: Основной код: здесь определяются все основные алгоритмы, решения и т.п.

  • hpc/load.c: Вычисление локальной нагрузки.

  • hpc/mig.c: Код, управляющий миграцией. Отвечает за любую миграцию: подчинённая->удалённая, удалённая->подчинённая; удалённая->удалённая.

  • hpc/prequest.c: обрабатывает запросы процессов: сигналы, память и т.п.

  • hpc/remote.c: Код, который исполняет процесс, будучи перемещённым: системные вызовы, передача управления и т.п.

  • hpc/rinode.c: всё, что относится к разделу fs/: в основном используется для DFSA

  • hpc/service.c: настройка демонов, выделение памяти и т.п.

  • hpc/syscalls.c: здесь происходит обработка удалённых системных вызовов

  • hpc/ucache.c: работа с ucache: в основном касается mm/ и fs/.

прочие файлы, например как auto_syscalls.c, alternate.c генерируются во время компиляции.