Похожие презентации:
15. Виртуальная памяти
1. Виртуальная память
2. Виртуальная память
Виртуальная память — это механизм операционной системы, позволяющийзапускать программы, размер которых превышает доступный объем физической
оперативной памяти (RAM).
Она создает иллюзию наличия большего объема доступной памяти, чем реально
существует физически. Этот эффект достигается путем динамического
перераспределения страниц памяти между RAM и специальным разделом
жесткого диска или SSD, называемым файловым хранилищем свопа (swap file).
3. Виртуальная память
Swap file (или файл подкачки) — это специальный файл на жестком диске илитвердотельном накопителе (SSD), используемый операционной системой для
временного хранения данных, которые были выгружены из оперативной памяти
(RAM). Его основная цель заключается в расширении возможностей
виртуальной памяти компьютера.
4. Зависимость от виртуальной памяти
Виртуальная память играет ключевую роль в функционировании большинствасовременных приложений и операционных систем. Приложения постоянно
работают с большими объёмами данных и часто требуют больше памяти, чем
доступно физически.
Например, графические редакторы, базы данных, веб-серверы, игры и даже
обычные офисные программы могут потреблять значительные объемы
оперативной памяти. Однако физических ограничений по объему RAM
избежать невозможно, поэтому виртуальная память выступает своеобразным
буфером, позволяя приложениям эффективно управлять ресурсами.
5. Зависимость от виртуальной памяти
Примеры, как приложение взаимодействует с виртуальной памятью:1. Изоляция адресного пространства
Каждое приложение получает своё уникальное адресное пространство,
называемое виртуальным адресным пространством. Это пространство
представляет собой диапазон возможных адресов, используемых программой
для обращения к данным и инструкциям. Благодаря этому каждый процесс
видит свою собственную непрерывную область памяти, хотя фактически
физическое распределение памяти фрагментарно и ограничено.
6. Зависимость от виртуальной памяти
2. Механизм подкачки (Paging)Когда объёмы необходимой памяти превышают доступные ресурсы RAM,
операционная система начинает использовать файл подкачки на жёстком диске
или SSD. В результате некоторые редко используемые блоки памяти
(«страницы») выгружаются из оперативной памяти на диск. Как только
приложение обращается к такому блоку, данные подгружаются обратно в
оперативную память, а одна из менее востребованных страниц снова
отправляется на диск. Такой процесс называется page fault, и его повторение
существенно влияет на производительность.
7. Зависимость от виртуальной памяти
3. Алгоритм вытеснения страниц (Page Replacement Algorithm)Система должна решить, какую страницу удалить из оперативной памяти,
чтобы освободить место для вновь запрашиваемого блока. Для этого
используются разные стратегии:
• LRU (Least Recently Used) — удаляется самая давно неиспользованная
страница.
• FIFO (First In First Out) — первой удаляется та страница, которая была
помещена в память раньше всех остальных.
• Optimal Page Replacement — гипотетически идеальный алгоритм,
удаляющий страницу, которая дольше всего не понадобится процессу.
8. Зависимость от виртуальной памяти
Зависимость приложений от виртуальной памяти проявляется следующимобразом:
• Производительность:
Частое обращение к файловой подкачке негативно сказывается на
быстродействии, поскольку операции чтения-записи на диск гораздо медленнее,
чем работа с оперативной памятью. Поэтому приложения, активно
использующие большие массивы данных, начинают тормозить, если
недостаточно физической памяти.
• Масштабируемость:
Виртуальная память позволяет одновременно запускать большое количество
приложений, используя меньший объем реальной оперативной памяти. Таким
образом, удаётся поддерживать мультизадачную среду, где каждая задача
ощущает себя автономной и независимой от прочих процессов.
9. Зависимость от виртуальной памяти
• Совместимость:Использование виртуальной памяти обеспечивает совместимость разных версий
библиотек и зависимых компонентов, позволяя каждому приложению иметь
собственный экземпляр библиотеки.
• Управление ресурсами:
Разделение памяти на процессы помогает контролировать потребление ресурсов
каждым приложением. Так, если одно приложение исчерпало всю доступную
физическую память, остальные продолжают работать стабильно, пока хватает
виртуальной памяти.
10. Зависимость от виртуальной памяти
Примеры влияния виртуальной памяти на работу конкретных приложений1. Графические редакторы (Photoshop, Illustrator)
Такие приложения интенсивно обрабатывают изображения высокого
разрешения, занимающие десятки гигабайт памяти. Без виртуальной памяти
выполнение операций было бы невозможным либо крайне неэффективным.
Photoshop сохраняет изменения в промежуточных слоях на диск, снижая
нагрузку на оперативную память.
11. Зависимость от виртуальной памяти
2. Игры (AAA-игры, симуляторы)Современные компьютерные игры создают огромные игровые миры,
детализированные модели персонажей и окружающего мира. Они нуждаются в
больших объемах оперативной памяти для рендеринга графики и расчётов
физики. Используя виртуальную память, игра способна плавно обрабатывать
загрузку сцен и объектов без перегрузки RAM.
12. Зависимость от виртуальной памяти
3. Веб-приложения и серверы баз данных (MySQL, PostgreSQL)Серверы баз данных хранят гигантские наборы данных и выполняют запросы
пользователей. Виртуальная память здесь критична, так как запросы могут
требовать одновременного анализа множества записей, находящихся далеко
друг от друга. Подкачка страниц оптимизирует работу с базой данных,
распределяя наиболее важные записи в оперативной памяти, а менее значимые
— на диске.
13. Работа виртуальной памяти
Основные понятия и принципы работы виртуальной памяти:• Страничная организация памяти
Память делится на небольшие равные части, называемые страницами. Размер
страницы зависит от архитектуры процессора и обычно составляет 4 КБ или
больше. Когда программе требуется больше памяти, чем доступно в физическом
ОЗУ, система перемещает некоторые неактивные страницы из RAM на жесткий
диск, освобождая пространство для новых данных.
• Файлы подкачки (Swap-файлы)
Операционная система выделяет специальное место на диске, которое
используется для хранения временно выгруженных страниц памяти. Эти файлы
называются файлами подкачки (swap files) или областью свопа (swap area). Чем
быстрее работает устройство хранения, тем меньше задержка при обращении к
таким данным.
14. Работа виртуальной памяти
• Перевод страницПроцесс перемещения страниц памяти называется подкачкой (paging):
Если нужная страница отсутствует в оперативной памяти, операционная
система загружает её обратно из файла подкачки.
Если программа пытается обратиться к странице, находящейся вне
оперативной памяти, возникает событие, известное как страничная ошибка,
после чего ОС ищет свободную страницу и копирует нужную информацию
из swap.
• Адресация виртуальных адресов
Каждая запущенная программа имеет свое собственное адресное пространство,
состоящее из набора виртуальных адресов. Это позволяет программам
обращаться к памяти независимо друг от друга. Операционная система
транслирует виртуальные адреса процессов в физические адреса RAM
посредством специальных таблиц отображения.
15. Работа виртуальной памяти
Преимущества виртуальной памяти1. Эффективное использование ресурсов:
Программа может занимать значительно больший объем памяти, чем свободно в
настоящий момент.
2. Безопасность:
Каждый процесс изолирован своим собственным пространством памяти,
предотвращая конфликты и взаимные нарушения целостности данных.
3. Простота программирования:
Программисты могут писать код, предполагая наличие неограниченного
количества доступной памяти.
4. Поддержка многопоточности:
Многозадачность становится возможной благодаря быстрому переключению
контекста между разными процессами.
16. Работа виртуальной памяти
Недостатки виртуальной памяти1. Производительность:
Постоянное перемещение данных между памятью и диском замедляет работу
приложений, особенно если физическая память ограничена.
2. Фрагментация:
Со временем страницы становятся разбросанными по разным участкам
физического устройства хранения, увеличивая накладные расходы на
обращение к ним.
3. Использование пространства:
Даже небольшая активность может привести к созданию большого числа
записей в таблице трансляции, что снижает производительность обработки
запросов к памяти.
17. Работа виртуальной памяти
Реализация виртуальной памяти в современных системах:Современные операционные системы, такие как Windows, Linux и macOS,
используют продвинутые алгоритмы управления виртуальной памятью,
включая:
• Алгоритмы замещения страниц (например, LRU — Least Recently Used);
• Обработчики исключительных ситуаций при нехватке памяти;
• Автоматическое управление размером файла подкачки.
18. Использование виртуальной памяти
Правильное использование виртуальной памяти может значительно улучшитьпроизводительность и удобство разработки программ.
1. Работа с большими объемами данных
Виртуальная память позволяет легко оперировать с огромными объемами
данных, превышающими размеры физической оперативной памяти.
Разработчик может распределять память между физической RAM и
виртуальной памятью на жестком диске.
Пример:
В программировании часто применяются структуры типа memmap
(numpy.memmap в Python), позволяющие читать и записывать большие объемы
данных постепенно, не загромождая оперативную память.
19. Использование виртуальной памяти
2. Распределенные программы и параллелизмДля эффективного распараллеливания задач, например, в
высокопроизводительных вычислениях, программы могут размещать данные в
общей виртуальной памяти, доступной нескольким процессам или потокам.
Механизмы IPC (Inter-Process Communication) позволяют организовать обмен
данными между ними.
Пример:
Использовать разделяемую память (shared memory) в POSIX-системах для
распределения массива данных среди потоков:
20. Использование виртуальной памяти
3. Повышение надежности и стабильностиПоскольку виртуальная память обеспечивает изоляцию каждого процесса в
своем собственном виртуальном адресном пространстве, разработчики могут
гарантировать защиту своих приложений от несанкционированного доступа к
чужой памяти.
Например, попытка выйти за границы собственного виртуального адресного
пространства вызывает ошибку сегментаций (segmentation fault), предупреждая
об утечках памяти или неверных указателях.
Пример:
Простая защита от выхода за границу памяти в Си:
21. Использование виртуальной памяти
4. Модульность и оптимизация компиляторовСовременные компиляторы используют виртуальную память для реализации
эффективных методов выделения и очистки памяти. Многие высокоуровневые
языки программирования (Python, Java, Go) предоставляют удобные средства
автоматического управления памятью через сборщики мусора (Garbage
Collectors), работающие непосредственно с виртуальной памятью.
Пример:
Использование автоматической сборки мусора в JavaScript:
22. Использование виртуальной памяти
Рекомендации по использованию виртуальной памяти:• Не создавайте излишне мелкие объекты, которые будут многократно
перемещаться между RAM и виртуальной памятью.
• Контролируйте уровень фрагментирования виртуальной памяти, чтобы
минимизировать число операций переноса страниц.
• Используйте профилирование производительности, чтобы выявлять и
устранять "узкие места", вызванные активным использованием виртуальной
памяти.
23.
ЗаданияОтветьте на вопросы:
1) Что такое виртуальная память?
2) Что такое swap file?
3) Перечислите зависимости приложений от виртуальной памяти;
4) Назовите недостатки виртуальной памяти;
5) Приведите пять примеров влияния виртуальной памяти;
6) Назовите преимущества виртуальной памяти;
24.
ЗаданияПрактические задания:
1. Исследование структуры виртуальной памяти:
Создать программу на языке Python, который выводит следующую информацию
о состоянии виртуальной памяти:
• Общий объем виртуальной памяти.
• Объем физической памяти (RAM).
• Количество свободных страниц.
• Информация о текущем файле подкачки (размер, местоположение).
2. Работа с процессом page fault:
Написать простую программу на языке C/C++, которая намеренно генерирует
ситуацию страничного сбоя (page fault), вызывая попытку доступа к
отсутствующей странице памяти. Проанализировать состояние системы после
возникновения сбоев.
25.
ЗаданияПрактические задания:
3. Оптимизация потребления памяти простым приложением:
Создайте приложение, которое выполняет простые математические вычисления
с нахождением минимального, максимального и среднего значения из списка
введённых значений.
Проверьте, насколько сильно ваше простое приложение расходует память.
Попробуйте переписать приложение с использованием оптимизированных
структур данных и наблюдайте за изменениями потребления памяти и скорости
работы программы.
26.
ЗаданияПрактические задания:
4. Попытайтесь оптимизировать следующий код:
27.
ЗаданияПрактические задания:
4. Продолжение кода:
28.
ЗаданияПрактические задания:
4. Продолжение кода:
29.
ЗаданияПрактические задания:
5. Оптимизируйте код:
30.
ЗаданияПрактические задания:
5. Продолжение кода:
Информатика