Несвопируемая память
May. 11th, 2014 03:34 pmУзнал тут из переписки в криптографической рассылке о функциях mlock/munlock. Почитал man-ы. К счастью, по разным операционкам. И кажется мне, что эти функции сильно недоделаны.
То, что оно позволяет блокировать в памяти от помещения в swap всю страницу целиком, это нормально и по-другому скорее всего не делается. То, что в половине операционок может быть вызваны только из-под рута (под Линуксом не так, там можно задать количество для не-рута через ulimit начиная с ядра 2.6.9), это уже большой привет. То, что там нет встроенного счетчика, сколько раз страницу лочили, и единственный вызов munlock разблокирует страницу, залоченную трижды – уже хуже, поскольку вынуждает сотворить собственный менеджер памяти, пусть даже вырожденный, системы «залочил страницу и отдаем по кусочку, все ценное туда» – совсем уже нехорошо.
А жалко. Потому как функциональность полезная.
Update: В комменты пришел
dmih и рассказал про виртуализацию и ее издержки. Да, скорее всего все эти прелести в условиях виртуализации действительно неактуальны.
То, что оно позволяет блокировать в памяти от помещения в swap всю страницу целиком, это нормально и по-другому скорее всего не делается. То, что в половине операционок может быть вызваны только из-под рута (под Линуксом не так, там можно задать количество для не-рута через ulimit начиная с ядра 2.6.9), это уже большой привет. То, что там нет встроенного счетчика, сколько раз страницу лочили, и единственный вызов munlock разблокирует страницу, залоченную трижды – уже хуже, поскольку вынуждает сотворить собственный менеджер памяти, пусть даже вырожденный, системы «залочил страницу и отдаем по кусочку, все ценное туда» – совсем уже нехорошо.
А жалко. Потому как функциональность полезная.
Update: В комменты пришел
no subject
Date: 2014-05-11 12:16 pm (UTC)no subject
Date: 2014-05-11 12:24 pm (UTC)Я имею в виду, что страницу можно разлочить только когда ключ на ней стёрт. А уж если он стёрт, то неважно, кто и когда просил страницу залочить.
no subject
Date: 2014-05-11 12:26 pm (UTC)no subject
Date: 2014-05-11 12:31 pm (UTC)no subject
Date: 2014-05-11 12:37 pm (UTC)no subject
Date: 2014-05-11 12:42 pm (UTC)no subject
Date: 2014-05-11 12:44 pm (UTC)no subject
Date: 2014-05-11 01:36 pm (UTC)А при работе с секретной информацией иногда нужно затирать и без освобождения. Чтобы в случае ошибки переполнения буфера не выдать предыдущий ключ.
no subject
Date: 2014-05-11 01:39 pm (UTC)лишней работыдополнительной аккуратности.no subject
Date: 2014-05-12 04:12 am (UTC)no subject
Date: 2014-05-12 04:23 am (UTC)no subject
Date: 2014-05-12 04:32 am (UTC)no subject
Date: 2014-05-12 05:08 am (UTC)no subject
Date: 2014-05-12 06:10 am (UTC)no subject
Date: 2014-05-12 06:53 am (UTC)no subject
Date: 2014-05-12 06:57 am (UTC)no subject
Date: 2014-05-12 07:00 am (UTC)