MooSE, позволю себе заметить, что приведенные вами примеры никоим образом не опровергают мои предположения. Естественно, что после ваших слов я останусь при своем мнении, т.к. на данный момент, мне кажется моя гипотеза более логичной.
Ваше право. Только у вас не реальное знание, а предположение.
Равно, как и у вас, коль вы не удосужились привести доказательств.
Уверен, кому-то из нас надо привести пруфлинк. Я попытался найти что-то, но, в большинстве случаев описание не противоречит не вам, ни мне.
Ваша проблема в том что во-первых вы ищете на русском языке, во-вторых не пытаетесь рассуждать логически. Расскажите мне каким образом fopen различает для чего открывается файл: для считывания вашей mp3'шки или для считывания кода приложения?
Ну конечно же, ведь все русские блоггеры глупцы, и я заплутал в дебрях их лжи.
И, конечно же я не пытаюсь рассуждать логически, я тоже глупый, ведь мои совершенно самостоятельные выводы, которые я вам при возникших сомнениях даже найденной ссылкой подтвердил, ничто иное, как шизофренический, бессвязный бред. А ваши, до сих пор ничем не подтвержденные, идеи царствуют над нашим бренным, форумным миром.
И
fopen(),
open(), и прочим производным, вовсе незачем различать причины открытия файла. Все элементарно: при закрытии ранее открытого файла, система его внутренним, a.k.a. невидимым для вашего приложения способом, оставляет в памяти, закрывая лишь имеющийся у вас дискриптор; т.о. ставший закрытым файл превращается в
кэш. При обращении к нему снова, файл не загружается с диска, а уже находится в памяти. Точно так же, при иссякающей свободной памяти, система сначала проходится по своему кэшу, чтобы выбросить его из RAM. И, только уже потом, если кэша не осталось, она начинает кидать в
swap запущенные программы.
Пользователь решил продолжить мысль 05 Мая 2014, 02:51:36:
Держите, если вам так угодно,
английский источникNow for a pop quiz. Imagine that the last instance of our render program exits. Would the pages storing scene.dat in the page cache be freed immediately? People often think so, but that would be a bad idea. When you think about it, it is very common for us to create a file in one program, exit, then use the file in a second program. The page cache must handle that case. When you think more about it, why should the kernel ever get rid of page cache contents? Remember that disk is 5 orders of magnitude slower than RAM, hence a page cache hit is a huge win. So long as there’s enough free physical memory, the cache should be kept full.
Обратите внимание, что он так же указывает, что данные из памяти превращаются в
кэш при их закрытии. Запущенная программа не является закрытой, и не является кэшем, даже, если она вам не нужна вообще, а была запущена случайно.
Пользователь решил продолжить мысль 05 Мая 2014, 07:31:53:
Давайте я вам теперь объясню, что относится к кэшу: например вы включили в плеере музыку. Если в системе достаточно свободной RAM, при каждом очередном обращении к файлу на диске, система просто его не выгружает из памяти, на случай, если он понадобится кому-то еще -- чтобы, не пришлось заново обращаться к диску, и считывать его оттуда, что достаточно медленная операция. Так же, к примеру, с файловым менеджером -- он не считывает заново данные с диска, а просто их "запоминает".
Теперь давайте обсудим, что НЕ является кэшом. Не является кэшом загруженные в память библиотеки, равно, как и программы. Принцип прост: все, что не было загружено в память непосредственно системой -- неприкосновенно, т.к. система не может знать, для чего оно лежит. Единственное, что она может сделать с этими данными, это скинуть их на диск(в swap, при наличии такового) при отсутствии свободной памяти, дабы приложения не начали помирать из-за невозможности выделения памяти.
Это ваши фантазии, не имеющие ничего общего с реальностью. Система не различает файлы библиотек, приложений, музыки и видео. При кэшировании в отношении них действует совершенно одинаковая политика. Другое дело что при особождении кэша убирается в первую очередь то что не нужно.
Библиотеки и приложения же не выгружаются потому что они используются. Но если вы запустили приложение а потом закрыли его - все его файлы и связанные с ним библиотеки останутся в RAM (при условии что RAM достаточно много). Это можно пронаблюдать запустив что-то тяжёлое вроде LibreOffice и GIMP: холодный старт занимает достаточно много времени, так как требуется подгрузка большого числа данных с диска. Однако если потом закрыть приложение и открыть заново - загрузка произойдёт много быстрее. Потому что она произошла из дискового кэша.
Знаете, мне тут подумалось: а о чем вообще мы спорим?

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