Пытаюсь переключить i386 в мультизадачный режим, использую следующий алгоритм:
1 - подготавливаю дескриптор задачи TSS в GDT;
2 - загружаю селектор дескриптора задачи в TR ("ltr");
3 - сбрасываю флаг занятости "B" в дескрипторе текущей задаче;
4 - делаю дальний переход на текущую задачу.
Так вот, после пункта 4 процессор становиться. Кто знает, как грамотно запустить мультизадачность на i386 подскажите.
P.S. Если нужно больше информации, то спрашивайте.
Включение мультизадачности в i386
Модератор: Модераторы разделов
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Включение мультизадачности в i386
Не понятно...
Переключение в многозадачный режим выполняется взведением нулевого бита в CR0.
Переключение в многозадачный режим выполняется взведением нулевого бита в CR0.
-
Serg79
- Сообщения: 153
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
Serg79
- Сообщения: 153
Re: Включение мультизадачности в i386
Все, спасибо всем. Уже проехали.
-
Juliette
- Сообщения: 5058
- Статус: ROSA Lab
- ОС: Ubuntu LTS, Mandriva 2011
-
Serg79
- Сообщения: 153
Re: Включение мультизадачности в i386
Вы понимаете Juliette, мое изложение причины будет мало понятно, т.к. для этого надо знать принципы работы и способы организации работы процессоров семейства i386 в защищенном режиме.
А грабли были в том, что при сохранении контекста задачи в сегменте "TSS", регистр "cr3" не сохраняется. И при переключении обратно на эту задачу в регистр "cr3" загружались нули и все сыпалось, даже исключения не выскакивали. И еще, дальний переход с помощью команды "ljmp" на задачу которая сейчас выполняется, даже при сброшенном флаге "busy" дескрипторе задачи, так же останавливает процессор и не генерирует исключения защиты процессора.
Теперь, я думаю Вам стало понятно Juliette почему у меня не получалось перевести процессор в мультизадачный режим работы.
P.S. Если я когото оскорбил этим или предыдущим своим сообщением то я приношу свои извинения.
-
Juliette
- Сообщения: 5058
- Статус: ROSA Lab
- ОС: Ubuntu LTS, Mandriva 2011
Re: Включение мультизадачности в i386
Спасибо за разъяснения, но я как бы не лично для себя просила, а как раз для других, кто интересуется работой i386 в защищённом режиме и тех, кто в принципе интересуется программированием. Порядок есть порядок, у нас всё-таки принято описать решение, если вы его нашли самостоятельно, потому как у нас тут публичное место, и реплики в стиле: "А как разобраться вот с этим? А ладно, уже нашёл..." как-то странновато смотрятся. Вам самому, может, придётся в поиске здесь шуршать
Ничего личного, как всегда, ещё раз спасибо.