Системное и прикладное программное обеспечение. Общая классификация ПО. Принципы построения ОС. Управление ресурсами: файловые системы, страница 9

Рассмотренное преобразование адреса называется страничным.

Механизм страничной адресации позволяет обеспечить гарантированную защиту данных в ОЗУ от несанкционированного доступа со стороны приложений. Это достигается наличием в ДП двух «комплектов» регистров: для системного и пользовательского режимов. Адресуются эти регистры, наряду с регистрами других внешних устройств (ВУ), через особую страницу физического адресного пространства.

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

1.4.2. Средства поддержки многозадачности в архитектуре IA32.

Для рассмотрения способа управления памятью необходимо привести основные регистры процессора. В процессорах архитектуры IA32 (32-разрядная архитектура Intel, которую реализуют процессоры, начиная с i386) имеются следующие регистры.

Регистры общего назначения (РОН): EAX, EBX, ECX, EDX, EGI, EDI, EBP, ESP. Первые четыре используются для хранения данных при вычислениях, последние – для инкрементных операций.

Сегментные регистры: CS, SS, DS, ES, FS, GS. Используются для адресации.

Указатель на текущую инструкцию EIP и регистр флагов EFLAGS.

Перечисленные регистры относятся к основным. Следующие регистры являются системными, непосредственный доступ к ним разрешен только при наивысшем уровне привилегий:

CR0 — регистр состояния, определяет режим работы процессора;

CR3 — база каталога страниц;

GDTR — указатель на глобальную таблицу дескрипторов сегментов;

TR — селектор сегмента статуса задачи.

Сегментные регистры и TR имеют 16 разрядов, GDTR — 48 разрядов, остальные регистры 32-разрядны.

Преобразование адреса в IA32 осуществляется (см. Рис. 7) в два этапа: сначала логический адрес, состоящий из 32-разрядного относительного адреса и 16-разрядного значения сегментного регистра преобразуется (эта операция называется сегментным преобразованием) в 32-разрядный линейный адрес, который затем страничным преобразованием заменяется 32-разрядным физическим адресом.

Рис. 7. Общая схема преобразования адреса в IA32.

Указанные преобразования различаются в разных режимах работы процессора: защищенном, виртуального-86 и реальном.

Рис. 8. Страничное преобразование в IA32.

Процесс страничного преобразования приведен на рис. 8. Его принцип такой же, как и в PDP–11, но добавлен один уровень, а именно, страницы сгруппированы по разделам. Это объясняется тем, что объем памяти может быть значительным, и число страниц может достигать 1048576. Кроме того, если регистр диспетчера памяти содержал только адрес страницы, то в каталогах страниц и разделов хранятся дескрипторы страниц, которые помимо адреса содержат дополнительные атрибуты, в частности бит действительности. Последний позволяет указать, что для данной страницы физическая память не выделена, и обращение к ней невозможно. При попытке обращения к такой странице возникает исключение. Это позволяет реализовать механизм виртуальной памяти, когда ОС выделяет память приложению не заранее, а по мере необходимости, причем возможно повторное использование одних и тех же областей физической памяти.

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

Рис. 9. Сегментное преобразование в IA32.

На рис. 9 приведена схема сегментного преобразования для защищенного режима в простейшем случае (с использованием глобальной таблицы дескрипторов).