Как кэшируемая память работает на исполняемые файлы?

кроме того, tr, некоторые другие методы можно использовать

awk

awk '1' ORS= file

оболочка

while read -r line; do printf "%s " "$line"; done <file

sed

sed -e ':a' -e 'N;s/\n/ /;ba' file
3
13.04.2017, 15:13
2 ответа

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

Теперь, будьте ясны на различии между кэшем файла как показано свободным и любым другим видом памяти, которая может быть включена под управлением программой. Поскольку это не ясно, что Вы подразумеваете "под кэшируемой памятью, не может восстановить объекты, которые были динамично выделены". Любая память, используемая приложением, не связана с кэшем файла. Никакие выделения памяти любого вида приложением не кэшируются кэшем файла. Кэш файла является только посредником между диском и ОС.

Отвечать на строгий вопрос: "Действительно ли это - только байт-код (или инструкции в случае сценариев), который кэшируется затем?"

Кэш файла только кэширует октеты на диске. Это не заботится о том, какая память используется приложением.

3
27.01.2020, 21:20
  • 1
    я разъяснил то, что я подразумевал под кэшируемой памятью в вопросе. Таким образом, если я понимаю правильно, что я вижу под "кэшируемым" столбцом, только данные, которые были считаны из файлов и не каких-либо данных в поршне (например, возразите, что это было выделено приложением на "куче")? –  Barthelemy 15.10.2010, 18:27

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

Ядро Linux делит доступную RAM в небольшие блоки, названные "страницами". Затем классифицирует страницы в "используемый" (например: страницы, содержащие код или данные для программы, которая в настоящее время работает), и "неиспользованные" страницы. Для "используемых" страниц не имеет значения, содержат ли они исполняемый код, текстовые данные, байт-код Java или безотносительно - единственная вещь, которая вопросы - то, что они используются: они должны быть в RAM, потому что к тем данным постоянно получают доступ.

Так как RAM является самым быстрым доступным устройством хранения, это - отходы, чтобы позволить "неиспользованным" страницам быть неактивными, таким образом, ядро "перерабатывает" неиспользованные страницы к данным кэша, которые были выбраны от диска и могли быть необходимы снова вскоре. Ядро имеет некоторые алгоритмы для создания этого прогноза; производительность системы ввода-вывода зависит в большой степени от того, как хороший это алгоритмы могут предсказать фактическую рабочую нагрузку Вашего компьютера.

Кроме того, для ускорения операций ввода-вывода часть RAM будет использоваться для буферизации данных, которые пишутся в диск: Вы, возможно, заметили это при копировании большого файла в медленный диск (например, карта с интерфейсом USB), cp управляйте концами, прежде чем данные будут полностью записаны в устройство: это происходит точно, потому что ядро содержит некоторые данные в "свободной" памяти для ускорения (медленной) операции записи; данные будут записаны обратно к диску несколько секунд спустя, когда cp программа возможно уже закончилась. Как только данные записаны в диск, эти страницы будут снова считать свободными (и снова использовать для кэширования данных или перемещать в "используемый" пул, если потребность возникнет).

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

Дальнейшее чтение:

1
27.01.2020, 21:20

Теги

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