Защищенный режим процессоров Intel

Защищенный режим процессоров Intel

Хорошо известная система разработки программного обеспечения Borland C также может работать в защищённом режиме, при этом её производительность заметно возрастает. Перспективная операционная система Microsoft WINDOWS NT также использует защищённый режим работы процессора. Новая версия 6.0 операционной системы MS-DOS будет активно использовать защищённый режим работы процессора.
В настоящее время в области программного обеспечения отчётливо прослеживается тенденция ориентации на оболочку Microsoft WINDOWS, пользующейся огромной популярностью во всём мире. Однако не все знают, что Microsoft WINDOWS - это не только прекрасная графика, продуманный дизайн и удобство в работе. Все программы, разрабатываемые специально для WINDOWS, работают в защищённом режиме и они используют всю мощь современных процессоров и все возможности компьютера (в отличии от программ, ориентированных только на MS-DOS).
Поэтому если вы планируете составлять программы для WINDOWS, вам совершенно необходимо знать особенности работы процессора в защищённом режиме. Особенно, если вы будете разрабатывать драйверы или другие программы, работающие с аппаратурой, либо если ваши программы будут обратаывать большие массивы данных (порядка нескольких мегабайт или даже несколько десятков мегабайт). Наша книга может стать для вас первым шагом к программированию для мультизадачных операционных систем, таких как WINDOWS, OS/2 или UNIX.

Входим в защищённый режим
Сам процесс описан во многих книгах, посвящённых i80286, однако при этом обычно опускаются многие технические детали, связанные с аппаратным обеспечением компьютера. Знание этих деталей совершенно необходимо для успешного использования защищенного режима на реальных компьютерах.

Создание алиасного дескриптора для сегмента кода
Так как в защищённом режиме модификация сегмента кода с использованием селектора CS невозможна, для решения такой задачи необходимо создать дескриптор сегмента данных, который бы указывал на сегмент кода (т.е. имел бы такой же базовый адрес и предел). Такой дескриптор является алиасом дескриптору сегмента кода и может быть создан при помощи функции 000Ah.

Подготовка к переключению в защищённый режим
Подготовить в оперативной памяти глобальную таблицу дескрипторов GDT. В этой таблице должны быть созданы дескрипторы для всех сегментов, которые будут нужны программе сразу после того, как она переключится в защищённый режим. Впоследствии, находясь в защищённом режиме, программа может модифицировать GDT (если, разумеется, она работает в нулевом кольце защиты). Программа может модифицировать имеющиеся дескрипторы или добавить новые, загрузив заново регистр GDTR.

Установить дескриптор
Функция позволяет получить дескриптор по его селектору. Регистры на входе AX 000Dh BX Селектор сегмента, для которого требуется получить дескриптор. Регистры на выходе: CARRY 0, если функция выполнилась без ошибки, 1, если произошла ошибка.

Микропроцессор Z80
Z80 является однокристальным микропроцессором третьего поколения, оперирующим 8-разрядными данными и 16-разрядными адресами. Максимальный объём прямо адресуемой памяти и прямо адресуемого пространства ввода вывода – по 64 Кбайта (пространство ввода-вывода микропроцессора 8080 составляет 256 байт).

Экстремальный разгон процессора
Процессор представляет собой сложное устройство, состоящее из множества "разнокалиберных" узлов, гонимая способность каждого из которых сильно неодинакова, но все они "запитываются" от общего генератора тактовой частоты и потому менее гонимые блоки тормозят все остальные, особенно когда оказываются интенсивно задействованы каким-нибудь "тяжеловесным" приложением

Многоядерные процессоры и проблемы ими порождаемые
Многопроцессорные системы имеют свою специфику с которой программисты, работающие на IBMPC, долгое время оставались совершенно незнакомы. Поначалу это не создавало никаких проблем, поскольку большинство людей видели многопроцессорные системы только на картинках, и только единицы могли позволить себе иметь такую штучку на рабочем столе.



Переключение в защищённый режим
Сейчас мы не будем рассматривать процесс обработки прерываний в защищённом режиме - это материал следующей главы. Там же будет приведён и соответствующий пример программы. В программе, которую представим в этой главе, мы запретили прерывания на всё то время, пока процессор находится в защищённом режиме.

Изменить размер блока памяти, полученного из пула DOS
С помощью этой функции программа может увеличить или уменьшить размер блока памяти, полученного функцией 0100h. Регистры на входе AX 0102h BX Новый размер блока памяти в параграфах. DX Селектор модифицируемого блока. Регистры на выходе: CARRY 0, если функция выполнилась без ошибки, 1, если произошла ошибка. В случае ошибки регистр AX содержит код ошибки, полученный от DOS: 07h - разрушен блок MCB; 08h - слишком большой размер заказанного блока.

Описание процессора i8086 для программиста
Процессор 8086 стал первым 16-разрядным микропроцессором, разработанным фирмой Intel. Он был выпущен в 1978 году и содержал 29 тыс. транзисторов (для сравнения: в первых Pentium’ах число транзисторов превышало 3 млн.). Почти одновременно был выпущен микропроцессор 8088. С точки зрения программиста, эти микропроцессоры абсолютно идентичны, однако микропроцессор 8086 имел 16-разрядную шину данных, а 8088 – 8-разрядную. Благодаря этому обстоятельству микропроцессор 8088 мог легко использоваться совместно с большим количеством разнообразных периферийных микросхем, разработанных к тому времени и ориентированных на работу с 8-разрядными микропроцессорами, в том числе с микропроцессором 8080 фирмы Intel (советский аналог – К580ВМ80).

Многоядерные процессоры
Исчерпав резервы тактовой частоты, производители процессоров сначала предложили нам Hyper-Threading (два виртуальных процессора в одном), а затем и многоядерные процессоры (несколько полноценных процессоров на одном кристалле). И хотя до "эмуляции" настоящей многопроцессорной системы им еще далеко (многоядерные процессоры имеют одну шину, один контроллер прерываний и т.д.), дефекты программного обеспечения уже начинают проявляться.

Разбор полетов и крушений
Материнские платы и процессоры последних поколений поддерживают динамический разгон, основанный на показаниях термодатчика. Как только температура кристалла достигает первой критической отметки, материнская плата увеличивает обороты вентилятора, пытаясь снизить нагрев. Если же вентилятор не справляется и температура по прежнему продолжает расти, при достижении второй критической отметки процессор начинает либо вставлять холостые циклы, либо снижает тактовую частоту всех своих компонентов, что приводит к неоправданному падению производительности.