TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.83K subscribers
Post #3188 1.9K
Распределние памяти: Paging (страничное распределение) и Segmentation (сегментное распределение)
(продолжение предыдущего поста)

1. Принцип разделения памяти

- Paging (страничное распределение):
- Логическое адресное пространство процесса делится на блоки фиксированного размера, называемые страницами (pages).
- Физическая память делится на блоки фиксированного размера, называемые фреймами (frames).
- На изображении видно, что логический адрес состоит из номера страницы (Page Number, 3 бита) и смещения (Offset, 10 бит), а физический адрес — из номера фрейма (Frame Number, 2 бита) и смещения (Offset, 10 бит).
- Используется таблица страниц (Page Table) для сопоставления номеров страниц с номерами фреймов.

- Segmentation (сегментное распределение):
- Память делится на сегменты переменного размера, которые соответствуют логическим частям программы (функции, объекты, массивы данных).
- На изображении логический адрес состоит из номера сегмента (Segment Number) и смещения (Offset).
- Используется таблица сегментов (Segment Table), где для каждого сегмента указаны базовый адрес (Base Address) и предел (Limit) — максимальный размер сегмента.
- Перед обращением к памяти проверяется условие Offset < Limit (если нет — генерируется прерывание Trap).

2. Структура адреса

- В Paging: адрес состоит из двух частей — номер страницы и смещение. Преобразование логического адреса в физический происходит через таблицу страниц.
- В Segmentation: адрес также состоит из двух частей — номер сегмента и смещение, но преобразование учитывает базовый адрес сегмента и его предел.

3. Преимущества

- Paging:
- Устраняет внешнюю фрагментацию (fragmentation) за счёт использования фиксированных блоков.
- Упрощает распределение памяти.
- Поддерживает эффективное перемещение (своппинг) и использование виртуальной памяти.
- Segmentation:
- Обеспечивает логическое разделение частей программы, что упрощает управление кодом и данными.
- Позволяет защищать и совместно использовать сегменты между процессами.
- Упрощает управление растущими структурами данных (например, динамическими массивами).

4. Недостатки

- Paging:
- Требует поддержания таблицы страниц, что влечёт дополнительные накладные расходы.
- Возможны задержки из-за частых обращений к таблице страниц.
- Segmentation:
- Переменные размеры сегментов могут приводить к внешней фрагментации.
- Управление таблицей сегментов может быть сложнее, особенно при большом количестве сегментов.

5. Применение

- Paging чаще используется в системах, где важны простота и производительность, а память управляется через унифицированные размеры страниц.
- Segmentation предпочтительна в средах, где структура программы и шаблоны использования памяти динамичны и разнообразны.

В качестве резюме: Paging ориентирован на эффективность и простоту за счёт фиксированных блоков, а Segmentation — на гибкость и соответствие логической структуре программы за счёт переменных сегментов.
Telegram METANIT.COM Распределние памяти: Paging (страничное распределение) и Segmentation (сегментное распределение) (продолжение в следующем посте)
  • 👍 5
  • ❤ 4
  • 🔥 2
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →