Включение многозадачности

Тема в разделе "WASM.OS.DEVEL", создана пользователем PodonOK, 14 июл 2010.

  1. PodonOK

    PodonOK New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2009
    Сообщения:
    23
    Запарился с включением многозадачности. Если кто разбирается в ней, реализуйте пойжалусто ее в моем исходнике (Желательно с 3-мя процессами и если возможно то в аппаратной и программной реализации). Свою ОС не пишу.) Разбираюсь в архитектуре процессора.
     
  2. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Не знаю, как для других, но для меня твоя просьба кажется не вполне нормальной. Во-первых, ты вроде бы сказал, что пытаешься разобраться в архитектуре процессора. Мы-то уже давно разобрались. Во-вторых, понятие многозадачность весьма объемное. Как я понял, тебя прежде всего интересует переключение задач. Так вот с точки зрения процессора это одна единственная инструкция far jmp (far call) на TSS или шлюз TSS/int на шлюз TSS/iret (выход из вложенной задачи). Про "программную многозадачность" процессор ничего не знает. Все остальное, включая подготовку корректных структур для процессора, - это интеллектуальный труд человека. И наконец, для большинства будет проще представить свои исходники, чем реализовывать что-то в рамках чужих исходников.
     
  3. PodonOK

    PodonOK New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2009
    Сообщения:
    23
    Грац, Вас, что разобрались! Во-первых, Я не прошу реализовывать мультизадачность с переключением задач по таймеру, с планировщиком задач и т.д. Мне нужен небольшой пример, в котором определяется 2-3 задачи и допустим "Задача 1" производит переключение на оставшиеся задачи, а они в свою очередь возвращают управление первой. Если проще предоставить исходники, то можете предоставить.
     
  4. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Задача 1
    Код (Text):
    1. next:
    2.   jmp TSS2:"ZZZZ"
    3.   jmp TSS3:"ZZZZ"
    4.   jmp next
    Задача 2 равно как и 3
    Код (Text):
    1. next:
    2.   jmp TSS1:"ZZZZ"
    3.   jmp next
     
  5. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Если первичной является Задача 1, то всю инициализацию следует выполнять в ее контексте перед меткой next, включая mov eax,TSS1 / ltr ax. Прерывания, естественно, во всех трех задачах должны быть запрещены, причем в первичной явно (cli).