Важная информация

User Tag List

Страница 1 из 6 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 51

Тема: Контроллер многозадачной ОС

  1. #1
    Master Аватар для Conan
    Регистрация
    22.01.2005
    Адрес
    Moscow
    Сообщений
    1,995
    Благодарностей: 335
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Контроллер многозадачной ОС

    В разделе «ОСИ» очень бурно обсуждались (правда, сейчас что-то перестали) всякие диспетчеры памяти, вытесняющая и кооперативная многозадачности, и прочие достижения современного программирования. Но вот один вопрос почему то всегда обходили стороной: каким образом гипотетическая ОС должна взаимодействовать с реальными программами, играми, хитрыми защитами и прочим, не переносящим внешнего вмешательства софтом?

    Очень хотелось ознакомиться с идеями по прерыванию работы приложений (игр) и переходу в ОС, но к сожалению не нашел ничего детального. Были лишь предложения об использовании NMI. Но даже если использовать таймер и изменить процедуру обработки NMI, то останется несколько нерешенных вопросов:

    • Указатель стека в ПЗУ.
    • Очень низкий стек (при NMI наползет на данные).
    • Возврат в установленные приложением режимы прерывания (IM0-2).
    • Торможение приложения (по сравнению с обычным 3,5МГц режимом) во время выполнения ОС своих функций. Невозможность постоянной работы в Turbo при исполнении приложений (игр).



    Много лет назад, когда стала очевидна не универсальность iS-DOS (невозможность запуска и остановки неадаптированных игр), возникла идея сделать некий контроллер, который выполнял бы функции аппаратного диспетчера. Дальше идеи и нескольких экспериментов это не развилось, но кое-какие записи остались, и возможно будут любопытны с точки зрения современных подходов.



    Контроллер состоял из следующих блоков:

    1. Генератор NMI и обработчик его подтверждения.

    2. Логика управления памятью: (ОЗУ) для сохранения стека и (ПЗУ) обработчика NMI

    3. Детектор режима прерывания

    4. Порт управления TURBO.



    Немного подробнее о функционале блоков:

    1. (наименее проработанное) Запрос NMI возникал в момент перехода от экрана к нижнему Border, в случае если сигнал DOS был неактивен (не происходило обращение к ПЗУ Beta). Обработчик опрашивал M1, MREQ, RD и после подтверждения MNI вырабатывал сигнал для блока №2 и №4 (переключал компьютер в режим Turbo).

    2. Блокировалась запись в ОЗУ, и обрабатывались два цикла в память, путем подстановки двух 8-ми разрядных регистров. В них сохранялся текущий PC. Затем с адреса 0000h подключалась ПЗУ с программой обработчиком NMI. Обработка обязательно включала сохранение значения IFF2. Значения всех регистров и состояния, возможно сохранять либо в NVRAM таймера, либо в незадействованных (принадлежащих ОС) страницах ОЗУ.

    Затем устанавливалось значение регистра I, разрешались маскируемые прерывания и выдавался сигнал блоку №3.

    3. Блок устанавливал значение шины данных равным EFh (один резистор на D4) и генерировал INT. В зависимости от точки входа в процедуру обработки прерывания (28h, 38h или I+ EFh) определялся и сохранялся текущий режим прерываний. Далее управление передавалось ОС.

    4. Выполнение функций ОС происходило в режиме TURBO, при этом возврат в приложение синхронизировался либо с нижним Border, либо время исполнения кода ОС было ограничено 1/3 времени нижнего Border. При возникновении (стандартного) INT, происходило переключение из TURBO на нормальную скорость.



    Вот такая была идея. Возможно сейчас она покажется бредовой или непроработанной, но тогда она выглядела вполне живой…

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Благодарностей: 30
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    слишком сложно. 8-10 байт на стеке достаточно для запуска ос. небольшим количеством программ со стеком в ПЗУ/данных можно пожертвовать. или, как вариант, прерывать программу только после того, как начата обработка обычного INT - весьма вероятно, в этом месте стека достаточно

  4. #3
    Master Аватар для Conan
    Регистрация
    22.01.2005
    Адрес
    Moscow
    Сообщений
    1,995
    Благодарностей: 335
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А как быть с режимом обычных прерываний?

  5. #4
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Благодарностей: 104
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Смысл такой:

    если имеется защита, она должна работать
    А раз защита не терпит вмешателства внутрь себя, то просто его и не будет.
    Именно для этого имеется режим совместимости: ОСь теряет контроль над машиной за счёт повышения уровня совместимости со старыми программами.
    Если не совсем понятно что это значит, то вспомните в версиях 95/98 Windows была такая весчь как "перезагрузить компьютер в режиме MS-DOS".
    Насчёт автоматизации: дело в том, что подавляющее большинство старых программ не имеет данных для интерфейса компоновщика (см. http://zx.pk.ru/showthread.php?t=759 а так же http://zx.pk.ru/showthread.php?t=568), потому система сразу может выдать сообщения типа "рекомендуемый режим - режим совместимости" и после согласия соответственно сохранить себя и запускать программу на страх и риск запускающего (о чём собственно тоже предупреждается).
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  6. #5
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Благодарностей: 104
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Лично мё мнение таково,

    что обеспечивать любую совместимость надо именно программными средствами, а не аппаратными. Т.е. включать новую схему обработки NMI ради не совсем ясной выгоды в виде возможности прерывать защищённые программы не имеет смысла никакого, общественность наверняка это не поддержит, да и боятся владельцы реальных спектрумов (например, я) в живую машину с паяльником лезть. В новых готовых машинах будучи оно реализовано - пусть, но это не та база, на которой должна писаться система.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  7. #6
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Благодарностей: 30
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Conan
    А как быть с режимом обычных прерываний?
    не понял вопрос... как определить режим прерываний, в котором программа, чтобы правильно вернуться?

  8. #7
    Master Аватар для Conan
    Регистрация
    22.01.2005
    Адрес
    Moscow
    Сообщений
    1,995
    Благодарностей: 335
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SMT
    не понял вопрос... как определить режим прерываний, в котором программа, чтобы правильно вернуться?
    Да. Только не теряя на этом время (дожидаясь обычных прерываний).




    Цитата Сообщение от GriV
    Именно для этого имеется режим совместимости: ОСь теряет контроль над машиной за счёт повышения уровня совместимости со старыми программами.
    То есть ОС превращается в наворочанный загрузчик? Ибо даже если помечтать, что ее реализовали, то уж представить, что под нее переработали значительное число игр и другого ПО, ну просто невозможно.
    И становится не понятно, зачем все эти многозадачности, менеджеры памяти и сборщики мусора? Какие такие задачи будут вытесняться, кому будет выделяться память, и за кем будет убираться мусор?




    P.S. Греть паяльники не предлагалось, хотелось понять каким еще образом (кроме аппаратного) можно (и можно ли) решить проблемы совместимости ОС и основной массы ПО для Speccy.
    Последний раз редактировалось Conan; 01.06.2005 в 22:35.

  9. #8
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Благодарностей: 30
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Conan
    Да. Только не теряя на этом время (дожидаясь обычных прерываний).
    для legacy-приложений переключение только по запросу пользователя, время не критично (переброска базовых страниц памяти из верхних - тоже очень долгое дело). для ось-приложений, понятно, проблема должна быть решена стандартизацией

  10. #9
    Activist Аватар для acidrain
    Регистрация
    01.03.2005
    Адрес
    Russia, Krasnodar
    Сообщений
    433
    Благодарностей: 1
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Conan
    И становится не понятно, зачем все эти многозадачности, менеджеры памяти и сборщики мусора? Какие такие задачи будут вытесняться, кому будет выделяться память, и за кем будет убираться мусор?
    Собственно под старый софт ничего автоматизированного не сделать... так сходу. Но, думаю, все эти "навороты" нужны для успешного развития спека в плане программирования и появления софта. Старый будет, по мере возможности и надобности, адаптироваться и корректироваться под новые реалии. Вспомните, когда трдос появился с кассет быстренько все поскидывали на диски? Понимаю трдос хлам переделать несколько сложнее
    http://amigasc.nm.ru

    Free coder and hardwareman
    Amiga addicted

  11. #10
    Master Аватар для Conan
    Регистрация
    22.01.2005
    Адрес
    Moscow
    Сообщений
    1,995
    Благодарностей: 335
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SMT
    для legacy-приложений переключение только по запросу пользователя, время не критично
    Классный подход: назовем 99,5% имеющихся программ legacy-приложениями... Да еще скажем, что небольшая часть из них (внимание мины!) будет невозможно корректно прервать из этой ОС. Ну что же, это тоже подход к решению проблемы.



    Цитата Сообщение от acidrain
    Собственно под старый софт ничего автоматизированного не сделать... так сходу.
    А можно объяснить, в чем предложенное решение не рабочее (с технической точки зрения)?


    Цитата Сообщение от acidrain
    Вспомните, когда трдос появился с кассет быстренько все поскидывали на диски? Понимаю трдос хлам переделать несколько сложнее
    Вспомнили. Процесс, в котором принимали участие сотни людей по всей стране, затянулся на 4 года (1989-1994). Сейчас это повторить нереально (разве что если автоматизировать адаптацию к новой ОС).

Страница 1 из 6 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Контроллер клавиатуры для Скорпиона
    от caro в разделе Устройства ввода
    Ответов: 31
    Последнее: 23.11.2006, 09:23
  2. Beta Disk контроллер!
    от poison в разделе Внешние накопители
    Ответов: 17
    Последнее: 02.05.2006, 12:12
  3. Ответов: 76
    Последнее: 18.07.2005, 11:34
  4. Ответов: 47
    Последнее: 06.06.2005, 15:05
  5. Куплю контроллер ibm клавиатуры для скорпа!
    от sp0t в разделе Барахолка (архив)
    Ответов: 3
    Последнее: 29.03.2005, 14:37

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •