AmigaOS

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 17:01, 24 августа 2017.
AmigaOS
411.png
Screenshot of AmigaOS 4.1
Разработчик Commodore International, Hyperion Entertainment
Написанный на Assembly Language, BCPL, C
OS линейка Amiga
Рабочее состояние Current
Исходный код Closed source
Начальная версия 23 July 1985 года; 33 years ago (1985-07-23)
Последний релиз 4.1 Final Edition / 18 December 2014 года; 4 years ago (2014-12-18)
Платформы M68K: versions 1.0 through 3.9
PowerPC: versions 4.0 through 4.1
Ядро (тип) Hybrid[citation needed]
По умолчанию
пользовательский
интерфейс
Graphical (Workbench)
Лицензия Proprietary
Официальный веб-сайт www.amigaos.net

AmigaOS - это проприетарная операционная система, разработанная для компьютеров семейства AmigaOne. Впервые была изобретена Commodore International[1] и представлена на первой демонстрации компьютера Amiga 1000 в 1985 году. Ранним версиям AmigaOS требовался набор инструкций микропроцессора Motorola 68000 серий на 16 и 32 бит. Поздние версии были разработаны немецкой компанией Haage & Partner (версии 3.5 и 3.9), а затем Hyperion Entertainment (4.0 и 4.1). Микропроцессор PowerPC требуется для самого последнего выпуска, AmigaOS 4.

Интеллектуальная собственность Amiga разделена между Amiga Inc., Cloanto и Hyperion Entertainment. Авторские права на версии, созданные до 1993 года, принадлежат Cloanto. В 2001 году Amiga Inc. заключила контракт с Hyperion Entertainment о развитии AmigaOS 4, и и в 2009 году они предоставили им эксклюзивную, постоянную и всемирную лицензию на AmigaOS 3.1 с целью разработки AmigaOS 4 и последующих версий.

Структура

AmigaOS рассчитана на одного пользователя, но основана на упреждающей многозадачности ядра, называемого Exec. Оно включает абстракцию аппаратного обеспечения Amiga, диск операционной системы, называемой AmigaDOS, оконный интерфейс API называемый Intuition и файловый менеджер Workbench. Интерфейс командной строки, названный AmigaShell, также был включен в систему, хотя и он функционирует также, как оконный интерфейс. CLI и Workbench компоненты имеют одинаковые привилегии. В AmigaOS отсутствует механизм зашиты памяти.

AmigaOS состоит из двух частей: компонента прошивки, названного Kickstart, и части программного обеспечения, обычно называемого Workbench. Вплоть до AmigaOS 3.1, сочетающиеся версии Kickstart и Workbench обычно выпускались в одном комплекте. Однако, с AmigaOS 3.5, в первом выпуске после банкротства Commodore, было обновлено только программное обеспечение, и роль Kickstart несколько снизилась. Но обновление прошивки может по прежнему применяться за счет обновления загрузки системы.

Прошивка и загрузчик

Kickstart представляет собой прошивку загрузчика, обычно находящуюся в энергонезависимой памяти. Она содержит код, необходимый для загрузки стандартного аппаратного обеспечения Amiga и компонентов AmigaOS. Функции Kickstart сопоставимы с BIOS и основным ядром операционной системы в совместимых персональных компьютерах (ПК) IBM. Однако, Kickstart предоставляет больший функционал во время загрузки, чем можно было бы ожидать от ПК, например, полную оконную среду.

Kickstart включает в себя много основных частей операционной системы AmigaOS, например Exec, Intuition, часть от AmigaDOS и функционал для инициализации Autoconfig[2] совместимого аппаратного расширения. Последние версии Kickstart включают драйверы для IDE и SCSI контроллеров, порты для карт памяти и другое встроенное аппаратное обеспечение.

При запуске или сбросе Kickstart осуществляет диагностику и проверку системы, затем инициализирует чипсет Amiga и некоторые основные компоненты этой операционной системы. Затем он тестирует подключенные загрузочные устройства и пытается загрузиться с того из них, которое имеет наивысший приоритет. Если какого-либо доступного загрузочного устройства не будет, на экране будет отображаться сообщение с просьбой вставить загрузочный диск, обычно - дискету.

При запуске Kickstart пытается загрузиться с загрузочного устройства (дискеты или жесткого диска). Если с дискеты, то система считывает первые два сектора диска и выполняет все хранящиеся там загрузочные команды. Обычно этот код передает управление операционной системе (вызывая AmigaDOS и GUI), используя диск в качестве загрузочного тома. Любой такой диск, независимо от его содержимого, передается как "Загрузочный диск". Загрузочный блок можно добавить на пустой диск командой "установить". Некоторое развлекательное ПО содержит пользовательские загрузочные блоки. Это позволяет приложению, игре контролировать память и ресурсы без помощи AmigaOS.

AmigaDOS

AmigaDOS является частью операционной системы AmigaOS. Она включает в себя файловые системы, управление файлами и директориями, интерфейс командной строки, перенаправление файлов, консольные окна и так далее. Этот интерфейс содержит такие инструменты, как перенаправление команд, сценарии с примитивами структурного программирования и систему глобальных или локальных переменных.

В AmigaOS 1.x AmigsDOS была основана на TRIPOS, который написан на BCPL. Сопряжение с ним других языков доказало сложность задачи, и порт TRIPOS были не очень эффективным.

Начиная с AmigaOS 2.x, AmigaDOS была написана на C и Ассемблере, сохраняя полную совместимость с 1.x версиями, а также включало в себя третью часть, которая являлась заменой многих утилит, написанных на BCPL.

В последующем ARP также предоставил один из первых стандартизированных реквестеров файлов для Amiga с целью введения в рабочую среду Amiga для использования более дружественных UNIX-стилю шаблонов (форматов) функций в параметрах командной строки. Другими нововведениями были существенные улучшения в диапазоне форматов файлов, реализуемых системой как объекты ОС, что позволяло загружать в память ту или иную информацию только один раз, сохранять её в памяти и значительно уменьшить время загрузки системы для последующих применений.

В AmigaOS 4.0 в составе DOS отказались от наследия BCPL полностью, и, начиная от AmigaOS 4.1, она была переписана целиком с полной поддержкой 64-битной архитектуры.

Ядро

Exec - это многозадачное ядро AmigaOS. Оно предоставляет функционал для многозадачности, выделения памяти, обработки прерываний и обработки общих динамических библиотек. Оно действует как планировщик заданий, запускаемых в системе, обеспечивая упреждающую многозадачность с приоритетно-круговым планированием. А также Exec предоставляет доступ к другим библиотекам и высокоуровневому межпроцессорному взаимодействию с помощью передачи сообщений. Другие сопоставимые микроядра имели проблемы с производительностью из-за необходимости копирования сообщений между адресными пространствами. Так как Amiga имеет одно адресное пространство, передача сообщений Exec довольно эффективна.

Графический интерфейс

Родственная Amiga операционная система, называемая Intuition, которая обрабатывает ввод с клавиатуры и мыши, окон и базовых виджетов. Однако до AmigaOS 2.0 не было какого-либо стандартного взгляда на интерфейс, поэтому разработчикам приложений часто приходилось писать собственные виджеты с Intuition, предоставляющей минимум поддержки.

Необычной особенностью AmigaOS является использование нескольких экранов. Эти экраны концептуально похожи на виртуальные рабочие столы X Window System, но могут быть динамически сгенерированы прикладными программами. Каждый экран может иметь свое разрешение и глубину цвета. AmigaOS 2.0 также добавила поддержку публичных экранов. Вместо экрана Workbench, который является единственным разделяемым экраном, приложения могут создавать собственные экраны и делиться ими с другими приложениями. Приложение, отвечающее за общий экран, может запросить конкретный публичный экран по имени и системному вызову LockPubScreen(), и если экран будет найден, его дескриптор может быть передан системному вызову OpenWindowTagList(), и приложение откроет это окно. Это позволяет разработчикам писать приложения, которые позволяют пользователям указывать, на каком экране открыть это окно.

Гаджет в правом верхнем углу позволяет экранам вращаться. Экраны могут быть наложены друг на друга перетаскиванием вверх или вниз. Так как операционная система сохраняет все экраны в памяти одновременно, их перерисовка происходит мгновенно. В ранних версиях этот функционал обеспечивается набором пользовательских микросхем, но с AmigaOS4 было интегрировано новое вспомогательное аппаратное обеспечение, и экраны можно было перемещать в любом направлении. А также было возможно переносить иконки и ярлыки с экрана на экран.

Каждый экран имеет свой собственный RastPort дескриптор, также, как и окна. Это позволяет графическим приложениям рисовать непосредственно на экран вместо площади, ограниченной окном.

Файловый менеджер

Workbench - это графический файловый менеджер и окружение рабочего стола в AmigaOS. Хотя этот термин первоначально использовался для обозначения всей операционной системы, с выпуском AmigaOS 3.1 операционная система была переименована в Amiga, а впоследствии Workbench стали называть только менеджер рабочего стола. Метафора Workbench используется чаще, чем desktop; директории названы как drawers, exe-файлы как инструменты, data-файлы как проекты и GUI виджеты как гаджеты. Во многих других аспектах, интерфейс чем то похож на Mac OS, с основным рабочим столом, показывающим иконки вставленных дисков и разделов жесткого диска, и одним меню вверху каждого экрана. В отличие от мыши Macintosh доступной в то время, стандартная Amiga имеет две кнопки - правую кнопку мыши, оперирующей выпадающим меню с выбором. среда Workbench на самом деле не требуется для запуска приложений, и на практике большая часть ПО, особенно игры, загружается непосредственно из Kickstart, используя пользовательский загрузочный блок, чтобы сохранить полный доступ к памяти и ресурсам

Особенности

Вот некоторые из особенностей AmigaOS , которые позволяют легко управлять вашим компьютером . Некоторые из этих концепций были скопированы другими операционными системами:

  • Компактность: AmigaOS может работать с памятью в 64 МБ. Установка по умолчанию на диске занимает около 200 МБ.
  • Несложное устройство операционной системы: с четкой планировкой и легким пониманием имен вы можете легко понять, что все находится в AmigaOS и что она делает для вас. Ничто не скрыто от пользователя, и его действия не ограничены в AmigaOS.
  • Настраиваемый пользователем графический интерфейс: согласно своим предпочтениям пользователь может кардинально изменить внешний вид AmigaOS, системные звуки, отображение процесса запуска и реакцию на каждое действие пользователя.
  • Распознавание файла, основанное на его содержимом: можно назвать файл как угодно, даже не указав расширение. Например "мой файл". Не требуется добавлять расширение, чтобы пояснить, что из себя представляет файл, текст ли это или изображение, и так далее. AmigaOS сама анализирует его содержимое для установки его типа.
  • Логические названия: можно легко установить имена для директорий, расположенных где угодно, логически исходя из того, что в них хранится. Например: "Авто" может указывать на директорию "фотографии автомобиля", хранящиеся на диске.
  • Концепция RAM Disk: на AmigaOS есть специальный диск, называющийся RAM Disk, который представляет собой часть памяти компьютера. Эта область не является фиксированной. Она автоматически расширяется всякий раз, когда пользователь сохраняет в ней файлы. Это хорошее место для распаковки и установки программ оттуда, поскольку значительно уменьшает время установки.
  • Командная строка и графический интерфейс: и графический интерфейс, и командная строка могут использоваться для управления AmigaOS, файлами и программами. Оба интерфейса интегрированы друг с другом, поэтому пользователь может легко использовать командную строку в GUI или графические элементы в командной строке.
  • ARexx порты: в AmigaOS и программах от сторонних производителей эти порты позволяют одному приложению взаимодействовать с другими, и приложения работают вместе для нужд пользователя. AmigaOS также предоставляет легкую версию портов и возможность программирования на Python, который совместно с портами ARexx может контролировать приложения и AmigaOS.
  • Перезапуск только операционной системы: если нужно перезапустить систему, пользователь может это сделать без перезапуска всего компьютера.
  • Постоянные команды: команды могут быть постоянными, то есть они могут храниться в памяти и повторно использованы без загрузки.

Технический обзор

Библиотеки и драйверы

AmigaOS обеспечивает модульный набор системных функций с помощью общих динамически загружаемых библиотек, хранящихся или на диске в файле с расширением .library, или в прошивке Kickstart. Все функции библиотеки доступны через непрямую таблицу переходов, которая представляет собой отрицательное смещение к базовому указателю библиотеки. Таким образом, каждую функцию библиотеки можно обновить во время выполнения, даже если библиотека сохранена в ПЗУ. Ядро библиотеки AmigaOS называется exec.library, которая предоставляет интерфейс к функциям микроядра Amiga.

Драйверы устройств также являются библиотеками, но они реализуют стандартный интерфейс. Приложения обычно не обращаются к устройствам непосредственно как к библиотеке, но используют I/O функции, чтобы получать непрямой доступ. Так же, как и библиотеки, устройства могут представлять собой файлы на диске или быть в прошивке Kickstart.

Файловые системы, дескрипторы и AmigaDOS

Высокоуровневые части драйверов и ресурсных манипуляторов контролируются дескрипторами, которые не являются библиотеками, а задачами, и могут взаимодействовать посредством передачи сообщений. Одним из типов дескрипторов является файловый дескриптор. AmigaOS может использовать любую файловую систему, для которой был написан обработчик. Эта возможность используется программами типа CrossDOS — приложении, служащем для обмена файлами, и несколькими альтернативными файловыми системами типа OFS и FFS. Эти файловые системы позволяют добавлять новый инструментарий: журналирование или привилегии файлов, которых нет в стандартной операционной системе. Дескрипторы обычно передают название устройства в DOS, которое может быть использовано для получения доступа к периферии, которой соответствует этот дескриптор. В качестве примера можно привести функцию SPEAK: дескриптор, который имеет текст, переводимый в разговорную речь через программу синтеза речи.

Имена устройств нечувствительны к регистру строки с последующим двоеточием. После двоеточия может быть добавлен спецификатор, который дает дескриптору дополнительную информацию о том, к чему получают доступ и как. Для дескриптора файловой системы спецификатор состоит из пути к файлу в системе; для остальных дескрипторов, спецификатор обычно устанавливает характеристику потока ввода/вывода. Файловые системы используют в названиях устройств их порядковые номера в системе. Например, устройство DF0: по умолчанию связано с первым дисководом в системе, а DH0: — с первым разделом жесткого диска. Файловые системы также используют имена томов, следуя тому же синтаксису, как и с именами устройств: они идентифицируют конкретную среду в управляемом системе драйвере. Например, если дисковод DF0 содержит диск названный Workbench, то Workbench будет именем тома, которое может быть использовано для получения доступа к файлам в DF0. Если кто-то хочет получить доступ к файлу с именем Bar, расположенным в директории Foo на диске с именем Work на драйвере DF0, то ему нужно написать DF0:Foo/Bar или Work:Foo/Bar. Тем не менее, они не являются полностью одинаковыми, так как при использовании последней формы система знает, что желаемый том называется Work, а не просто любой том в DF0. Таким образом, всякий раз, когда к запрошенному файлу, находящемуся в томе Work, были попытки получения доступа без указания тома Work, это может дать что-то схожее со случаем Please insert volume Work in any drive.

Приложениям AmigaOS часто требуется получить доступ к файлу, не имея данных о его месте расположения (включая название устройства и метку тома): им известен только его тип, является ли файл библиотекой, документацией, локализацией сообщений программы и так далее. Этот вопрос решается на уровне стандартных логических устройств, связанных с файлами определённых типов. Поиск соответствующего файла производится в первую очередь в этих устройствах. По умолчанию в AmigaOS приняты следующие логические устройства:

  • SYS:, указывающее на носитель, с которого была загружена система. Создаётся автоматически при старте AmigaOS
  • LIBS:, указывающее на директорию, содержащую системные библиотеки. Обычно, SYS:Libs/
  • DEVS:, указывающее на директорию, содержащую драйвера. Обычно, SYS:Devs/
  • L, указывающее на директорию, содержащую хэндлеры. Обычно, SYS:L/
  • C:, указывающее на директорию, содержащую команды Shell. Обычно, SYS:C/
  • S: указывает на каталог со сценариями, в том числе запуска последовательности, которая выполняется автоматически во время загрузки, если она существует. Во время загрузки, это SYS:S, если существует, иначе - S: если не создан автоматически.
  • PROGRID: специальный правопреемник, который всегда указывает на директорию, содержащую файл, исполняющийся в данный момент. Итак, если вы запускаете SYS:Tools/Multiview и SYS:System/Format, PROGRID указывает на SYS: Tools и в это же время на SYS:System. Это функция была введена в Workbench 2.0.

Память подкачки в последних версиях

В AmigaOS 4 представлена новая система выделения оперативной памяти и механизм ее дефрагментации "на лету" во время бездействия системы. Она основана на методе slab allocation[3], а также там присутствует пейджер памяти, который управляет памятью подкачки и позволяет обмениваться большими объемами физической оперативной памяти с устройствами хранения как типом виртуальной памяти. Кооперативная подкачка была окончательно реализована в AmigaOS 4.1.

Примечания

  1. Commodore International, - это компания, долгое время бывшая заметным игроком на рынке персональных компьютеров. Объявила о банкротстве в 1994 году..
  2. Autoconfig, - это протокол автоматической настройки компьютеров Amiga, предназначенный для автоматического назначения ресурсов устройствам расширения.
  3. Slab allocation method, - это механизм управления памятью, предназначенный для эффективного выделения и распределения памяти объектам ядра.

Источники