четверг, 8 марта 2012 г.

Самоорганизация оперативной памяти

Для всех, кто более-менее сталкивался с вычислительной техникой, известно, что компьютеры производительнее, если они в своем распоряжении имеют более большие ресурсы памяти. Не важно какой — оперативной, внешнего диска, размер кэша, … Если приложению необходимы ресурсы, то система их предоставляет. Если памяти хватает, то найти непрерывный участок памяти проще. Если нужной памяти не хватает, то начинаются проблемы (вида расширения свопа или невозможности выполнения операции). Для решения есть два основных пути: расширение памяти и изменение организации работы. Здесь пойдет речь о применении этих двух способов на более высоком уровне абстракции, только уже понятном обычным пользователям.

Представление рабочего процесса и ресурсов

Когда мы выполняем какую либо задачу, то в это время мы манипулируем множеством каких-либо объектов. Если работаем за рабочим столом (оперативная память), то можем взаимодействовать с предметами (ресурсы), находящимся на поверхности стола. Если мы думаем о чем-то, то одновременно держим в голове (оперативная память) множество понятий (ресурсы). Или мы например выполняем перестановку мебели (ресурсы) в квартире (память).

Т.о. наглядное представление — есть область где могут находится предметы, и ими мы манипулируем.

В каких случаях операции происходят быстрее?

Не совсем и не всегда, но очевидно, что если предметов в области меньше, или они меньше занимают места, то скорость выполнения операции происходит быстрее. Если строители делают ремонт, то они быстрее и с большим удовольствием сделают ремонт в пустой квартире. Если у нас рабочий стол пуст, то на него мы можем быстрее поместить нужные предметы (ручку, тетрадь, книжку, …) и выполнить задачу. Если наше мышление свободно от обдумывания чего-то, то мы быстрее включимся в новую задачу.

Здесь выделю три основных критерия:

Общий объем оперативной памяти
Чем больше оперативная память, тем лучше. Лучше иметь более большой стол, больше ОЗУ на компьютере, и ещё два монитора вместо одного, уметь держать большее число понятий в голове.
Объем занятой памяти
Чем меньше занята память, тем лучше. Меньше предметов на столе, меньше лишних мыслей о чем-то, меньше директорий-файлов на диске, …
Меньшая фрагментация памяти
Лучше, когда предметы, которые находятся на столе, находятся рядом друг с другом, нежели разбросаны по всему столу. В таких случаях быстрее можно найти нужное место для новых предметов, легче управлять оперативными вещами (с которыми прямо сейчас работаем).

Что же можно сделать для улучшения?

Выгрузка после выполнения задачи

Закончили задачу — освободите оперативную память. Предметы на столе должны быть убраны, посуда в раковине помыта, вещи повешены в шкаф или отправлены в ящик для стирки, игрушки поставлены на полку, окна в браузере — закрыты.

Может это оченьвидно, но я регулярно наблюдаю во многих местах браузеры с десятками открытых окон, пирамиды непомытой посуды, разбросанные вещи, забитые до отказа директории Downloads, переполненные ящики писем и др..

В следующий раз, когда ресурсы понадобятся — в голове будет уже стоять другая задача. Чтобы вернуть все на место нужно будет выгрузить текущую и приостановить, доделать неочищенное, и потом опять вспомнить что нужно сделать. И обрадовать себя, а в общественном месте и других — по-моему, хорошая идея.

Очистка перед выполнением задачи

Например перед тем, как выполнить уборку дома, я произвожу очистку. Все целевые поверхности освобождаются от предметов или делается дефрагментация, выполняется две масштабные операции (веник и тряпка), далее все возвращается на место.

Перед новой когнитивной задачей мозг лучше освободить от того, что есть.

Перед работой за письменным столом убрать по возможности все лишнее.

Cброс в более медленную память

Оперативная память — это память, в которой все под рукой. Если мы выполняем задачу, и некоторые предметы не используем, а они понадобятся намного позже, то разумно переместить их в более медленную память. Неиспользуемые вещи убрать в шкаф. Закрыть приложение, сохранив работу на диске. Предметы на столе положить в ящик. Внезапно пришедшую мысль записать в блокнот.

Расширение памяти

Простой, но ресурсоемкий способ. Больше стол, больше монитор, больше шкаф, … Способ действительно прост, но в ряде случаев требует ресурсов ($) или усилий (времени на поддержания состояния), при этом мы ещё зачастую ограничены (дотянуться до всех предметов на бесконечно большом письменном столе сложно). Расширить оперативную память мозга можно например с помощью N-back, но это требует большого количества времени, сил и организации себя.

Разделение задачи на подзадачи

Принцип известен и прост. Если можно разбить задачу на две более малые, то их лучше сделать отдельно. Здесь же получается, что для подзадачи зачастую требуется меньше памяти, поэтому мы берем задачу A, разбиваем на B и C, загружаем в память B, решаем, освобождаем память, загружаем C, решаем, освобождаем.