Итак, я читал о подкачке в операционных системах. Один из самых больших плюсов использования подкачки в качестве метода управления памятью (с которым я столкнулся) заключается в том, что он решает проблему внешней фрагментации (как в оперативной памяти, так и в хранилище) и позволяет размещать процессы в оперативной памяти в не- непрерывный путь. Однако для реализации пейджинга нам нужно было бы не отставать и искать в таблице страниц, которая может иметь большое количество записей (в некоторых случаях миллионы). И я полагаю, что при этом возникают большие накладные расходы (как по времени, так и по пространству).
Я не понимаю, почему мы не можем просто разделить программу на произвольное количество сегментов каждый раз, когда мы загружаем ее в оперативную память. Мы могли бы разделить ее таким образом, чтобы каждый сегменты «заполняют дыру» в оперативной памяти, если это необходимо, и, таким образом, решают проблему внешней фрагментации. Очевидно, что программа может быть загружена непостоянным образом, и нам нужно будет хранить только 2 адреса на сегмент (верхняя и нижняя граница) и может быть, какая-то таблица сегментов, чтобы поддерживать порядок.
Процитирую книгу, которую я читаю (концепции ОС — Абрахам Зильбершатц, Питер Бэр Галвин, Грег Ганье, 9-е издание): мейнфреймов через тех, что для смартфонов».
Я что-то упустил здесь? Как использование подкачки оправдывает накладные расходы? Нам действительно нужно отслеживать каждую страницу? Принимаются ли во внимание какие-либо другие факторы при выборе правильного метода управления памятью?