Файл подкачки

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

Файл подкачки (он же своп, виртуальная память, страничный файл или, по-аглицки, page file, swap file/swap space) — это такая хитрая фича операционок, которая позволяет им делать вид, будто у них оперативки больше, чем есть на самом деле. По сути, это просто файл на жестком диске (или СДД, если ты не ламер), куда ОС сливает всякий шлак из ОЗУ, когда той становится мало. Или когда ей кажется, что ей мало. В лучших традициях мелкософта, разумеется.

Найти его можно, если копнуть проводником (или, если ты настоящий олдфаг, Тотал Коммандером) в корне системного диска и включить отображение скрытых и системных файлов. Обычно он называется pagefile.sys в Винде и живет прямо в корне C:\. Или не в корне, если его туда заботливый админ перенес. Размерчик у него может быть весьма внушительный, что иногда вызывает недоумение у школьников и прочих блондинок от IT, особенно когда физической памяти вроде бы завались, а эта хрень занимает гигабайты на HDD или, упаси Б-г, на SSD.

Историческая справка, или Как Мелкософт с DOS’ом бодался[править]

Если копнуть в глубь истории виндовс, аж до тройки, можно обнаружить занятный факт: первые версии форточек работали поверх MS-DOS (или совместимых с ним систем). И во многом полагались именно на физическую оперативку, приправляя ее всякими ХАЙМЕМами и прочим ДОСовским шаманством.

Но с выходом третьей винды случился эпический скандал. В установочнике и в самом WIN.COM был зашит кусок кода, который намеренно препятствовал запуску и установке форточек на системах, отличных от MS-DOS. Яркий пример — DR-DOS. Этот код позднее прозвали AARD (по первым буквам имени программиста Аарона Р. Рейнольдса, который этот кусок говна запилил), и он выдавал псевдослучайные ошибки, намекая, что винда тут не запустится. Такой себе аналог современного BSOD для тех, кто юзал конкурирующие ОС.

Владелец DR-DOS, компания Caldera Inc., не оценила такого юмора и в 1996 году подала на Мелкософт в суд. Иск был не один, претензий набралось аж пять штук, и одна из них как раз касалась этого самого AARD-кода. Судебная тяжба тянулась аж до двухтысячного, и в итоге Microsoft пришлось раскошелиться на 280 миллионов долларов. Это вам не DMCA, тут все серьезно было.

К слову, винда 95 официально просила аж целых 8 мегабайт ОЗУ (уже солидно по тем временам!). 98-я уже 24 мегабайта, а ХР — целых 64-128 мегабайт! А вот с виндой 11 системные требования стали ну очень уж абсурдными. Говорят, ей надо минимум 64 гигабайта свободного места на диске для установки. За что, какого Хуанхэ?! Она прекрасно себя чувствует и на 15-20 гигах после установки. Ну да, там есть UWP-приложения, всякий телеметрический мусор и прочее, но все равно! Ощущение, что они просто с запасом пишут, как будто у всех винты терабайтами меряются.

Как это работает (для тех, кто не в танке)[править]

Если отойти от исторических лулзов и вернуться к нашему барану файлу подкачки, то по сути его работа сводится к пейджингу. Это такой механизм, при котором ОС делит оперативную память на мелкие кусочки, называемые страницами (page). Когда оперативка забивается (или ей так кажется, опять же привет, мастдай!), система начинает «выгружать» наименее используемые страницы из ОЗУ в этот самый файл на диске. А когда какая-то программа внезапно вспоминает, что ей нужна выгруженная страница, ОС «подгружает» ее обратно из файла подкачки в ОЗУ, выпихивая при этом другую, менее нужную страницу. Такой вот круговорот данных в природе.

В ранних виндовс, типа тройки, этот файл, который тогда назывался WIN386.SWP (временный, стационарный файл подкачки появился позже), был довольно примитивен. Он просто суммировал объем физической ОЗУ и свой размер, выдавая это за общее количество доступной памяти. В 95-й он уже стал чутка умнее, используя VMM32 и VCACHE, и старался использовать своп только тогда, когда физическая ОЗУ действительно кончалась. Но все равно марал диск своими данными при каждом удобном случае.

Начиная с ХР, процесс стал более продвинутым. Появилась Prefetch, которая кешировала часто запускаемые программы в ОЗУ для ускорения их запуска. А с Вистой добавилась Superfetch, которая анализировала поведение юзера и подгружала данные в ОЗУ заранее, и ReadyBoost, позволяющая использовать флешки и карты памяти как кэш для ускорения работы с диском и, соответственно, со свопом.

Современные виндовс (7, 8, 10, 11) стали еще умнее в плане работы с памятью. С появлением быстрых SSD и NVMe скорость работы с файлом подкачки значительно возросла. Система реже прибегает к активному свопингу при большом объеме ОЗУ, но полностью отказываться от него не спешит.

Так есть ли смысл от файла подкачки? Нужен ли он сегодня?[править]

Святой Грааль всех ламеров и гуру оптимизации — отключить файл подкачки! Мол, у меня 32 (или 64, или 128!) гигабайта ОЗУ, зачем мне эта хрень, тормозящая SSD?!

А вот и не угадал! Даже при наличии большого объема ОЗУ, файл подкачки все еще необходим для стабильной работы винда. Почему?

  • Подстраховка при нехватке ОЗУ: Да, у тебя много ОЗУ, но запусти лису с сотней вкладок, Фотошоп с огромным файлом, виртуалку, пару-тройку игрушек и оставь их висеть в фоне. Внезапно окажется, что даже 32 гига могут закончиться, и система начнет задыхаться. Вот тут-то на помощь и приходит своп, позволяя ей не рухнуть сразу, а «выгрузить» неактивные данные на диск. Без свопа программы начнут аварийно завершаться с ошибками нехватки памяти.
  • Обработка исключений и дампы памяти: При синем экране смерти (а он, поверь, рано или поздно случится) винда пытается сохранить содержимое ОЗУ в файл на диске — так называемый дамп памяти. Этот дамп нужен, чтобы потом специалист мог проанализировать, что же пошло не так. Куда сохраняется дамп? Правильно, в файл подкачки или специальный файл дампа. Без файла подкачки адекватный дамп получить будет невозможно.
  • Особенности работы некоторых программ: Есть софтины, которые изначально рассчитаны на использование виртуальной памяти и могут некорректно работать или даже вылетать без файла подкачки, даже если физической ОЗУ более чем достаточно.
  • Оптимизация работы ОС: Винда, даже современная, использует файл подкачки не только при острой нехватке ОЗУ. Она может выгружать на диск наименее критичные системные процессы или неактивные части программ, чтобы освободить место в быстрой ОЗУ для более активно используемых данных. Это, в теории, должно ускорять работу системы, хотя на быстрых SSD разница может быть не так заметна.

Например, на Windows XP с 256 МБ ОЗУ система по дефолту создавала pagefile размером примерно в три раза больше ОЗУ. При 1 ГБ ОЗУ рекомендованный размер pagefile уже меньше тройного, а при 2 ГБ ОЗУ и выше он перестает увеличиваться в три раза, и становится ближе к удвоенному или просто фиксированному значению. Как метко подметили в книге «Внутреннее устройство Windows»:

Собственно, даже если страничного файла [так называется «файл подкачки» в переводе от Питера] не будет, Windows всё равно будет использовать виртуальную память.

Но использование именно файла подкачки на диске добавляет гибкости и стабильности.

Программа SoftRAM 95, или Как вас пытались наебать[править]

Отдельного упоминания стоит легендарная SoftRAM 95. Эта софтина, появившаяся аккурат к выходу 95-й, обещала удвоить вашу оперативную память программным путем. Звучало магически, продавалось как горячие пирожки.

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

03ef4f7db0cccdf39bf013566aed31bd.jpg Системы, без которых машина просто откажется работать
СистемыAndroidDOSFreeBSDHaikuЛинуксMenuetOSMacOS (OS X) / Хакинтош / iOSOS/2ReactOSWindows / ВиндаРусОСФантом ОСUnixHarmony OSWindows vs. LinuxАстра ЛинуксMATEKaiOSChimbalixIOS 18WinGetThe Amnesic Incognito Live SystemTemple OSGrapheneOS
СредыGNOMEGNU EmacsKDEЛинус Торвальдс vs x86 64SELinuxWindows Update
ЛюдиБалмерГенерал ФейлорПоттерингСтоллманТорвальдсФолькердингРуслан КармановRealme (компания)
Дистрибутивы LinuxArchDebianFedoraFinnixGentooLFSUbuntu (BolgenOS) • СлакаUncom OSTiny10Tiny11Дешёвые ключи для Windows
Версии виндыWindows 95Windows 98Windows 2000Windows XPWindows VistaWindows 7Windows 8Windows 10Windows 11Windows Phone 7Windows Phone 8ГовносборкиWindows MEWindows ШкольникГрафики в Windows CalculatorKasperskyOSQuick machine recoveryBypassNRO
ПользователиАдминБздун • Виндузятник • КрасноглазикЛинуксоидЯблочникФайл подкачки
Площадки/s/LORru macru.os.cmpstoplinux.org.ru
Мемы/dev/null • BSD, not LSD • GIFGNOME vs. KDEMac vs. PCOS-tanrm -rfSystem32TRUE-DEATH-PRIMITIVE-LINUX-MITOLLWindows vs LinuxБубенВендекапецГномикиДаунгрейдЕсли бы…Ждём ебилдовКЛБМаздайПатчить KDE2 под FreeBSDПереустановка WindowsПриборчикРаспечатать лицензию на ЛинуксTuxТупые свитчерыФениксНе работай под рутомБлокировка Windows в РоссииОСВзлом Windows через Metasploit
Достойные упоминанияAmigaСтарая копипаста:ШindowsЛинуксоидное ХанжествоСкотный Двор имени Линуса Торвальдса
App.png Весьма полезная вещь, позволяет машинам работать с помощью коммандычей
МетаПрограммаDRM (SecuROMStarForceАналоговая дыра) • БагБот (Автоответчик) • Варез (Repack) • ГлюкГуйДонатКопирайт (By design) • ЛогНюкРут (Не работай под рутом) • Спортивное программированиеМегапиксельКомпьютерВерсия 2.0КодОбфускацияСкриншотДатамайнПлагинТекстовый файлБольшие данныеАльфа и бета-тестыТаймстампКэшШаблоныHello WorldНейросетиФайлИнсталляцияВидеоМощный сбой Microsoft 19 июля 2024 годаCrowdStrikeПроект GNUUserscriptDxvkVkd3dБратан хорош давай давай впередКонечный автоматLumenЗаступник (приложение)NeeUnreal MCP
ФичиБагрепорт12309BSODCookiesEmbrace, extend and extinguishFL StudioSheep.exeWinlogon.exeБубенЗащита от дуракаКостыльМашинный переводПасхальные яйцаСвистелки и перделкиСм. рис. 1Съешь ещё этих мягких французских булокTermuxGNU MetroИндусский кодНескучные обои • Сжатие (За сжатие ДжипегаШакалШкала) • Работает — не трогайРандомайзерPDF (Распознавание PDF) • Дело Google в ФАСЧат-ботXMLМакросКритическая ошибкаФреймворкСинонимайзерSourceТрёхмерное отслеживаниеТрассировка фотоновHZB OcclusionДаунгрейд RTX 4070TressFXАвтопереводчикVSCodiumThorium BrowserShovelwareФайл подкачки
ВредоносноеБотнетБрутфорсВинлокЗвонилкаКитайские пингвиныПиксель смертиТроянЧервь МоррисаBonziBuddyMediaGetBrowser hijackingTinderМиссис МажорУтечка буфера обменаWin 10 TweakerОпараш Mozilla FirefoxЯндекс.МузыкаКрэкерБезопасность через умолчаниеGrifter.aviTrojan.Winlock.DeathМиссис МажорСредаDirectStorageDriverpackГенератор случайных чиселDisable Core 0РомхакингDDrawCompatWingetCreateWinGetCoowonЯндекс МессенджерVCPkgSELinuxXfireYouTube Auto-ResumeTape OperatorBotFatherMTProtoSignalDoubleClickFixGitee
КомпанииApple / Apple (AppleScript) • GoogleMicrosoftSAPЯндексExiled Exchange 2BraveAdNauseamСкурвление FirefoxCafe BazaarAMD FEMFXPPSSPPАвтохукQuick machine recoveryMAXBypassNROWizTreeJTubeGallium NineFalconRu-WireGuardМобильное приложениеWebRenderСмс-бомбер
Движения8-bitOpen source (КрасноглазикиЛинуксоиды) • Вирусная сценаДаунгрейдДемосценаМоддингMMDDirectDrawЛагиБлокировка Дискорда в РоссииOpera GXНесоответствие MIME-типаRenoisePygameLs (UNIX)МетаданныеПатчNginxПиксельЭмуляторSearxТамТамMallocСвязный списокSOLIDGreasemonkeyПлатные сообщенияFlatpakNouveauFuse.js
Офис3DS MAXGIMPGNU EmacsMovie MakerMS Paint • OpenOffice • PowerPointviMicrosoft WordExcelБлокнотФотошопАнтивирус КасперскогоAvast!TikZShareXAlternativeToСкрепышMicrosoft OfficeТекстовый редакторWeChatZoomДиспетчер задачMicrosoft CortanaWinampBallonTranslatorKerish DoctorОбщая ошибкаFirefox: Как один баг сломал весь YouTubeМеждулициеMeld StudioLadybirdCheat EngineTotal Commander
ОСAndroidBSDDOSMenuetOSReactOSWindows (Phone 7Phone 878Vista) / МаздайЛинуксРусская ОСФантом ОСIndex.phpCompassУход мэйнтейнера NouveauБойкот лаунчеровAria2cNoiceMinecraft-Installer.exe
БраузерыInternet ExplorerОпера / Opera • Тормозилла (ОгнелисLolifoxMozilla FirefoxFirefoxFirefox Klar) • Хром (шпионаж) • SafariЯндекс.БраузерУведомления в браузереVivaldiTor-браузерЗосимаФронтенд
ИнтернетAdobe Systems (Flash) • I2PLow Orbit Ion CannonTorTunatic • Чат−клиенты (MirandaQIPSkypeЖабберDiscordVIPole) • HTTPSПрокси-сервер (Proxifier) • Торрент (Magnet-ссылкаΜTorrent) • JavaScriptCSSHTMLБаннермейкерИзменение TTL сетевых пакетовКапчаICQFiddlerViberZonaSteamSillyTavernWickr Me
РазработкаBrainFuckCC++C#JavaHaskellАссемблерChaos ConstructionsBATMySQLGitHubAutoHotKey (AutoHotInterception) • Sublime TextAPK (APKPureзапрет) • BASICPerlPythonPHPФоркUnity3DSAISIPСАПРФлагUTAUФласк макросАуработRaidCallAdobe MingОфициальный™ список кошерных программDevOpsНиколай Дуров
ЛюдиВеб-мастерLovinGODБалмерГейтсГенерал ФейлорДжобсМитникПоттерингде РаадтСпольскиСтоллманТорвальдсШахиджанянAche666Марк ЦукербергЕвгений ПоповДенис КумпонМассовая компьютерная безграмотность
КостылиCygwin • PunkBusterT9WineWishmasterАнтивирусыХакинтошСборки WindowsDenuvoЧистая установкаКалькулятор Consul WarMicrosoft StoreUBlock OriginLightshotAdBlockSearchApp.exeCPU-ZГуглPhotoshopКаптча с пчёламиВзлом Windows через MetasploitЩЩ Мессенджер
Команды^H^WAlt+F4Ctrl+Alt+Delman/me/quitrm -rf