SymbOS

SymbOS
Разработчик SymbiosiS
Последняя версия 3.1 (30 декабря 2021)
Тип ядра микроядро
Состояние поддерживается разработчиком
Веб-сайт symbos.de
Логотип Викисклада Медиафайлы на Викискладе
Скриншот рабочего стола SymbOS, работающей на Amstrad CPC
Скриншот версии SymbOS для MSX

SymbOS — свободно распространяемая многозадачная операционная система для 8-разрядных бытовых компьютеров на основе микропроцессора Z80. В настоящее время существуют версии системы для компьютеров семейств Amstrad CPC, Amstrad PCW и компьютеров стандарта MSX2. Система может работать на оригинальных, не модифицированных моделях этих компьютеров. В отличие от ранних 8-разрядных операционных систем, она основана на микроядре, которое реализует вытесняющую многозадачность и работу с оперативной памятью объёмом до 1024 КБ. SymbOS имеет Windows-подобный графический интерфейс пользователя, имеет поддержку жёстких дисков объёмом до 128 Гб.

Общая информация

[править | править код]

Несмотря на то, что Z80 является 8-разрядным процессором, он способен к выполнению операционной системы с вытесняющей многозадачностью. Отсутствие у Z80 таких возможностей, как аппаратная защита памяти, несущественно для операционной системы подобного типа. Например, AmigaOS также не имеет защиты памяти. Возможность реализации многозадачной системы для процессора Z80 ранее была доказана ОС MP/M, однако она не была доступна для бытовых компьютеров.

В отличие от микропроцессора MOS Technology 6502, стек которого всегда находится в определённой области памяти, и не может быть перемещён, Z80 позволяет свободно изменять положение стека в памяти, что более или менее требуется для реализации вытесняющей многозадачности. Наличие альтернативного набора регистров позволяет заметно увеличить скорость переключения контекста между задачами. Ограничение адресного пространства Z80 в 64 КБ адресов может быть преодолено с помощью техники переключения банков. Таким образом компьютеры, подобные Amstrad CPC и PCW, MSX, Enterprise или SAM Coupé, могут работать с сотнями или тысячами килобайт памяти.

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

Управление задачами

[править | править код]

Для управления задачами была выбрана комбинация из вытесняющей и кооперативной многозадачности, что позволяет реализовать систему приоритетов для различных задач. Вытесняющая многозадачность означает, что задачи могут прерываться операционной системой по прошествии определённого промежутка времени, для выделения времени процессора другим задачам. Кооперативная многозадачность означает, что задача прекращает использование процессора самостоятельно. Это происходит, когда задача выполнила текущую работу, или ожидает какое-либо сообщение. Благодаря такой комбинации становится возможным назначение приоритетов. Задачи с низким приоритетом получают процессорное время только в те моменты времени, когда все задачи с более высокими приоритетами не работают.

Управление памятью

[править | править код]

Менеджер памяти делит весь объём ОЗУ на небольшие блоки размером 256 байт, которые могут назначаться динамически. Приложения всегда выполняются во втором банке ОЗУ 64КБ, память которого не используется самой операционной системой или видеопамятью. Это позволяет выделять непрерывные блоки памяти объёмом до 63 КБ.

Система управления банками позволяет операционной системе управлять памятью объёмом более полумегабайта, несмотря на то, что адресное пространство процессора Z80 ограничено 16-разрядной шиной адреса. С помощью банков реализуется прозрачный доступ к памяти и функциям, размещённым в других возможных 64-килобайтных банках.

Система сообщений

[править | править код]

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

Графический пользовательский интерфейс

[править | править код]

Графический пользовательский интерфейс SymbOS является полностью объектно-ориентированным. Внешним видом и ощущениями при работе он подобен Microsoft Windows. Он имеет хорошо известную панель задач, часы, и меню «START». Одновременно может быть открыто до 32 окон, которые могут перемещаться и изменять размер. Каждое из окон может иметь до 1000 элементов управления. Так как вся система написана полностью на языке ассемблера, интерфейс работает относительно быстро, даже в сравнении с современными системами, такими, как Intuition для Amiga.

Содержимое окон определяется с помощью элементов управления, представляющих собой основные элементы интерфейса, такие как полосы прокрутки, переключатели, строки текста, кнопки или графические элементы. Фоновые или невидимые области окон не требуют сохранения в специальный буфер. Если область требует восстановления отображения, её содержимое будет полностью перерисовано. Это делает графический интерфейс SymbOS менее требовательным к памяти по сравнению с большинством других 8-разрядных графических интерфейсов.

Файловая система

[править | править код]

SymbOS поддерживает файловые системы CP/M, AMSDOS, FAT12, FAT16 и FAT32, для всех платформ. В случае с FAT32, система может адресовать устройства хранения данных объёмом до 128 Гб. При этом существует возможность работы с файлами размером до 2 Гб, необычная для 8-разрядных систем. Благодаря поддержке FAT, обмен данными с другими компьютерами реализуется очень просто, так как большинство 32 и 64-разрядных операционных систем поддерживают все три перечисленные файловые системы FAT.

Приложения

[править | править код]

Для системы SymbOS существует несколько стандартных приложений, в основном напоминающих их известные аналоги в Windows и MacOS. Например, SymCommander (Norton Commander), SymPlay (QuickTime), SymAmp (Winamp), или игра Minesweeper.

Портирование и кросс-платформенные возможности

[править | править код]

Изначально SymbOS была разработана для Amstrad CPC. Но благодаря модульной организации, с чётким разделением между основными и платформо-зависимыми компонентами, перенос системы на другие компьютеры на основе Z80 может быть выполнен очень легко.

Поддержка компьютеров стандарта MSX (начиная с MSX2) была добавлена летом 2006. Также возможно создание версий для компьютеров Enterprise 128, Amstrad PCW и SAM Coupe, а также таких клонов ZX-Spectrum как ATM-turbo 2+ и ZX-Evolution, так как их возможности удовлетворяют требованиям SymbOS.

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

Разработка SymbOS изначально была экспериментом, имеющим целью выяснение возможности реализации многозадачной операционной системы с графическим пользовательским интерфейсом на 8-разрядном компьютере 1985 года выпуска. Существование операционной системы GEOS также оказало влияние, однако структура и возможности SymbOS не имеют сходства с этой системой. Релиз 2006 года показал, что подобная система, «Windows в миниатюре», может существовать на бытовом компьютере 20-летней давности только лишь с количественными ограничениями. SymbOS является одним из самых больших программных ретрокомпьютерных проектов последних лет. Одной из целей проекта являлось обеспечение (в том числе, с помощью различных аппаратных расширений) возможности организации процесса работы с системой, аналогичного современным PC.