Зачем нужен защищенный режим? В первых моделях персональных компьютеров использовалась одна задача, которая имела монопольный доступ к разным устройствам. Этот режим называется однопрограммным. Со временем возникла необходимость запускать две разные задачи, которые работали бы в компьютере независимо друг от друга. Такой режим называют многопользовательским и был реализован ранее на больших машинах, например, IBM 360 и в советских ЕС. Как раз для организации такого режима на персональных компьютерах и был создан защищенный режим процессора, который характеризуется тем, что в памяти машины используются четыре уровня защиты, нулевой для операционной системы, третий - для прикладных задач. Задачи нулевого уровня имеют возможность вторгаться в области данных всей машины, третьего уровня - для использования только тех данных, которые определяются правами доступа, назначенными задачей. Второй и третий уровни пока не используются. Работая с виртуальным адресом, процессор выполняет большое количество дополнительных операций.

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

НЕ нашли? Не то? Что вы ищете?

Для сокращения времени на выполнение этих операций в процессоре имеются специальный дескриптор и кэш-память, которая позволяет выполнить эти преобразования. Зачастую даже программисту этот механизм неизвестен. Эти принципы были реализованы в системе Windows, поэтому можно одновременно набирать текст, слушать музыку, принимать данные через модем и так далее. Кроме того, в системе Windows используется и виртуальная память.

Виртуальная память – особое состояние защищенного режима (V86), позволяющая любой задаче использовать до 64 Гбайт, то есть использовать 16 сегментов по 4 Гбайт, в которых имеется специальный бит, указывающий на отсутствие или присутствие данного сегмента в оперативной памяти. Если сегмента не имеется в памяти, то он восстанавливается из внешней памяти (как правило, из жесткого диска), а долгое время не используемые данные загружаются во внешнюю память. Это организовано аппаратными средствами. Функционирование в режиме V86 возможно с параллельным выполнением других задач в защищенном режиме.

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

Физический адрес может иметь разный вид в зависимости от устройства, куда он направлен, например, адрес для оперативной памяти в виде одного числа либо в виде набора чисел, например, для жесткого диска, который определяется номером сектора, дорожки и цилиндра. Однако на практике программист не знает, где находится конкретно файл на диске или данные в оперативной памяти, поэтому он использует логический адрес, который операционная система преобразует в физический и обеспечивает доступ к данным.

Логический адрес может быть различных видов. Основным из них является сегментированный адрес, который также может быть различным в зависимости от вида режима работы центрального процессора. Об этом рассказывалось выше.

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

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

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

Как уже отмечалось, данные попадают в регистры. Регистр - это область памяти в процессоре, которыми может воспользоваться программист. В процессоре имеется несколько регистров, которые отличаются своими функциональными возможностями.

Регистры, которые хранят данные, полученные из оперативной памяти, имеют названия AX, BX, CX, DX (где Х - от слова eXtended - расширенный). Они разделены на две части: например, для АХ левая часть - AH и правая - AL, для BX - BH и BL и так далее. Размер регистра зависит от типа процессора. Первые модели имели 16 разрядов, а последние - 64. Регистры интересны тем, что определяют возможности центрального процессора. Чем больше они по размеру, тем больше данных можно обработать, но для этого должна быть соответствующее программное обеспечение. В первых моделях было 14 регистров. В современных компьютерах больше регистров, чем в первых моделях, часть из них видна для программиста, то есть он может ими воспользоваться, часть скрыта от программы, но используется модулями центрального процессора, и это отдельная тема. Современные процессоры программно переопределяют имя регистра, что повышает производительность центрального процессора. Переименование регистров используется для записи промежуточных результатов, что позволяет исполнять несколько инструкций одновременно.

Кроме регистров, в процессоре существует регистр флагов. В нем находится информация о состоянии процессора (отвечать ли на внешние прерывания, порядок обработки данных и пр.), адрес следующей команды, результат сравнения, переполнения при сложении и пр., что полностью описывает состояние задачи в текущий момент времени. Более подробное описание можно просмотреть в литературе, где описывается язык Ассемблер.

Основной элемент процессора - Арифметико-логическое устройство – ALU работает с целыми числами и может выполнять арифметические операции, такие, как сложение, вычитание, умножение и так далее. Кроме этого, он может производить ряд дополнительных операций, например, логический сдвиг, когда значения сдвигаются на один разряд влево или вправо, сравнение чисел и другие операции.

Первые процессоры (286) имели только арифметико-логическое устройство, и для работы с дробными числами требовался специальный микропроцессор с плавающей запятой FPU. Он был специализирован только для работы с данными числами и назывался сопроцессор, имел специальный разъем на материнской плате, куда и вставлялся. Если данного устройства не было, то операции выполнял обычный процессор, для чего вместо одной команды выполнялось несколько и время работы компьютера существенно увеличивалось. Потом стали выпускаться процессоры, которые содержали в себе две части: работающие с целыми и с плавающими (дробными) числами. Начиная с процессоров 486 поколения, сопроцессоры стали встраивать в основной процессор, хотя существовали первые модели и без них. Начиная с моделей Pentium, все процессоры укомплектованы сопроцессором с плавающей точкой. Отметим, что блок FPU работает с командами ММХ, то есть данные помещаются в регистры сопроцессора с плавающей точкой и над ними выполняются инструкции ММХ. В силу этого разделения можно одновременно выполнять операции в ALU и FPU, то есть работать с целыми и дробными числами.

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

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

Вентиляция

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12