Включение мультизадачности в i386

Модератор: Модераторы разделов

Serg79
Сообщения: 153

Включение мультизадачности в i386

Сообщение Serg79 »

Пытаюсь переключить i386 в мультизадачный режим, использую следующий алгоритм:
1 - подготавливаю дескриптор задачи TSS в GDT;
2 - загружаю селектор дескриптора задачи в TR ("ltr");
3 - сбрасываю флаг занятости "B" в дескрипторе текущей задаче;
4 - делаю дальний переход на текущую задачу.

Так вот, после пункта 4 процессор становиться. Кто знает, как грамотно запустить мультизадачность на i386 подскажите.

P.S. Если нужно больше информации, то спрашивайте.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Включение мультизадачности в i386

Сообщение serzh-z »

Не понятно...

Переключение в многозадачный режим выполняется взведением нулевого бита в CR0.
Спасибо сказали:
Serg79
Сообщения: 153

Re: Включение мультизадачности в i386

Сообщение Serg79 »

serzh-z писал(а):
19.09.2007 12:06
Не понятно...

Переключение в многозадачный режим выполняется взведением нулевого бита в CR0.

Нет, нулевой бит в CR0 переключает процессор в защищенный режим работы.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Включение мультизадачности в i386

Сообщение serzh-z »

Serg79 писал(а):
19.09.2007 12:15
Нет, нулевой бит в CR0 переключает процессор в защищенный режим работы.
Ммм... В таком случае что Вы имели в виду под многозадачным режимом?
Спасибо сказали:
Serg79
Сообщения: 153

Re: Включение мультизадачности в i386

Сообщение Serg79 »

Все, спасибо всем. Уже проехали.
Спасибо сказали:
Аватара пользователя
Juliette
Сообщения: 5058
Статус: ROSA Lab
ОС: Ubuntu LTS, Mandriva 2011

Re: Включение мультизадачности в i386

Сообщение Juliette »

Serg79 писал(а):
21.09.2007 07:57
Все, спасибо всем. Уже проехали.

пардон, что я вмешиваюсь -- но супер оригинально вы тут отписываетесь... хотя б ради приличий изложите, "куда" проехали. :wacko:
Спасибо сказали:
Serg79
Сообщения: 153

Re: Включение мультизадачности в i386

Сообщение Serg79 »

Juliette писал(а):
21.09.2007 09:14
Serg79 писал(а):
21.09.2007 07:57
Все, спасибо всем. Уже проехали.

пардон, что я вмешиваюсь -- но супер оригинально вы тут отписываетесь... хотя б ради приличий изложите, "куда" проехали. :wacko:
Вы понимаете Juliette, мое изложение причины будет мало понятно, т.к. для этого надо знать принципы работы и способы организации работы процессоров семейства i386 в защищенном режиме.

А грабли были в том, что при сохранении контекста задачи в сегменте "TSS", регистр "cr3" не сохраняется. И при переключении обратно на эту задачу в регистр "cr3" загружались нули и все сыпалось, даже исключения не выскакивали. И еще, дальний переход с помощью команды "ljmp" на задачу которая сейчас выполняется, даже при сброшенном флаге "busy" дескрипторе задачи, так же останавливает процессор и не генерирует исключения защиты процессора.

Теперь, я думаю Вам стало понятно Juliette почему у меня не получалось перевести процессор в мультизадачный режим работы.

P.S. Если я когото оскорбил этим или предыдущим своим сообщением то я приношу свои извинения.
Спасибо сказали:
Аватара пользователя
Juliette
Сообщения: 5058
Статус: ROSA Lab
ОС: Ubuntu LTS, Mandriva 2011

Re: Включение мультизадачности в i386

Сообщение Juliette »

Спасибо за разъяснения, но я как бы не лично для себя просила, а как раз для других, кто интересуется работой i386 в защищённом режиме и тех, кто в принципе интересуется программированием. Порядок есть порядок, у нас всё-таки принято описать решение, если вы его нашли самостоятельно, потому как у нас тут публичное место, и реплики в стиле: "А как разобраться вот с этим? А ладно, уже нашёл..." как-то странновато смотрятся. Вам самому, может, придётся в поиске здесь шуршать :girl_wink: Ничего личного, как всегда, ещё раз спасибо.
Спасибо сказали: