[an error occurred while processing this directive] [an error occurred while processing this directive]
Я свою сочинил :)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Александр К 28 февраля 2002 г. 19:29
В ответ на: а не портировали многозадачку (сверху на ROM-DOS) ? отправлено yes 28 февраля 2002 г. 18:45

Не могу сказать, что первый блин комом, но и удачным моё решение тоже не назовешь. Я теори не знаю (впрочем, этим хвалится не стоит), писал как понимал. Вытеснения задач нет, просто диспетчер с раздачей процессорного времени согласно приоритету и статусу задачи ну и всякие флажки и "зашаренные" области памяти, чтобы задачи могли друг другу данные пересылать и чтобы диспетчер мог их контролировать.
В зависимости от приоритета задачи устанавливался временной бюджет для её выполнения. Диспетчер сидел на 8-м прерывании (это тоже плохо, по хорошему надо бы NMI для этого использовать, иначе любой cli вешает всё). Порты - общие ресурсы, т.е задача не могла (точнее не имела права) напрямую получить управление портом, только через запрос к диспетчеру. Сильно не хватало механизма защиты памяти :( Любая задача может сделать крэш операционке. С чтением/записью файлов не пытался играть (если я правильно помню вы интересовались этим вопросом).
Когда-то давно видел такую заплатку к ДОСу. Правда за деньги.
Демострушка писала на диск, форматировала флопик, печатала на принтер , часики рисовала ну и считала что-то одновременно. Если надо, могу попытаться найти концы этого дела.

PS. Своё мыло отправил.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru