2012-06-29 6 views
-4

Я хочу запустить мою программу на C++ после очистки кеша, перед запуском моей программы я не знаю, что есть в кеше. Есть ли другой способ в C++ на unbuntu, через который я могу очистить свой кеш до запуска моей программы.Как выполнять операции кеша в C++?

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

+3

Как мог Microsoft Commerce Server каким-либо образом связать что-либо с Linux? – ildjarn

+1

Что у Ubuntu связано с MS Commerce Server? –

+2

Что вы пытаетесь достичь? – mfontanini

ответ

1

Вам не нужно скрывать кеш из вашей программы пользовательского режима (не ядрового режима). ОС (Linux, в случае ubuntu) предоставляет вашему приложению новое виртуальное адресное пространство без каких-либо «оставшихся вещей» из других программ. Без выполнения специальных системных вызовов ОС ваша программа даже не может попасть в память, используемую для других приложений. Итак, с точки зрения кеша, ваше приложение начинается с чистого листа, насколько это важно. Существуют системные вызовы cacheflush() (синтаксис отличается от ОС), но если вы не делаете что-то необычное для обычных приложений в пользовательском режиме, вы можете просто забыть, что кеш существует; это просто для ускорения вашей программы, и ОС управляет ею через MMU процессора, вашему приложению не нужно управлять им.

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

Смежные вопросы