MorphOS - ось Морфея (часть I)


Автор -=\AmiF1Team/=-

Начиная писать данную статью, я долго думал, с чего же начать? Но раздумья были не долгими, обратясь к первоисточнику, а именно к документации по оси Морфея и опираясь на данные полученные по интернету, я хочу прояснить и разогнать туман, сгустившийся над продуктом, являющимся операционной системой, и успевшего нашуметь с проектом фирмы bPlan и сообществом фирм Genesi - Pegasos. Итак начнём, для начала рассмотрим основную концепцию MorphOS.

Операционка основана на микроядерной технологии, при этом сохраняя все особенности и основную идею AmigaOS, но имеющую намного продвинутую специфику:

  • с возможностью переключения скорости работы (наивысшая скорость работы - high, повышенная - super, и номинальная - user) как самого процессора, так и операционной системы в целом;
  • работа прерываний, организованная ещё на более низком уровне, из-за специфики процессоров нового поколения G3, G4;
  • абстракция IntThread и Int PCode плюс защищённость памяти;
  • симметричная мульти-процессорная обработка данных (SMP) и подразделение задач по классам Task/Thread и Clan/Chief;
  • отслеживание ресурсов наряду с асинхронной работой не только всех задач, но и системой сообщений;
  • реализованная поддержка операционной системой виртуальной памяти, а также рекурсивное управление её;
  • распределение вычислений, ограниченный доступ к структурам самого ядра MorphOS;
  • независимый проект со своим прекрасным интерфейсом (API).
Что ж, рассмотрев основные концептуальные наработки, перейдём к железу, то есть к поддержке аппаратной части самого компьютера. Стоит заметить, что по своим характерным особенностям, MorphOS делает аппаратную часть полностью независимой, что несомненный плюс оси Морфея, посредством:
  • определение типа центрального процессора, их количества, а также скорости часов;
  • определение ABox Zorro портов ввода-вывода, а также распознавание ZorroII, ZorroIII карт с дальнейшей их конфигурацией;
  • полная поддержка CVisionPPC, SymbiosPPC, PCI графических карт;
  • создание карты ресурсов под микроядро Quark;
  • старт и подключение ресурсов самого ядра OS.
Поддержка всех серверов Q-Box: исключения, Master-Clan, адресного, распознавание периферии и построение карты ресурсов посредством HAL, процессорного.

Поддержка A-Box: мультипронизывающее, управляющее процессом Quark и его собственным каналом памяти, полностью переработанная поддержка под PPC, содержащая в себе особенности A500, A1000, A1500, A2000, A3000, A3500, A3500T, A4000 и A4000T систем.

Компоненты A-Box: статический 680x0 эмулятор с поддержанием всех инструкций, а также полный набор команд кода 68881 и 68882 с возможностью лёгкого декодирования и замены инструкций FPU, таким образом эмуляция FPU работает в два раза быстрее, и это не подключая специальные методы эмулирования OS.

Компиляция 680x0 компонентов проходит перекомпиляцию в исходный код PPC с дальнейшим сохранением его в памяти и непосредственным управлением, то есть обратной перекомпиляцией при необходимости. Оптимизированный процесс трансляции кода, что позволяет применять технологию исполнения кода JIT. Многократные инструкции 680x0 комбинируются при этом в одну PPC инструкцию, что исключает запуск ненужных частей кода, уже содержащихся в памяти. Как правило, при применении данной технологии 680x0 приложения становятся при перекомпиляции не на 50%, а на 75% родные коду PPC, так, например родной PPC rc5 декодер "dnetc_ppc -bench rc5" выдаёт 755kkeys/sec, вместо 680x0 - 542kkeys/sec, на PPC 604e/233Mhz. Таким образом даже самый медленный BlizzardPPC/603e способен управлять приложениями быстрее, чем любой из существующих 68060. Анализ потока кода позволяет нам удалять громоздкие CCR вычисления, когда они не требуются.

Обработка и выполнение "Transport-bound" и "Compute-bound" задач проходит следующим образом:

  • "Compute-bound" задачи выполняются полностью с помощью транслятора, тот в свою очередь вызывает задачу из своеобразного контекстного списка с дальнейшей трансляцией кода и переходом на запуск;
  • "Transport-bound" задачи направляются на транслятор, при этом используя больший промежуток времени, затем задача ожидает указаний пользователя, или необходимого сигнала. Но наиболее важным моментом является то, что по поступлению сигнала кодовый блок запускается немедленно, при этом не ожидая трансляции, а если транслятор не доступен в данный момент - используется стандартная "статическая" эмуляция. Данные функции, представленные в эмуляции, служат для наглядного примера использования наиболее часто употребляемых функций идущих на транслятор.
  • Главным пунктом данного выполнения, является отсутствие задержек или простоев в системе.
Совместимость PPC библиотек реализована через управляющую ppc.library библиотеку, подобной библиотекой и реализована поддержка подсистемы WarpUP, реализованную эмуляцией WOSEmu.

Смешанная реализация exec.lib позволяет 680x0 и PPC-коду сосуществовать, не воздействуя друг на друга и работать полностью параллельно, как одна задача, при этом не требуя никаких исключений или временных выключений данной задачи.

Объединённая память, отводящаяся на задачи, и улучшенная мультипронизывающая поддержка позволяет поддерживать SystemV ABI, используя при этом fpu регистры для системных функций; с возможностью установки типа задачи, её стека и приоритета, что в свою очередь улучшает обработку памяти.

Новая, полностью переработанная, graphics.library под специфику графических карт и PPC процессора, реализует вывод графики в RTG режиме с применением альфа-канала и использованием 24 и 32-bit графики с улучшенными визуальными эффектами, так например, один ambient чего стоит, с применением рисования расширенных примитивов.

Переписанная diskfont.library способна выдавать шрифты уже с накладыванием функции anti-aliased, также реализована полная поддержка FreeType2 - векторных шрифтов с реализацией Type0, Type1, Type42, TrueType, и OpenType шрифтов, также с сглаживанием.

Реализованы Datatypes, являющиеся продолжением AmigaOS - средством, позволяющим программам обращаться с различными форматами данных, не имея непосредственно их поддержки. На данный момент уже реализованы: JFIF-JPEG, PNG, IFF-ILBM, BMP, GIF, PCX, PBM, Icons, Text и файлы в бинарном виде, также многие datatypes уже в разработке.

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

  • If: новый переключатель NOREQ/S, с возможностью скрытия запросчиков (IF EXISTS foobar: NOREQ);
  • Path: поддержка мульти-assign ADD/REMOVE;
  • Resident: DEFER/S, теперь программа способна использовать резиденты сразу, когда это необходимо;
  • SetEnv: SAVE/S опция, сохраняющая ваше переменное окружение ENVARC:.
Также можно отметить появление поддержки "*!" и "un*x", что заметно облегчит набор в командной строке; снято ограничение с длины буфера, то есть (командной строки, переменного расширения, расширений цитат), одним словом все ограничения сняты. Добавилось конфигурирование WShell, его меню, toolbar, и key shortcuts, полное преобразование unix путей, конфигурирование таблиц для команд/файлов/директорий, пересмотр буфера скроллбаром (подобно KingCON) и мощнейший мульти-оконный менеджер:
  • Несколько shell'ов могут запускаться в одном консольном окне;
  • Графические кнопки для переключения между ними или для создания новых;
  • Shell может быть отделён, а затем прикреплен к совершенно другой консоли.
А также полностью новые hook и query функции, встроенные в exec файл.

Перейдём к разбору файловых систем оси Морфея. Они представлены в виде FastFileSystemII, которая полностью совместима с FastFileSystem; SmartFilesystem, а также других файловых систем подобных PFS3 - которая кстати в свою очередь работает под эмулятором; Графическим интерфейсом для работы с FFS и SFS являются стандартные PPC программы (Salvage, Fix и другие продукты, способные работать с файлами на низком уровне), например из основных - Appendix.

Реализация CDDrive и файловые системы под CD, представлены как всегда очень широко: ISO9660, Multisession, Rockridge, Joliet.

MorphOS также может быть реализована через видео-подсистему CyberGraphX RTG, которая полностью совместима с CyberGraphX v4, только естественно использующая аппаратные средства PowerPC.

Intuition user interface - полностью снабжена GUI, причём каждый элемент имеет свой собственный bitmap и свою собственную заливку, совершенно независимую от других элементов окна; окна при скролинге сохраняют свою начинку, даже с функцией invisibitity, что делает вид окна просто фантастическим, также имеются функции иконофикации или добавления в контекстное меню; всё реализовано через screennotify.library, и так далее, вообщем с полной конфигурацией.

Что ж пришло время рассказать более подробно о самом рабочем столе MorphOS, графический интерфейс полностью построен на базе наилучшего на сегодняшний день GUI интерфейса - MUI, полностью асинхронного, таким образом система никогда не блокируется; не требуется наличие icon.library, хотя реализована поддержка всех известных ранее типов иконок, таких как стандартные, NewIcons, а также поддержка GlowIcons OS 3.5 и 3.9, а также реализован новый революционный 32-bit PNG формат вывода иконок с поддержкой альфа-канала для вывода прозрачных иконок. Имеется иконная, быстрая кэширующая система, уведомление файла о причастности той или иной иконки. Также вывод всех инокок независимо от типа в 24bit и 32bit режиме с полной поддержкой DefIcons. Весь графический интерфейс выводится с применением визуальных эффектов таких как: прозрачность, размытие, точная цветопередача с применением альфа-канала.

Полная системная локализация, с применением 64bit арифметики для обработки больших потоков информации, например, для работы с HDD, превышающих объём 4GB; наличие полноценного ARexx порта, автоматическое распознавание и форматирование винчестера при необходимости. Встроенная wbstart.library.

Появились новые возможности настройки системы: очень гибкий интерфейс, построенный полностью на системе классов MUI, что дало возможность объединить все настройки системы в один инструментарий;

Полная поддержка аудио библиотек через AHI v6, поддержка TCP/IP интернет протокола - AmiTCP v5. Более дружественная система с поддержкой глобального операционного фильтра и автоматическим кэшем имён серверов с дальнейшим доступом на них. Поддержка сетей с DMA буфером - Sana-II 2.0, также присутствует PPPoE для кабельных или ADSL модемных линий и автоматическая конфигурация BOOTP утилит. Полноценный доступ к серверным приложениям с реализацией стандартного инструментария (ping, traceroute, resolve, finger, netstat, т.д.). Поддержка Telnet и RSH клиентов. Полностью отфильтрованный пакет, не содержащий ничего лишнего, с полной реализацией управления посредством ARexx и прилагающейся документацией.

InstallerNG - стандартный инсталлятор, полностью переписанный с использованием множества новых функций и компонентов на основе нового MUI.

Как я уже говорил, графический интерфейс MorphOS построен на MUI. Так что же нового появилось? Теперь подсказки выглядят как полупрозрачные мыльные пузырьки, которые содержат ту или иную инструкцию; также надо отметить и объединённые настройки MUI интерфейса и сделанным отдельно MCC, что намного ускорило загрузку; поддерживается и "перепрыгивающее" меню, позволяющее настраивать системные окна и на других экранах. Таким образом, в окнах можно менять положение той или иной виртуальной группы, полностью новый дизайн меню, также позволяющий настраивать любое окно по своему усмотрению. Наряду с этим, поддержано колесо прокрутки мыши.

Видео-память используется только тогда, когда это необходимо, исключая таким образом всё лишнее, не связанное так или иначе с выводом графики, что также повысило обработку и вывод графики в целом.

MagicASL - просто прекрасный системный MUI Requester; полная поддержка 3D графики на низком уровне - Rave3D драйвер версии 1.6 API, данный драйвер утверждён почти всеми крупнейшими производителями видео-карт, полностью совместимый с ATI технологией. MorphOS осуществляет добавление расширений 3D полностью автоматически и прозрачно, подобно двойному буферу - ZBuffer, что даёт возможность системе полностью работать и с 2D графическими подсистемами.

Особенности работы 3D API драйвера:

  • Vertex вершины;
  • Глобальный захват;
  • Поддержка мульти-текстурирования;
  • Наложение тумана;
  • OpenGL blending;
  • Сглаживание;
  • Сжатие структур;
  • Трёхлинейное фильтрование структур;
  • Mipmapping;
  • Открытый доступ к текстурной памяти;
  • Структуры могут быть связаны на экране bitmap;
  • Deep Z буфер, больше или равный 24bits режиму;
  • Scaled draw контекст;
  • Полностью расширяемый при поддержке tags с включением дополнительных функций;
  • Законченный blackbox design.
Поддерживаемые аппаратные драйвера:
  • 3dfx Voodoo3 (Avenger);
  • SIS 6326;
  • 3DLabs/TI Permedia2 и 2v;
  • CVisionPPC (Permedia2);
  • BVisionPPC (Permedia2).
Jungl - 3D библиотека высокого уровня полностью совместимая с OpenGL 1.4; Goa - полная эмуляция Warp3D.

Также, наряду с операционной системой, поставляются и игры: Wipeout, Heretic2, Payback, GLQuake, ADescent и т.д.


Hosted by uCoz