Из этого материала надо вынести определения гранулярности и размера страницы.
Должно быть понятно, что это за параметры и где они используются. Думаю, что на конкретной функции это понятнее, чем просто вилами на воде. Ну и далее переходим к функции GetSystemInfo, которая понадобится в лабораторных работах.
Эту функцию надо освоить в обязательном порядке. И показать мне, что вы знаете, как она вызывается.
На компьютере.
Последняя функция будет использоваться в лабораторных работах для получения информации о том, сколько памяти потребляет ваша программа.
Ну и последнее, что сегодня рассмотрим. Вторичная память, которая имитирует память за счет использования дискового пространства, располагается в страничном файле или файле подкачки (paging file). Операционная система во взаимодействии с процессором сбрасывает содержимое части оперативной памяти в страничный файл и по мере необходимости подгружает (подкачивает) его порции обратно в память.
-------------------------------------------------------------------------
Здесь надо дополнительно кое-что написать. Подкачка непредсказуема по времени выполнения. Есть масса факторов, от которых она зависит.
Например, скорость обращения к основной памяти, скорость обращения ко вторичной памяти.
Кроме того, важное значение имеет фрагментация вторичной памяти. Я вкратце опишу, что такое фрагментация.
Ну буквально на пальцах.
Итак, представим, что в коде прописано множество идентификаторов, которые должны быть размещены в памяти на момент выполнения.
Для этого множества нужно в памяти найти свободную область.
В самом простом непрерывном случае (при непрерывном распределении памяти) в памяти должна найтись сплошная область памяти, в которую, грубо говоря, влезет это множество.
При дискретном распределении памяти множество распределяется на несмежным (не соседним) участкам памяти.
Ну так вот, крайне редко бывает, что размер участка в точности совпадает с объемом множества идентификаторов.
Как правило, это объем меньше размера участка и возникает свободное (незанятое) место (разность между объемом участка и объемом множества
идентификаторов), которое может быть насколько маленьким, что уже больше ни под какое другое множество не подойдет.
Таких участков с бесполезным пустым местом может быть много, и все они вместе приводят к тому, что память попросту теряется.
То есть вроде она есть, а фактически она недоступна, так маленькие кусочки свободной памяти разбросаны по отдельным областям.
Мало этого, даже если эти участки доступны. но самих участков много и для размещения массива приходится размещать его куски в несмежных кластерах (областях), то для получения доступа к массиву файловый указатель приходится постоянно перемещать скачками, что приводит к замедлению работы.
Такая в общем и целом хорошо известная беда.
Я всегда рекомендую раз в полгода, а то и чаще делать дефрагментацию, чтобы как минимум жесткий диск жил подольше.
Может быть, кого-то и миновала участь сия, но у меня жесткие диски падали не раз, не два и не три.
Это всегда неприятно и может быть чревато тяжелыми последствиями.
--------------------------------------------------------------------------------------------
Короче говоря, в итоге подкачка непредсказуема по времени выполнения и в ряде операционных систем запрещена.
Есть такие операционные системы реального времени, в которых главным критерием работоспособности системы является то, что она должна выполнять возникающие перед ней задачи в строго определенное время обслуживания. Любая подкачка приведет к срыву этого времени.
Вот такая есть особенность.