Каковы должны быть принципы новой ОС?
Я множество раз задумывался над таким вопросом - достаточна ли вычислительная мощность Спектрума для реализации на нем полноценной многозадачной ОС? И вообще, если рассматривать проблему шире, нужна ли новая ОС Спектруму? Для ответа на эти вопросы, давайте для начала постараемся определить для себя - что такое ОС на Спектруме и для каких целей она предназначена (или, дальше, должна быть предназначена)?
Этим вопросам была посвящена масса публикаций в различной прессе и они вызывали (и продолжают вызывать) довольно серьезный резонанс. Например, казалось бы, вполне очевидный вопрос - является операционной системой BASIC48? Можно вступать в продолжительную полемику, спорить об этом, но вывод один: BASIC48 - это язык программирования, в который интегрированы некоторые функции, присущие ОС. Однако сделано это несколько неудобно и, извиняюсь, даже можно сказать, коряво (вероятно, в силу "недописанности" BASIC48).
Теперь второй вопрос: является ли TRDOS полноценной ОС? Во-первых, давайте исходить из того, что это все-таки ОС, а вернее - ИСКЛЮЧИТЕЛЬНО ДОС. На сколько она является законченной, стабильной и "не-сырой" - это вопрос, который, пожалуй, и вызвал широкие дискуссии на эту тему.
То есть, основная проблема ОС-ДОС на Спектруме - это безнадежная устарелость концепций и приоритетов, заложенных в основу BASIC48 и TRDOS. Устарелость - это одно; глючность и недописанность - это то другое, что уже не позволяет молчать...
Цель создания этой темы - определить основные принципы, так сказть, "идеологию" ОС. На мой взгляд, нет необходимости в изначальность ставить графический интерфейс, и т.д. Необходимо создать ОС, ядро которой будет минимально. Ядро, которое посредством инкапсулирования функций распределения памяти (читайте "Менеджер памяти..." в этом разделе), и других, вызывающих конфликт моделей Спектрума, будет по-возможности конфигурированием "сглаживать" чрезмерное обилие стандартов и несовместимость.
Ядро должно быть, на мой взгляд, таковым, чтобы простым подключением "расширительных" (извините за "деревенскую" терминологию, просто хочется простым языком ;) говорить) модулей увеличивать мощность системы.
А что вы думаете по этому поводу?
Насчёт операционной системы и учёта особенностей отдельных Speccy
Здесь уже пролетал совет (в треде про менеджмент памяти), про то что прежде чем дискутировать на тему, желательно вообще то говоря в теме разбираться.
В любой нормальной книге по ОСям имеется чёткое разделение: для чего нужны ОСи, почему они создаются так, а не иначе.
Каждая ОСь создаёт т.н. виртуальную машину, которая позволяет абстрагироваться от особенностей вашей реальной (физической) машины.
Пример: пусть у вас на машине имеется N-ое количество памяти для работы программ. Тогда за счёт возможностей ОСи (вариант с файлом подкачки) количество доступной для приложения памяти увеличивается.
Учёт особенностей физической машины целиком ложится на плечи ОСи (именно поэтому в рассмотрении треда про менеджмент памяти я говорил что некоторые моменты абсолютно безразлично как реализовывать), виртуальная же машина, которая представляется для работы приложений/программ зависит только от версии ОСи, как правило чем выше версия ОСи, тем шире возможности виртуальной машины.
Теперь по задачам.
Задача, которая ставится вообще - создание нормальных средств разработки ПО и залог развития Speccy как платформы с средствами разработки.
Подзадачи: разработка ОСи, ЯВУ (языков высокого уровня)
Т.е. написание ОСи нужно не само по себе (не как самоцель) а как подзадача создания комфортного общения пользователя/программиста с компьютером.
Любое ядро ОС состоит из двух компонентов:
- Менеджер задач (даже для однозадачных систем)
- Менеджер памяти
Т.о. главное для любой ОСи - написать её ядро (менеджеры задач и памяти)
С менеджером памяти я думаю всё ясно, а с менеджером задач определённости меньше. Отсутствие аппаратных средств мультиплексирования приводит к "извращённым" методам реализации многозадачности (а то что она нужна я думаю всем очевидно).
Возможность переключать банки памяти только с верхних адресов тоже вносит неупрощение в задачу построения менеджера памяти и формата хранения приложений/процессов на устройствах внешней памяти.
Т.о. именно за счёт специфики общей модели Спектрума разработка менеджера памяти и менеджера задач должна вестись параллельно с разработкой всех остальных частей системы (драйверы устройств вввода/вывода).
Любая ОСь также имеет уровни.
1. Физический уровень - драйвера
2. Системный уровень - виртульная машина
3. Пользовательский уровень - консоль/GUI и т.д.
Физический уровень написать несложно (память, FDD, HDD и т.д.)
Пользовательский уровень конечен и вообще говоря пока не важен.
Системный уровень - его собственно и предстоит разработать.
P.S. К уровням не придираться, упростил.
Три подхода (концепции) к созданию ОС:
Выскажу свои мысли (правда кое-что я подглядел у других).
Три подхода (концепции) к созданию ОС:
Demo-подход.
1.Много всего сделано вокруг, но мне ничего не нравится, а самое главное среди этого нет моего или оно не самое крутое.
2.Хочу самореализоваться, занять место на пати, прописать свое имя… ну, в общем, что бы все удивились, и было круто.
3.Делаем что-то, что называем ОС. Она должна быть многозадачной, многопоточной, многоуровневой, многооконной, многоплатформенной, и еще много-много всего. Работать это должно не обязательно, главное обозначить. Затем выкладываем очередной макет (круто оформленный) на всеобщее обозрение и забываем про это дело навсегда. Какое то время все в отпаде.
iS-DOS-подход
1.Нет прослойки между «разношерстным» оборудованием и… приложениями, которые предстоит разработать и играми, которые предстоит написать или переписать.
2.Нужна универсальная операционная система, без «наворотов», но позволяющая реально задействовать имеющееся оборудование, начиная от различных принтеров и заканчивая жесткими дисками, модемами и CD-драйвами.
3.Собирается команда единомышленников (как правило, на коммерческой основе) и начинает многолетний труд. В процессе реализации приходится идти на массу компромиссов и упрощений. В результате получается OC пригодная для работы с десятком не самых лучших приложений, созданных специально под нее и некоторым количеством портированных игр. Заканчивается все, так же как и с iS-DOS, только намного быстрее, ибо на руках реальных пользователей нет прежнего кол-ва Speccy, а данная ОС делает невозможным запуск большинства игр или Demo. Да и оплачивать труд разработчиков никто не торопится.
Подход супер-загрузчика
1.Есть определенная модель Speccy (клон), у которого масса всяких наворотов в железе, да только вот используются они все разрозненно или не поддержаны вообще.
2.Нужно создать нечто, работающее исключительно с данным клоном, возможно вживив это «нечто» в его архитектуру. При этом в функции этого «нечто» должна входить возможность запуска игрушек для Speccy, ибо без этого клон будет неполноценным.
3.Создаем супер-коммандер с поддержкой HDD, CD и DVD. Забываем про многозадачность и универсальность, зато почти не теряем в совместимости. Такой коммандер живет очень долго (пока жив клон), но не получает сколько ни будь широкого распространения. Даже эмуляторщикам он не очень интересен, поскольку у них уже есть доступ к HDD, CD и DVD и масса других удобств.
Возможен (правда еще никем не опробован) еще и «подход эмуляторщика». То есть создание ОС пригодной для работы исключительно под специально настроенным эмулятором, но кроме «спортивного» интереса никаких побудительных моментов в этом случае нет.
Если вы знаете о других подходах (уже имевших место быть или реализуемых), поделитесь этими знаниями. Думаю, всем будет интересно.