Аппаратная защита адресов памяти в системах с теговой архитектурой
Более радикальные меры для защиты памяти (и не только) предприняты в системах с теговой архитектурой - МВК "Эльбрус", Burroughs 5000/6700/7700 и др.
Как уже пояснялось, в такой компьютерной системе каждое слово памяти имеет тег– информацию о типе данных, хранящемся в данном слове. Специальные теги имеют любые данные – например, числа (целые и вещественные), адреса, указатели на процедуры и др. Аппаратура при выполнении команды выполняет динамический контроль типов – проверяет, соответствуют ли теги операндов выполняемой операции. Если не соответствуют – прерывание.
Адрес в системе с теговой архитектурой представлен специальным адресным словом - дескриптором( descriptor ). Кроме тега и собственно адреса начала адресуемого массива в памяти, дескриптор содержит такжедлинумассива и 4 бита защиты – от чтения, от записи, от выполненияи от записи адресной информации. Формирование и изменение дескриптора возможно только средствами ОС в привилегированном режиме. Пользовательская программа не может ни сформировать, ни изменить дескриптор и работает со своей областью памяти как с массивом, защищенным тегом и дескриптором, образовывая от него подмассивы и формируя их дескрипторы (такое действие разрешено). Допустимая операция над массивом - индексация a[i],в которой аппаратно проверяется, что индекс iне выходит за границы массива a. Таким образом, обращение в "чужую" область памяти в такой системе принципиально невозможно. Невозможна также адресная арифметика (в стиле C / C++), так как попытка выполнения арифметической операции над словом с тегом дескрипторприводит к немедленному прерыванию.
Кроме дескриптора, имеется также косвенное слово (indirect word)– тегированный адрес для обращения к элементу данных одной командой, непосредственно по адресу (без индексации). Для косвенных слов фактически выполняются те же аппаратные проверки, что и для дескрипторов.
Подобная система защиты, с одной стороны, совершенна и стопроцентна, с другой, разумеется, требует больших накладных расходов на аппаратную проверку тегов, которую отключить невозможно, даже в случаях, если из кода программы очевидно, что никаких ошибок при работе с адресной информацией нет.
Организация аппаратной защиты памяти и процессора
Прерывания по таймеру
При исполнении в привилегированном режиме ОС имеет неограниченный доступ как к памяти монитора, так и к памяти пользователя. Команды записи значений в регистры baseи limitявляются привилегированными.
В системах с теговой архитектурой только привилегированная команда может сформировать новый дескриптор на область памяти, либо изменить поле в дескрипторе (например, адрес начала или длину).
Для организации периодических прерываний в системе имеется таймер –системный регистр, содержащий некоторое установленное специальной командой значение времени, которое уменьшается через каждый квант (такт) процессорного времени. Когда значение таймера становится равным нулю, происходит прерывание. Прерывание по таймеру используется для организации периодического опроса устройств, для реализации режима разделения времени (для откачки неактивных задач по истечении некоторого временного интервала) и для вычисления текущего времени.
Команда записи значения в таймер является привилегированной.
Ключевые термины
Bluetooth– интерфейс для беспроводного подключения (с помощью радиосвязи) к компьютеру мобильных телефонов, органайзеров, наушников, плейеров и многих других видов устройств.
BluRay – диск– разновидность компакт-дисков большой емкости (25 – 50 ГБайт).
COM (communication port, serial port, последовательный порт)– порт для подключения к компьютеру различных коммуникационных устройств, например, модемов.
DMA (Direct Memory Access) –контроллеры с прямым доступом к оперативной памяти, минуя использование специализированной памяти устройства.
EPP (Extended Parallel Port)– двунаправленный режим работы порта LPT, в котором он может работать не только для вывода, но и для ввода информации.
HDMI (High Definition Multimedia Interface)– интерфейс и порт. позволяющий подключить к компьютеру телевизор или другое видеооборудование, обеспечивающее наилучшее качество воспроизведения (HD –High Definition).
IEEE 1394 (FireWire)– порт для подключения к компьютеру цифровой видеокамеры или фотоаппарата.
LPT(от line printer), или параллельный порт–устаревший вид порта для подключения принтера или сканера, с толстым в сечении кабелем и большим разъемом, требующий предварительного выключения компьютера и устройства для их безопасного соединения.
PCI (Peripheral Component Interconnect)– наиболее распространенный тип системной шины, к которой подсоединены процессор, память, диски, принтер, модем и другие внешние устройства компьютерной системы.
RS-232- другое (более старое) название порта COM.
SCSI (Small Computer System Interface ) – интерфейс, адаптеры и порты для подключения широкого спектра внешних устройств – жестких дисков, сканеров и др., с возможностью обслуживания гирлянды устройств, подключенных к одному SCSI-порту и имеющих различные номера ( SCSI IDs ).
SCSI ID– номер устройства (от 0 до 9), являющегося частью гирлянды SCSI-устройств,подключенных к одному SCSI-порту.
TV-тюнер- устройство для приема телевизионного сигнала с антенны и показа телевизионного изображения на компьютере.
USB (Universal Serial Bus)– наиболее распространенный универсальный порт компьютера (с характерным плоским разъемом, размером порядка 1 см, с изображением трезубца), к которому могут подключаться клавиатура, мышь, внешний диск, принтер, сканер и другие внешние устройства.
Асинхронный ввод-вывод– ввод-вывод, выполняемый параллельно с выполнением программы пользователя.
Ассоциативная память (кэш – cache)– область памяти, размещаемая в более быстродействующей системе памяти и хранящая наиболее часто используемые элементы более медленной памяти вместе с их адресами, с целью оптимизации обращений к ним.
Базовый регистр (base register)– системный регистр, используемый для защиты памяти и содержащий начальный адрес области памяти, выделенной пользовательской программе.
Бит режима– бит, хранящийся в системном регистре и задающий текущий режим выполнения команд: равен 0 для системного режима и 1 – для пользовательского режима.
Вектор прерываний (interrupt vector)– резидентный массив в оперативной памяти, в котором хранятся доступные по номерам прерываний адреса подпрограмм-обработчиков прерываний (модулей ОС).
Виртуальный COM-порт– воображаемый COM-порт (в действительности не существующий и не имеющий разъема), который ОС как бы инсталлирует в систему при установке, например, драйвера для взаимодействия через Bluetooth или через кабель компьютера с мобильным устройством. Обычно имеет большой номер, например, 18.
Внешняя (вторичная) память– расширение основной памяти, обеспечивающее функциональность устойчивой (сохраняемой) памяти большого объема.
Гирлянда SCSI-устройств– цепочка устройств, подключенных к одному SCSI-портуи имеющих различные SCSI IDs(номера).
Дескриптор( descriptor ) – адресное слово в системах с теговой архитектурой; содержит тег дескриптор, адресначала адресуемого массива в памяти, длинумассива и 4 бита зашиты – от чтения, от записи, от выполненияи от записи адресной информации.
Дорожка (track) –часть жесткого диска, расположенная между двумя концентрическими окружностями на одном из составляющих его магнитных дисков.
Жесткий диск (hard disk)- разновидность внешней памяти,физически состоящая из твердых пластин из металла или стекла, покрытых магнитным слоем для записи, шпинделя и головок считывания – записи.
Инфракрасный порт (IrDA)– порт для подключения ноутбука к мобильному телефону (или двух ноутбуков друг к другу) через инфракрасную связь.
Контроллер устройства –специализированный процессор (устройство управления) для какого-либо устройства компьютерной системы - основной памяти или внешнего устройства.
Материнская плата (motherboard) –основная печатная плата компьютера, на которой смонтированы процессор и память.
Модем(аббревиатура от модулятор – демодулятор ) – устройство для выхода в Интернет и передачи информации по аналоговой или цифровой телефонной линии.
Опрос устройств (polling)– действия операционной системы по периодической проверке состояния всех портов и внешних устройств, которое может меняться с течением времени.
Основная (оперативная) память– быстродействующая память, к которой процессор имеет непосредственный доступ во время выполнения программы, хранящая программы и данные, информация в которой не сохраняется после выключения компьютера или перезапуска системы.
Очередь прерываний– системная структура ОС, обеспечивающая поочередную обработку всех возникших прерываний.
Пользовательский (непривилегированный) режим (user mode) –стандартный режим выполнения программ, в котором исполняются программы пользователей. В данном режиме запрещены некоторые привилегированные операции (например, изменение системных областей памяти и регистров).
Порт– устройство с разъемом и контроллером для подключения к компьютеру внешних устройств.
Прерывания по таймеру– периодические прерывания через определенный квант времени, предназначенные для опроса устройстви других необходимых периодических действий ОС.
Программа, управляемая прерываниями (interrupt-driven program)– программа, запускаемая автоматически при возникновении прерывания центрального процессора (например, операционная система).
Программируемое прерывание (trap ; дословно – ловушка) – прерывание, явно генерируемое с помощью специальной команды процессора (обычно для обработки ошибки в программе).
Регистр границы (limit register)– системный регистр, используемый для защиты памяти и содержащий длину области памяти, выделенной пользовательской программе.
Сектор– часть жесткого диска, ограниченная дорожкойи двумя радиусами.
Синхронный ввод-вывод– операция ввода-вывода, выполнение которой приводит к переходу программы в состояние ожидания, до тех пор, пока операция ввода-вывода не будет полностью завершена.
Системная шина (system bus) –коммуникационное устройство, соединяющее между собой все модули компьютерной системы - центральный процессор, память и контроллер памяти, внешние устройства и их контроллеры, - которые через системную шину обмениваются сигналами.
Системный вызов (system call)– явный запрос пользовательской программы к ОС путем вызова системной подпрограммы.
Системный (привилегированный) режим (system mode, kernel mode, monitor mode)– особый режим выполнения команд, в котором исполняются модули ядра ОС, допускающий выполнения ряда привилегированных операций, например, изменение системных областей памяти и регистров.