Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.sao.ru/hq/vch/Publications/Russ/html/linux-posix/node3.html
Дата изменения: Unknown Дата индексирования: Sat Sep 11 22:06:51 2010 Кодировка: koi8-r Поисковые слова: mercury surface |
Четыре новых функции mlock(), munlock(), mlockall() и munlockall() позволяют запретить пэйжинг для указанных областей памяти -- mlock( ), или для всех страниц (код, стек, данные, разделяемая память, карта файлов, разделяемые библиотеки) к которому процесс имеет доступ -- mlockall(). Это позволяет гарантировать то, что например маленький и критичный ко времени демон останется в памяти, и соответственно может помочь гарантировать необходимое время ответа от этого процесса. Под Linux, этот режим (подобно большому количеству других связанных с особенностями реального времени) дозволен только для суперпользовательских процессов, чтобы избегать злоупотребления этой особенностью обычными пользователями в больших системах с разделением времени.
Другое применение для захвата памяти криптографической программой -- безопасность компьютера. При использовании mlock(), эти системы могут гарантировать, что зашифрованный секретный ключ или пароль, который временно сохранен в маленьком пользовательском массиве, не будет никогда записыватся на устройство своппинга, где, хоть и маловероятно, кто-то мог бы найти секретные байты даже спустя несколько месяцев позже.
В качестве приложений было бы хорошо, если бы в Linux даже не суперпользовательские процессы могли бы позволить себе небольшое число mlock()-нутых редактируемых страниц, например. До четырех захваченных страниц для не суперпользовательского процесса должно бы быть достаточно.
Состояние выполнения: Linus теперь добавил полную POSIX.1b поддержку захвата памяти к альфе Linux, проверка на версии ядра 1.3.43. Там существует также libc-поддержка и описание. Так, что уже не надо ставить патч POSIX.4_locking от Ralf Haller (hal@iitb.fhg.de) или еще какой - нибудь.