Перейти до вмісту

Підкачування сторінок

Очікує на перевірку
Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з Свопінг пам'яті)

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

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

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

Безпека

[ред. | ред. код]

Оскільки при використані свопінгу частина даних зберігається в енергонезалежній пам'яті і, відповідно, не стирається при вимкнені живлення, то зловмисники можуть скористатися цим, проаналізувавши 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. 29 травня 2006. Архів оригіналу за 19 червня 2012. Процитовано 28 жовтня 2010.
  2. Andrew Morton: Re: Swap partition vs swap file. LKML. Архів оригіналу за 19 червня 2012. Процитовано 28 жовтня 2010.