Привет всем. Мне интересно с чисто практической точки зрения то как процессор intel переключает задачи в защищенном режиме. Возможно есть какая то выделенная область оперативной памяти, где хранятся дескрипторы на точки входа в запущенные процессы. Как бы там ни было интересен сам механизм переключения между задачами, который использует процессор, ведь многозадачность осуществляется за счет архитектуры процессора, а не за счет ОСей, которые лишь используют эту возможность. Ведь если узнать как процессор манипулирует задачами, то возникает как мне кажется возможность залезть в адресное пространство чужих процессов, под ЛЮБОЙ ОС, либо отвести все процессорное время своей программе, опять же под любой ОС. Если кто что знает пишите.
Вы ошибаетесь. Конечно в Intel процессорах есть механизм переключения задач (ищите по контексту TSS). И, допустим, по некоторому прерыванию осуществляется переключение задачи - в полях TSS содержится все информация о контексте. Но, есть одно но. В современных ОС этот механизм не используется. Потому что быстрее, и выгоднее иметь свой собственный планировщик, который будет переключать задачи сам. Процессор сам не манипулирует. ПО ему говорит, когда и как переключать задачи. Возможность влезть есть всегда и это не новость. Посмотрите сколько руткитов и мальварей кругом.
SOA В архитектуре IA-32 для 16- и 32-разрядных защищённых режимов имеется механизм аппаратной многозадачности. Переключение задач в нём вызывается выполнением перехода на дескриптор состояния задачи (TSS), для чего могут использоваться прерывания или команды длинных переходов (которые меняют не только смещение, но и селектор сегмента -- собсно, именно он и играет роль, смещение в этом случае игнорируется). Однако этот механизм на практике не использовался из-за своей громоздкости и низкой эффективности (за исключением специальных случаев, но не о них речь, а об "обычной" многозадачности). Реальное переключение во всех сколько-нибудь распространённых осях выполняется вручную: регистры задачи, что снимается с процессора, сохраняется осью в определённом месте памяти, после чего производится загрузка регистров той задачи, которой нужно передать управление. В связи с непопулярностью аппаратной многозадачности в 64-разрядном режиме она уже не поддерживается, там переключение задач может быть выполнено только вручную.
Все пишут что используется програмная альтернатива TSS регистров процессора, но тогда возникает вопрос почему до 286, где собственно и появились 16 разрядные TSS регистры несмогли реализовать многозадачность(или об этом попросту никто не думал в то время). А не может ли быть такого, что все это заговор разработчиков осей и процев, с целью отвадить вирмэйкеров и прочих кодеров от TSS?(своеобразный EASTEREGG, о котором знают только спецслужбы, да и то не нашей страны)
Не хочу показаться занудой, но посоветую покурить Intel Developer's Manual. Часть 1 (basic architecture) для ознакомления и часть 3 для изучения.
СМОГЛИ: Windows 1.0 Windows 2.1 прекрасно работают на 8086 8088 (всякие там xt и их клоны) - на монохромном мониторе выглядит охрененно особенно заставка
SOA Уже ответили. Реально только в интеловских (ну или АМДшных) руководствах имеется более-менее вменяемая информация. Во-первых, как уже сказали, смогли -- были многозадачные системы. А во-вторых, ПК -- это Персональный Компьютер, и считалось, что больше одной программы одновременно выполнять не потребуется. Это, конечно, ошибка, которую по-настоящему исправили только с появлением Win NT, но это уже эпоха 80386 (правда, была ещё OS/2, которая вроде имела полноценную многозадачность на 80286, но широкого распространения она не имела, я с ней дела не имел, так что достоверно ничего не скажу). Принципиально же многозадачность можно было реализовать и на первых ПК (на 8088), а защиту памяти -- на 80286 (правда, основанную на сегментах, а не страницах, что не шибко удобно, но технически возможность была).
SOA Лично я баловался с Виндой 1.0.1 на PC/XT производства фирмы Xerox -- с 640 килами ОЗУ и винтом на 20 гигов, но с процом 8088 и монохромным графическим контроллером Hercules.