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

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

Виртуальная память (ВП) - это абстракция, которая позволяет использовать программам больше памяти, чем есть физически в системе, благодаря использованию специального дискового пространства (например, SWAP раздел жесткого диска)

В статье рассмотрен самый распространенный механизм виртуальной памяти - страничная виртуальная память

Задачи виртуальной памяти

1) Отображение виртуальных адресов в физические для расширения адресного пространства

2) Разграничение памяти между процессами (процесс не может "затереть" адреса другого процесса)

3) Минимизация фрагментации - ситуации, когда блок памяти свободен. но его размера не хватает для выделения на процесс, эта память будет неиспользованной

Страничная виртуальная память (СВП)

СВП - организация памяти в виде блоков одинакового размера. Физическая и виртуальная память делится на блоки одинакового размера (страницы). В оперативной памяти хранится специальная структура - таблица виртуальных страниц (содержит номера всех доступных и используемых страниц)

Виртуальный адрес состоит из 2 частей

1) Номер виртуальной страницы - индекс в таблице страниц

2) Смещение внутри страницы

В реальных системах используется многоуровневая таблица страниц для уменьшения размера таблицы в памяти

Рассмотрим алгоритм работы механизма виртуальной памяти

1 Процессор (CPU) обращается к виртуальному адресу

2 MMU (Memery Management Unit) - отвечает за преобразовани виртуального адреса в физический, первым делом пытается найти физическийадрес в специальном кеше (TLB), если находит, то возвращает физический адрес, иначе обращается к оперативной памяти (на схеме "Память") и возвращает результат в случае успеза

3 Если в оперативной памяти нет физического адреса, который ссответствует виртуальному, то происходит исключение PAGE FAULT

4 Обработчик исключения PAGE FAULT проверяет валидность адреса и определяет физический адрес для виртуального, актуализирует таблицу страниц

Виртуальная память в Linux | Сетка — новая социальная сеть от hh.ru
repost

255

input message

напишите коммент

еще контент автора

Привет... читать далее
Привет  
В последнее время мне приходилось несколько раз валидировать .yaml файлы и преобразовывать их в питоновский объект
Написал шаблон https://github | Сетка — новая социальная сеть от hh.ru Привет  
В последнее время мне приходилось несколько раз валидировать .yaml файлы и преобразовывать их в питоновский объект
Написал шаблон https://github | Сетка — новая социальная сеть от hh.ru
repost

82

input message

напишите коммент

Привет Написал шаблон проекта FastAPI + SqlAlchemy +... читать далее
Привет 
Написал шаблон проекта FastAPI + SqlAlchemy + Alembic + Docker -- https://github | Сетка — новая социальная сеть от hh.ru
repost

62

input message

напишите коммент

Что выведет код на С++? Особенности работы ссылок

Рассмотрим код. Создается переменная типа int. Далее создается ссылка типа char на переменную i. Но есть... читать далее
Что выведет код на С?
Особенности работы ссылок | Сетка — новая социальная сеть от hh.ru
repost

287

input message

напишите коммент

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

Объем оперативной памяти компьютера ограничен. Возникают ситуации, когда процесс запрашивает больше памяти, чем есть... читать далее
Виртуальная память в Linux | Сетка — новая социальная сеть от hh.ru
repost

255

input message

напишите коммент

Dead lock

Самая известная проблема многопоточности - это Dead Lock (ситуация, когда 2 или более процесса находятся в состоянии... читать далее
Dead lock | Сетка — новая социальная сеть от hh.ru Dead lock | Сетка — новая социальная сеть от hh.ru
repost

556

input message

напишите коммент

еще контент автора

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь