Отдельные адресные пространства
Управление памятью
С приходом 32-разрядной Windows управление памятью стало гораздо более приятным, чем раньше. Огромная путаница с сегментами и другими параметрами управления памятью в 16-разрядном режиме сегментной архитектуры Intel-процессоров полностью и бесповоротно ушла в прошлое
Отдельные адресные пространства
Win32 предусматривает более совершенную схему управления памятью. Двумя ее наиболее отличительными чертами являются возможности
· запускать приложенияв отдельных адресных пространствах
· и расширять объемдоступной для выделения памяти, используя файлы подкачки (свопирование).
Адреса, используемые приложениями Win32, часто называются логическими. Для каждого процесса Win32 доступен полный диапазон 32-разрядных адресов (с определенными ограничениями для некоторых операционных систем, причем эти ограничения не одинаковы для разных платформ Win32).
- Когда Win32 ссылается на данные по логическому адресу, используется аппаратное обеспечение управления памятью компьютера, которое преобразует этот адрес в физический. Один и тот же логический адрес может (и в большинстве случаев это так и происходит) преобразовываться в разные физические адреса для разных процессов.
Наиболее очевидным преимуществомиспользования отдельных адресных пространств является то, что процессы больше не могут случайно переписать программный код или данные, принадлежащие другому процессу. Неправильные указатели могут привести к сбою нарушившегося процесса, но уже не могут исказить данные в адресном пространстве другого процесса или операционной системы.
С другой стороны
Тот факт, что процессы больше не делят одного логического адресного пространства, усложняет разработку корпоративных процессов. Теперь невозможно передать адрес какого-то объекта в памяти другому процессу, чтобы то смог воспользоваться этим объектом. Этот адрес имеет смысл только в контексте посылающего приложения; в контексте же принимающего приложения он не имеет никакого смысла и представляет собой случайный участок памяти.
К счастью,
Win32 API предоставляет набор новых технологий для использования корпоративными приложениями. Одной из них является возможность использовать разделяемую память. По существу, разделяемая память является блоком физической памяти, который отображается в логическое адресное пространство нескольких процессов. Приложения могут взаимодействовать, записывая и считывая данные из блока разделяемой памяти.
Виртуальная память
Не все логические адреса приложения действительно отображаются в физическую память.
Операционная система использовать файлы подкачки – процедурахранения неиспользуемых блоков памяти на жестком диске и загрузка их при необходимости. Хотя файлы подкачки работают на несколько порядков медленнее оперативной памяти, их использование позволяет системе запускать больше приложений, а также запускать приложения, более интенсивно использующиеся ресурсы.
· Причина, по которой файлы подкачки могут эффективно использоваться, заключается в том, что большинство приложений выделяют редко используемые блоки памяти.
ОС и аппаратное обеспечение компьютера выполняют отображение логических адресов. Таблица, часто называемая таблицей страниц, содержит информацию о всех блоках или страницах памяти. В действительности эта таблица отображает блоки логических адресов приложения в блоки физической памяти или участки файла подкачки.Когда логический адрес отображается в реальную физическую память, отображение разыменовывается, и данные считываются или записываются соответственно запросу.
· Поскольку эта операция поддерживается аппаратным обеспечением процессора, она не требует никакого дополнительного времени для вычисления адреса памяти.
Если логический адрес отображается в блок системного файла подкачки, используется другая последовательность событий. Попытка сослаться на такой адрес приводит операционную систему в действие. Операционная система загружает требуемый файл подкачки в память, возможно, для освобождения места, выгружая другие блоки данных из памяти на диск. После загрузки соответствующих данных и обновления таблицы страниц управление возвращается приложению. Доступ к требуемой ячейке памяти теперь может быть успешно выполнен.
· Все это остается незаметным для приложения; единственным признаком того, что блок не находился в физической памяти, является задержка, вызванная операцией подкачки.
Дата добавления: 2017-01-26; просмотров: 1039;