Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 20000 рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2011, 18:53   #1
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
По умолчанию Многозадачность в режиме реальных адресов

Пытаюсь написать систему, которая бы обеспечила переключение задач в режиме реальных адресов. Сделал загрузку с дискеты FAT12 (позаимствовал из исходников KolibriOS). Создал обработчик прерывания таймера (8h), который просто сохраняет состояние текущей задачи в стеке, потом сохраняет указатель стека в специальном месте в заголовке задачи (адрес задачи + 2 байта), загружаю соответствующие данные для другого процесса и возвращаюсь из прерывания iret'ом. Т.к. выполнение задачи остановилось на прерывании, то возврат из прерывания, логично, возвращает в ту же точку задачи независимо от того, сколько процессов выполнилось за время прерывания.
Но что-то не работает, подозреваю, что неправильно задаю начальное состояние процессов. Нужно так задать начальное состояние, как будто задача была прервана с помощью прерывания, т.е. в стеке должны быть адрес возврата и регистр флагов. Вот как я это делаю:
Код:
    pushw task_0_entry_point
    pushw cs ; Сегмент кода задачи, у меня всё в одном сегменте
    pushf
Посмотрите пожалуйста, почему исходник не работает. Файл boot.bin точно грузится в правильное место, проверял простым "Hello, World!"-ом. Смотреть файл boot.asm, в нём весь код системы. В shell.asm и clock.asm - две задачи, которые должны исполняться параллельно.
Вложения
Тип файла: zip foo.zip (6.9 Кб, 11 просмотров)

Последний раз редактировалось anyx; 03.11.2011 в 19:02.
anyx вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многопоточность и многозадачность mephistophel Win Api 1 21.04.2011 08:34
Нужно описать (словами) несколько реальных коммерческих проектов GeNerik Фриланс 1 29.01.2011 01:19
Режим реальных адресов smileman Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 08.01.2009 01:47
Вставка картинки реальных размеров или хотябы в пропорции Mbus Microsoft Office Excel 4 02.12.2008 09:55
разработка ОС: многозадачность drRobert Помощь студентам 3 12.08.2008 07:38


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS