💀
Второй курс РПО
Операционные системы и среды
Операционные системы и среды
  • История: баг
  • ОС: компоненты
  • Монтаж Ethernet
  • Процессы: управление
  • Память: абстракция
    • Виртуальная память
  • Страничная и сегментная память
    • Работа с файлами и каталогами: все команды
    • Работа с дисками: все команды
  • Файловая система и I/O
  • Управление файлами и процессами
    • Практическая работа №10
  • Редактор и оболочка
  • Изучение эмуляторов
Powered by GitBook
On this page
  • Реализация страничной памяти
  • Политика загрузки и замещения страниц
  • Размер страниц и фрагментация
  • Сегментация
  • Реализация сегментации

Страничная и сегментная память

08.10.2024

PreviousВиртуальная памятьNextРабота с файлами и каталогами: все команды

Last updated 7 months ago

Реализация страничной памяти

Страницы памяти: Виртуальная память разбивается на страницы одинакового размера (512 байт — 64 Кбайт).

Виртуальная память делится на страницы одинакового размера (512 байт — 64 Кбайт). Эти страницы помещаются в физическую память, разбитую на страничные кадры. Чтобы обращаться к данным, используется таблица страниц, которая связывает виртуальные адреса с физическими.

Физическая память: Страницы загружаются в физическую память, разбитую на страничные кадры.

Таблица страниц: Используется для связи виртуальных адресов с физическими.

Процесс перевода адреса происходит через MMU — контроллер, который преобразует виртуальный адрес в физический, проверяет, находится ли нужная страница в памяти, и, если да, формирует физический адрес для доступа.

MMU (Memory Management Unit): Преобразует виртуальные адреса в физические и проверяет наличие страниц в памяти.

Политика загрузки и замещения страниц

Если страницы нет в памяти, она загружается с диска по запросу (вызов по требованию). Операционная система предсказывает, какие страницы понадобятся, и загружает их заранее (рабочее множество).

Для освобождения памяти ОС использует алгоритмы замещения:

  • LRU — удаляет страницу, которую давно не использовали.

  • FIFO — удаляет самую старую страницу.

Если рабочее множество больше доступной памяти, программа сильно замедляется (пробуксовка).

Размер страниц и фрагментация

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

Сегментация

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

Сегменты — это логические элементы (например, процедуры, массивы), которые могут иметь разные права доступа. Например, сегмент может быть доступен только для чтения или только для выполнения, что помогает защитить программу от ошибок.

Реализация сегментации

Сегментация может работать двумя способами:

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

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

Самое главное, краткая версия

Реализация страничной памяти

Виртуальная память делится на страницы (512 байт — 64 Кбайт), которые хранятся в страничных кадрах физической памяти. Преобразование виртуальных адресов в физические выполняет MMU (контроллер управления памятью).

Политика загрузки и замещения страниц

Если страницы нет в памяти, она загружается по запросу. Алгоритмы замещения:

  • LRU — удаляет давно неиспользуемую страницу.

  • FIFO — удаляет самую старую страницу.

Размер страниц и фрагментация

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

Сегментация

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

Реализация сегментации

  • Чистая сегментация — сегменты загружаются по запросу, вызывая внешнюю фрагментацию.

  • Сегментация с разбиением на страницы — сегменты делятся на страницы фиксированного размера, что снижает фрагментацию.

ВАЖНО

  • Сегменты: Логические блоки памяти (код, данные, переменные) с разными размерами и правами доступа.

  • Сегментация: Разделение памяти на независимые блоки (сегменты) с переменным размером и правами доступа.

  • Подкачка: Загрузка страниц в память по требованию из внешней памяти.