Підкачка сторінок

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Сво́пінг (від англ. swap), або підкачка[джерело?] сторінок (англ. paging) — один з механізмів віртуальної пам'яті, при якому окремі фрагменти пам'яті (зазвичай неактивні) переміщуються з ОЗП на жорсткий диск, звільняючи оперативну пам'ять для завантаження інших фрагментів пам'яті. Такими фрагментами в сучасних комп'ютерах є сторінки пам'яті.

Тимчасово вивантажені з пам'яті сторінки можуть зберігатися на зовнішніх носіях інформації як у файлі, так і в спеціальному розділі на жорсткому диску (англ. partition), звані відповідно swap-файл і swap-розділ. У разі відкачування сторінок, що відповідають вмісту будь-якого файлу (наприклад, англ. memory-mapped files), вони можуть вилучатися. При запиті такої сторінки вона може бути прочитана з оригінального файлу.

Коли застосунок звернеться до відкачаної сторінки, відбудеться виняткова ситуація PageFault. Обробник цієї події повинен перевірити, чи було раніше відновлено запитану сторінку, і, якщо вона є в свопі, завантажити її назад в пам'ять.

Безпека[ред. | ред. код]

Оскільки при використані свопінгу частина даних зберігається в енергонезалежній пам'яті і, відповідно, не стирається при вимкнені живлення, то зловмисники можуть скористатися цим, проаналізувавши swap-файл і витягнувши з нього цінну інформацію, наприклад паролі. Тому для гарантування безпеки слід або відмовитись від свопінгу взагалі, або повністю шифрувати розділ або файл підкачки.

Налаштування розділу або файлу підкачки у GNU/Linux і Solaris[ред. | ред. код]

Мінімальний розмір дискового простору, який рекомендується[ким?] для розділу чи файлу підкачки дорівнює обсягові оперативної пам'яті машини.[джерело?] Найбільш оптимальним[джерело?] вважається подвоєний обсяг RAM. Можна виділити і більше місця, але це має сенс лише у випадку, коли комп'ютер має дуже мало оперативної пам'яті, або є намір використовувати програмне забезпечення, яке потребує її великої кількості.[джерело?]

Якщо для розділу підкачки використовується окремий жорсткий диск, бажано, щоб він був найшвидшим, і при можливості не використовувався файловими системами.[джерело?]

Розділ підкачки ініціалізується за допомогою команди mkswap. Наприклад, якщо для підкачки виділено перший розділ на пристрої sda:

# mkswap /dev/sda1

Активація і деактивація розділу здійснюється командами swapon і swapoff.

Файл підкачки[ред. | ред. код]

В ядрах Linux 2.6 і новіших робота swap-файла не поступається по продуктивності swap-розділу[1][2]:

У GNU/Linux створити файл підкачки можна комадною dd, а ініціалізувати — за допомогою mkswap:

# dd if=/dev/zero of=/swap bs=1024 count=128K
# mkswap /swap
# sync
# swapon /swap
# chmod 600 /swap

Oracle Solaris може використовувати томи ZFS як розділи підкачки:

# zfs create -V 2G pool/swap
# swap -a /dev/zvol/dsk/pool/swap

Див. також[ред. | ред. код]

Джерела[ред. | ред. код]

  1. "Jesper Juhl": Re: How to send a break? - dump from frozen 64bit linux. LKML. 2006-05-29. Архів оригіналу за 2012-06-19. Процитовано 2010-10-28. 
  2. Andrew Morton: Re: Swap partition vs swap file. LKML. Архів оригіналу за 2012-06-19. Процитовано 2010-10-28.