May 30, 2024

Урок: Управление памятью

Управление памятью

Управление памятью — одна из ключевых функций операционной системы, обеспечивающая эффективное использование и распределение памяти между процессами. В этом уроке мы рассмотрим организацию памяти, алгоритмы управления памятью и методы обнаружения и устранения фрагментации памяти.

Организация памяти: физическая и виртуальная память

  1. Физическая память:

Физическая память — это реальная оперативная память (RAM), установленная в компьютере. Физическая память ограничена и используется для хранения данных и инструкций, выполняемых процессором.

Пример физической памяти
+------------------+
|                  |
|    Оперативная   |
|      память      |
|                  |
+------------------+
  1. Виртуальная память:

Виртуальная память — это абстракция, позволяющая каждому процессу иметь своё собственное адресное пространство, которое может быть больше физической памяти. Операционная система использует механизмы, такие как страничная организация, для управления виртуальной памятью.

Пример виртуальной памяти
+------------------+      +------------------+
|   Процесс A      |      |    Процесс B     |
|  Виртуальная     |      |  Виртуальная     |
|    память        |      |    память        |
+------------------+      +------------------+
         |                       |
         v                       v
+------------------+      +------------------+
|    Физическая    |      |    Физическая    |
|      память      |      |      память      |
+------------------+      +------------------+

Алгоритмы управления памятью: сегментация и страничная организация

  1. Сегментация:

Сегментация — это метод управления памятью, при котором адресное пространство процесса делится на сегменты разного размера, соответствующие логическим блокам, таким как функции или массивы данных.

Пример сегментации
+------------------+
|   Сегмент 1      |
+------------------+
|   Сегмент 2      |
+------------------+
|   Сегмент 3      |
+------------------+

Преимущества:

  • Обеспечивает логическое разделение данных.
  • Позволяет эффективно управлять памятью для больших структур данных.

Недостатки:

  • Может привести к внешней фрагментации.
  • Сложность управления сегментами.
  1. Страничная организация:

Страничная организация — это метод управления памятью, при котором адресное пространство процесса делится на равные по размеру блоки, называемые страницами. Эти страницы отображаются на физические блоки памяти, называемые фреймами.

Пример страничной организации
+------------------+
|  Страница 1      |
+------------------+
|  Страница 2      |
+------------------+
|  Страница 3      |
+------------------+

Преимущества:

  • Устраняет внешнюю фрагментацию.
  • Обеспечивает гибкое управление памятью.

Недостатки:

  • Может привести к внутренней фрагментации.
  • Требует дополнительной памяти для таблиц страниц.

Обнаружение и устранение фрагментации памяти

Фрагментация памяти возникает, когда свободная память разбивается на мелкие блоки, которые не могут быть использованы для удовлетворения запросов на выделение памяти.

  1. Внешняя фрагментация:

Внешняя фрагментация возникает, когда свободные блоки памяти разбросаны по всему адресному пространству.

Пример внешней фрагментации
+------------------+
|  Занято          |
+------------------+
|  Свободно        |
+------------------+
|  Занято          |
+------------------+
|  Свободно        |
+------------------+

Методы устранения:

  • Компактирование: Перемещение всех занятых блоков памяти в одну сторону, чтобы объединить свободные блоки.
  • Сегментация и страничная организация: Использование методов управления памятью, которые снижают вероятность внешней фрагментации.
  1. Внутренняя фрагментация:

Внутренняя фрагментация возникает, когда выделенный блок памяти больше, чем требуется процессу.

Пример внутренней фрагментации
+------------------+
|  Занято  |       |
|          |       |
+------------------+
|  Занято  |       |
|          |       |
+------------------+

Методы устранения:

  • Разбиение на более мелкие блоки: Разделение больших блоков памяти на меньшие, чтобы минимизировать неиспользуемое пространство.
  • Динамическое распределение: Использование алгоритмов, которые выделяют память точно под нужды процесса.

Практическое задание

  1. Опишите разницу между физической и виртуальной памятью.
  2. Приведите примеры использования сегментации и страничной организации в реальных операционных системах.
  3. Объясните методы обнаружения и устранения фрагментации памяти.
Пример выполнения практического задания

## Задание 1: Физическая и виртуальная память

### Физическая память
- Это реальная оперативная память (RAM) компьютера.
- Ограничена объемом установленной памяти.

### Виртуальная память
- Это абстракция, позволяющая каждому процессу иметь своё собственное адресное пространство.
- Может быть больше физической памяти, использует механизмы, такие как страничная организация.

## Задание 2: Примеры использования сегментации и страничной организации

### Сегментация
- Используется в системах, таких как Intel x86, где адресное пространство делится на сегменты.

### Страничная организация
- Используется в большинстве современных операционных систем, таких как Windows, Linux и macOS, для управления виртуальной памятью.

## Задание 3: Методы обнаружения и устранения фрагментации памяти

### Обнаружение фрагментации
- Анализ свободных блоков памяти для определения степени их разбиения.

### Устранение фрагментации
#### Внешняя фрагментация
- **Компактирование:** Перемещение занятых блоков для объединения свободных блоков.
- **Страничная организация:** Устранение внешней фрагментации путем использования страниц и фреймов одинакового размера.

#### Внутренняя фрагментация
- **Разбиение на более мелкие блоки:** Разделение больших блоков на меньшие.
- **Динамическое распределение:** Выделение памяти точно под нужды процесса.

Этот урок охватывает основные аспекты управления памятью в операционных системах, включая организацию физической и виртуальной памяти, алгоритмы управления памятью (сегментация и страничная организация), а также методы обнаружения и устранения фрагментации памяти. Практикуйтесь для лучшего понимания и освоения материала.