scuter писал(а):
ну Привилегированные команды ладно, с этим понятно, но Iret то будет работать или нет или он будет работать как обычный ret
а дополнительные расширения, их можно использовать в любом режиме.
iret для возврата берёт ещё и флаги процессора из стека помимо адреса, так что если ты перепутаеш её с ret то сразу будет ошибка критическая.
Нарушение порядка пользования стеком всегда приводит к ошибке критической
Цитата:
или если будет использоваться команды LGDT, LIDT то вся многозадачность вылетает в трубу
LGDT, LIDT и многозадачность ни как не связаны
Вообще многозадачность это массив с задачами(программами), которые работают одновременно, так можно на это посмотреть. Но это только кажется что работают одновременно, из за того, что процессор за секунду может выполнить много задач и нам кажется, что они выполнены одновременно.
Если даже выполняется одна задача долгое время, то её прерывают, например постоянными срабатываниями прерываний(от сюда и название), прерывание записывает адрес задачи и флаги процессора в стек и запускает обработчик адрес которой записан в LIDT, в обработчике находится обычная функция, которая выполняется и выходят из неё iret
Кстати после вызова функции командой call в стеке только адресс и после её завершения результат её работы можно сохранить в флагах процессора
Например в момент выполнения какой то функции сработает прерывание от мыши, то та функция прервётся и нарисуется на экране курсор в новой координате, или от веб камеры картинка придёт на экран, и т.д. Прерывают постоянно все устройства, но пользователю этого не заметно
FPU это вообще мат сопроцессор с которым проц очень связан и для него есть свои команды, например если захочеш посчитать числа с плавающей точкой то придётся пользоваться им, так как сам процессор не делает этого. От режима процессора он не зависит