Операционные системы компьютеров, построенных на архитектуре PC, такие как Mac OS X, Windows 7 и Linux, позволяют одновременно запускать несколько программ. Разработчикам ОС удалось достичь этого, создавая видимость для каждой программы, что она единственная. Этот фокус получается сделать, используя такое понятие, как адрес памяти. Так как обычный компьютер имеет ограниченное количество памяти с настоящей физической адресацией, операционная система использует виртуальную схему распределения памяти на основе логического адреса. Использование технологии виртуальной адресации позволяет на компьютере запускать одновременно несколько программ.
Компьютерная память и программы
Компьютер запускает программы с использованием памяти со случайным доступом или RAM. В большинстве программ для выполнения арифметических действий и обработки данных используются переменные. Например, программа по расчету и начислению зарплаты использует такие переменные, как тариф почасовой оплаты, количество отработанного времени и фамилия работника. Каждая переменная имеет свой собственный адрес в памяти, что позволяет программе быстро найти место, где хранятся данные. Пока одна программа умещается в доступной памяти, все работает очень быстро и просто. Но стоит запустить большую программу или сразу несколько приложений, как возникают проблемы с их работой, и требуется более сложная схема управления памятью с использованием логических адресов. Кстати, многие программы для оптимизации Windows здорово помогают в подобных ситуациях.
Виртуальная память
В современных компьютерах уже давно используется интересная технология, в которой применяется такое понятие, как виртуальная память. Виртуальная память позволяет снять все ограничения, определенные небольшим объемом оперативной памяти. Для формирования виртуальной памяти используются ресурсы модулей RAM и жесткого диска, что позволяет использовать любые программы. С тех пор, как дисковое пространство на жестком диске стало очень дешевым, компьютер получил возможность использования намного больших программ, чем это было возможно в схеме с одной только RAM памятью. При таком подходе компьютеры с разным объемом оперативной памяти могут с одинаковым успехом работать с крупными проектами, требующими большого количества памяти.
Виртуальная память использует комбинацию физических и логических адресов. Так как современные программы созданы для работы с логическими адресами, то они абсолютно не замечают, какая память используется – физическая RAM или виртуальная память на нескольких устройствах хранения данных. При обращении к памяти из программ, операционная система переводит логические адреса в физические, которые могут находиться как в оперативной памяти, так и на жестком диске.
Физический адрес
Адрес в памяти, служащий для указания действительного размещения данных на компьютерном оборудовании, получил название физический адрес. Когда компьютер записывает данные по определенному физическому адресу в памяти, вы можете в любой момент обратиться к ним, зная его. Помимо модулей оперативной памяти, физический адрес может быть использован при работе с таким компонентом компьютера, как BIOS или basic input-output system. Этот чип содержит небольшие программы, записанные в BIOS еще на предприятии – изготовителе материнских плат. Другим устройством с физической адресацией к данным является жесткий диск, клавиатура и прочие компоненты системы. Но только при работе с памятью RAM может быть использована логическая адресация, и то косвенно.
Логический адрес
Логические адреса описывают виртуальный объем памяти, который может быть неограниченно большим. Некоторые современные системы построены на 64-битной архитектуре (основным элементом которой является 64-битный процессор), что позволяет использовать до 18 триллионов символов. Это намного больше, чем может уместиться на рядовом жестком диске. Каждая запущенная программа представляет себе, что она монопольно загружена в память, начиная с нулевого адреса и может себе позволить использование неограниченного ресурса памяти. Когда программа обращается в память за новыми переменными, операционная система транслирует логический адрес в физический, считывает данные и передает их программе. Операционная система может перемещать программы по физическим адресам памяти, в том числе на жесткий диск, в зависимости от обстоятельств. Сложный алгоритм ОС обязан отслеживать логический и физический адрес, используемый программами, для того, чтобы избежать конфликта между ними.