- •Системное программное обеспечение
- •Раздел 1 Системное программное обеспечение
- •Тема 1.1 Классификация программного обеспечения
- •Тема 1.2 Операционная система
- •Тема 1.3 Процессы
- •Тема 1.4 Ресурсы
- •Тема 1.5 Память. Управление памятью
- •Тема 1.6 Виртуальная память
- •Тема 1.7 Планирование
- •Тема 1.8 Работа с файлами
- •Тема 1.9 Аппаратно-программные особенности процессоров
- •Раздел 2 Операционная система Windows
- •Тема 2.1 Введение в операционную систему Windows
- •Тема 2.2 Защищенный режим работы
- •Тема 2.3 Ресурсы исполнения программ
- •Тема 2.4 Многозадачность в ос Windows
- •Тема 2.5 Динамические библиотеки dll
- •Тема 2.6 Режим ядра
- •Тема 2.7 Системные механизмы ядра
- •Тема 2.8 Виртуальное адресное пространство
- •Тема 2.9 Драйверы ос Windows
- •Тема 2.10 api oc Windows
- •Раздел 3 Операционная система unix (Linux)
- •Тема 3.1 oc unix
- •Тема 3.2 Процессы в oc unix
- •Тема 3.3 Взаимодействие между процессами
- •Тема 3.4 Средства синхронизации потоков
- •Тема 3.5 Файловая система
Тема 2.8 Виртуальное адресное пространство
Понятие виртуального адресного пространства
Методические рекомендации
Все прикладные программы и подавляющее большинство системных программ являются перемещаемыми. Это значит, что в программе, подготовленной к выполнению (в том образе программы, который хранится на внешней памяти), обращения к памяти настроены на виртуальные адреса, не привязанные к адресам реальной памяти. Исходя из вышесказанного, для идентификации переменных и команд на разных этапах жизненного цикла программы используются.
Во время трансляции программы неизвестно, в какое место оперативной памяти будет загружена программа, поэтому транслятор присваивает переменным и командам виртуальные (условные) адреса, считая по умолчанию, что программа будет размещена, начиная с нулевого адреса.
Совокупность виртуальных адресов процесса называется виртуальным адресным пространством. Каждый процесс имеет собственное виртуальное адресное пространство. Совпадение виртуальных адресов переменных и команд различных процессов не приводит к конфликтам, потому что в случае одновременного присутствия переменных в памяти операционная система отображает их на разные физические адреса. При необходимости совместного доступа нескольких процессов к одному и тому же участку памяти операционная система использует специальный механизм для решения этой задачи, а общий участок памяти в этом случае называется разделяемой памятью (разделяемым сегментом памяти). Максимальный размер виртуального адресного пространства ограничивается разрядностью адреса, присущей данной архитектуре компьютера, и, как правило, не совпадает с объемом физической памяти, имеющимся в компьютере. В разных операционных системах используются разные способы структуризации виртуального адресного пространства. В одних операционных системах виртуальное адресное пространство представляется в виде непрерывной линейной последовательности адресов. Такую структуру адресного пространства называют плоской (flat) Виртуальным адресом является единственное число, представляющее собой смещение относительно начала виртуального адресного пространства, которое называется линейным виртуальным адресом. В других операционных системах виртуальное адресное пространство делится на части, называемые сегментами (секциями, областями). В этом случае помимо линейного адреса может быть использован виртуальный адрес, представляющий собой пору чисел (n, m), где n определяет сегмент, а m – смещение внутри сегмента. Существуют и более сложные способы структуризации виртуального адресного пространства, когда виртуальный адрес образуется тремя и более числами.
При наличии аппаратной поддержки системы виртуальной памяти позволяют работать с виртуальными адресными пространствами, размер которых превышает доступный размер оперативной памяти. Это достигается за счет хранения части программ и данных на внешней (дисковой) памяти и управлением миграцией данных между оперативной и внешней памятью.
Литература [1]
Вопросы для самоконтроля
1 Дайте определение виртуального адресного пространства
2 К чему приводит совпадение виртуальных адресов переменных и команд различных процессов?
