Внутренняя и внешняя память используются существенно различными способами. Внутренняя (оперативная и постоянная) память является хранилищем программного кода, который непосредственно может быть исполнен процессором. В ней же хранятся и данные, также непосредственно доступные процессору (а следовательно, и исполняемой программе). Внешняя память обычно используется для хранения файлов, содержимое которых может быть произвольным. Процессор (программа) имеет доступ к содержимому файлов только опосредованно, через отображение их (полное или частичное) на некоторую область оперативной памяти. Исполнить программный код или обратиться к данным непосредственно на диске процессор не может в принципе. То же относится, естественно, и к ленточной памяти.
Однако реальная жизнь многообразнее этой упрощенной схемы, и на практике дисковая и оперативная память переплетаются сложным образом. Главные недостатки дисковой памяти — большое время доступа и низкая скорость обмена — устраняются с помощью виртуального диска, представляющего собой своеобразно используемую область оперативной памяти. В этой области хранятся файлы, и с точки зрения операционной системы (и, тем более, прикладной программы) она выглядит как обычный, но очень быстрый диск. Конечно же, его объем ограничен, и этот объем вычитается из объема физически установленной памяти, доступной процессору в качестве обычной оперативной. Кроме того, виртуальный диск в отличие от реального не является энергонезависимым. Более того, информация на нем не переживет даже перезагрузки операционной системы. Однако несмотря на эти ограничения виртуальный диск во многих случаях может повысить эффективность работы компьютера при интенсивном дисковом обмене. В операционной системе виртуальный диск реализуется загрузкой программного драйвера, как правило, с именем RAMDRIVE.SYS(в некоторых версиях — VDISK.SYS). Другим способом решения проблем быстродействия дисковой памяти за счет оперативной является кэширование дисков — хранение образов последних из использованных блоков дисковой памяти в оперативной в надежде на то, что вскоре будет следующий запрос к ним, который удастся удовлетворить из памяти. В Windows 9x/NT кэширование возложено на операционную систему, в MS-DOSкэшированием дисков занимается загружаемый драйвер SMARTDRV.EXE,но даже и без этого драйвера «неглубокое» кэширование выполняет операционная система (ОС), и этим процессом можно управлять с помощью строки BUFFERS^xxx файла CONFIG.SYS.Если затребованный с диска блок уже находится в одном из буферов, ОС не будет «беспокоить» диск, а удовлетворит запрос из буфера. Чем больше значение ххх, тем больше блоков может держать ОС в оперативной памяти, но область памяти для буферов, естественно, уменьшает объем памяти, доступной программам.
Основной недостаток оперативной памяти заключается в том, что конструктивно достижимый объем ее во много раз меньше, чем дисковой (пока что это было справедливо на всех ступенях технического прогресса). Решить проблему увеличения объема оперативной памяти за счет дисковой позволяет виртуальная память, которую можно считать кэшированием оперативной памяти на диске. Суть ее заключается в том, что программам предоставляется виртуальное пространство оперативной памяти, по размерам превышающее объем физически установленной оперативной памяти. Это виртуальное пространство разбито на страницы фиксированного размера, а в физической оперативной памяти в каждый момент времени присутствует только часть из них. Остальные страницы хранятся на диске, откуда операционная система может их «подкачать» в физическую память на место предварительно выгруженных на диск страниц. Процесс замещения страниц называется свопингом (swapping), а области дисковой памяти, выделяемые для этих целей, — файлами подкачки, или своп-файлами (swap file). Для прикладной программы этот процесс прозрачен (если только она не критична ко времени обращения к памяти). Для пользователя этот процесс заметен по работе диска в те моменты, когда не требуется обращение к файлам. Расплатой за почти безмерное увеличение объема доступной оперативной памяти является снижение средней производительности обращений к памяти и некоторый расход дисковой памяти на файл подкачки. Естественно, размер виртуальной памяти не может превышать суммы размеров ОЗУ и дисковой памяти. Виртуальная память с подкачкой страниц реализуется операционными системами защищенного режима (например, OS/2, MS Windows) на основе аппаратных средств 32-разрядных процессоров (386 и выше), а теперь и 64-разрядных.
Таково в общих чертах устройство подсистемы памяти. Здесь для упрощения изложения опущена система кэширования оперативной памяти, которая для современных процессоров чаще всего является двухуровневой. Об этом подробнее можно прочесть в главе 7. Кроме того, не упоминалось автономное кэширование дисковых устройств, реализуемое в самих накопителях и их высокопроизводительных контроллерах. Эта тема раскрывается в главе 9.
В общем случае в подсистему памяти обязательно входят оперативная память и энергонезависимая память, хранящая, по крайней мере, программу первоначальной загрузки компьютера. Дисковая память как таковая может и отсутствовать. Однако внешняя память с прямым доступом в том или ином виде — будь то действительно дисковые накопители, флэш-диск (не имеющий круглых, а тем более вращающихся деталей) или сетевой диск, отображающий часть диска физически значительно удаленного компьютера-сервера, — является обязательным атрибутом персонального компьютера. Благодаря применению дисковой памяти компьютер становится универсальным устройством, способным выполнять великое множество прикладных программ, интересующих пользователя. Эти программы загружаются в память именно с дисков. Без внешней памяти компьютер вырождается в узкоспециализированное устройство с ограниченным набором функций (например, функций эмуляции терминала или функций интерпретатора языка Basic), «зашитых» в его постоянную память, объем которой не может быть большим по технико-экономическим причинам.