Skip to content

Latest commit

 

History

History
28 lines (17 loc) · 3.49 KB

File metadata and controls

28 lines (17 loc) · 3.49 KB

Виртуальная память

Этот проект представляет собой консольное приложение на языке C#, реализующее класс для управления виртуальной памятью. Объект этого класса моделирует массив целого типа очень большой размерности (>10000 элементов), используя файл подкачки для хранения данных.

Описание

При создании объекта класса инициализируется файл подкачки, который представляет собой двоичный файл прямого доступа. Файл содержит сигнатуру - два байта, представляющие символы ‘VМ’, и блоки (страницы) размерности 512 байт. Каждая страница состоит из элементов, соответствующих ячейкам моделируемого массива, и содержит байты значений целого типа. Перед каждой страницей находится битовая карта (массив байтов), в которой каждый бит соответствует ячейке моделируемого массива на странице. Значение бита 0 означает, что в эту ячейку ничего не записано.

Количество страниц в файле определяется путём выравнивания суммарного объема памяти в байтах моделируемого массива на границу страницы.

Битовая карта

Битовая карта - это структура данных, представляющая собой массив битов, где каждый бит соответствует определенной ячейке памяти или элементу данных. Каждый бит может иметь значение 0 или 1, что интерпретируется как "свободно" или "занято".

В контексте управления виртуальной памятью битовая карта используется для отслеживания заполненности или доступности ячеек памяти на странице. Например, если бит равен 0, это означает, что соответствующая ячейка памяти не содержит никаких данных и доступна для записи. Если бит равен 1, то соответствующая ячейка уже занята данными.

Преимущества использования битовой карты включают:

  • Экономия памяти: вместо хранения большого количества флагов или отдельных переменных для каждой ячейки, битовая карта представляет собой компактное представление состояния каждой ячейки.
  • Эффективность при обращении к памяти: операции чтения и записи значений битов быстрее, чем операции с отдельными переменными.