Linux: разница между «пейджингом при основной ошибке страницы» и «обменом вручную»

Параметр -cтакже создает поведение «прокрутки мимо EOF» в некоторых обстоятельствах.

Без -c, когда вы приближаетесь к концу файла (оставшаяся часть после той части, которую вы видите в данный момент, меньше высоты экрана ), пробел прокручивается вниз достаточно поместить последнюю строку файла в последнюю строку экрана. пробел может быть эквивалентен j , если нужно показать только одну строку.

С помощью -c, пока вы еще не находитесь в EOF, пробел всегда прокручивает вперед на всю высоту экрана. Верхняя строка на экране после пробел будет строкой после той, что была внизу перед пробелом . Это может оставить часть экрана неиспользованной, и она будет заполнена маркерами ~.

В режиме -c, чтобы сделать последнюю строку единственной видимой строкой, достаточно GKпробел .

...если последняя строка в файле не шире ширины экрана, в этом случае вам нужно повторить K .

6
27.03.2020, 11:20
2 ответа

There is still majflt which will trigger paging out data to the disk.

Наоборот, :основные ошибки — это отказы страниц, которые можно устранить только путем подкачки в данных с диска.

Can we say there are two types of swapping on the OS?

Не совсем; различие здесь заключается в том, что выгрузка страниц(копирование содержимого памяти «куда-то еще», чтобы страницы можно было отбрасывать )может использовать разные резервные хранилища. Страницы в памяти имеют разные цели для подкачки :сопоставленные файлы обычно являются их собственным резервным хранилищем, большинству других страниц требуется файл подкачки или раздел в качестве резервного хранилища. Обмен относится к последним. Когда ядру нужно освободить страницу памяти, если оно хочет освободить немодифицированную страницу из файла, оно может просто отбросить ее, зная, что страница может быть восстановлена ​​из файла всякий раз, когда это необходимо. Когда необходимо удалить измененную страницу из файла, если этот файл отображается для чтения/записи без совместного использования, страница будет записана в файл перед удалением; опять же, тогда ядро ​​знает, что оно может восстановить страницу из файла. Все остальное нуждается в другой форме хранения, иначе его нельзя выбросить.

How do the two mechanisms work differently?

См. выше.

If there is always a paging mechanism working, why is there still a need to enable swap manually?

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

См. также Зачем Linux нужно пространство подкачки на виртуальной машине?

4
19.03.2021, 02:32

Две ваши цитаты имеют историческое/первоначальное значение своп. Википедия Пейджинг:

In the 1960s, swapping was an early virtual memory technique. An entire program would be "swapped out" (or "rolled out") from RAM to disk, and another one would be swapped in (or rolled in).

В руководстве Intel указано явно:

When paging is implemented properly in the operating-system or executive, the swapping of pages between physical memory and the disk is transparent to the correct execution of a program.

(Далее поясняется, что это прозрачно работает и для 16 -битного виртуального режима 8086...)

AMD также имеет очень читаемые части:

Finally, system software can use the paging mechanism to map multiple, large virtual-address spaces into a much smaller amount of physical memory. Each application can use the entire 32-bit or 64-bit virtual-address space. System software actively maps the most-frequently-used virtual-memory pages into the available pool of physical-memory pages. The least-frequently-used virtual-memory pages are swapped out to the hard drive. This process is known as demand-paged virtual memory.

Установка без замены на жесткий диск не рассматривается.В этом случае LFU должны быть записаны обратно в файл (, если таковые имеются ), или удалены (, если они чистые ).


Немного связана эта новая инструкция 64:

The SWAPGS instruction provides a fast method for system software to load a pointer to system data structures. SWAPGS can be used upon entering system-software routines as a result of a SYSCALL instruction or as a result of an interrupt or exception.

...

This exchange allows the system-kernel software to quickly access kernel data structures by using the GS segment-override prefix during memory references.

Это всегда восходит к этойсегментации:

Although segmentation provides a great deal of flexibility in relocating and protecting software and data, it is often more efficient to handle memory isolation and relocation with a combination of software and hardware paging support. For this reason, most modern system software bypasses the segmentation features. However, segmentation cannot be completely disabled, and an understanding of the segmentation mechanism is important to implementing long-mode system software.


Таким образом, вы можете сказать, что есть эта страница -мудрой подкачки из ОЗУ, и контекст -переключает сторону подкачки, отраженный реализацией 60-х годов, а также современной инструкцией SWAPGS.

0
19.03.2021, 02:32

Теги

Похожие вопросы