Ядро Linux в комментариях

       

Shm_close


Функция shm_close, которая является противоположной функции shm_open, отключает область VMA от области разделяемой памяти, к которой она подключена. Хотя есть и другие места, где ядро вызывает операцию закрытия области VMA, по-видимому, строка является единственным таким местом, где это может окончиться вызовом функции shm_close. Это часть функции exit_mmap (строка ) и она обычно достигается функцией mmput (строка ), которая вызывается из функции __exit_mm (строка ), которая вызывается из функции do_exit (строка ), рассматриваемой в . Отметим, что есть и другие пути к функции shm_close, и один из них мы вскоре рассмотрим.

Извлечение индекса shm_segs из члена vm_pte области VMA, а затем отключение области VMA от данной области. Этот индекс не нужно проверять на соответствие диапазону по тем же причинам, как и в функции shm_open. Отметим также, что функция shm_close не проверяет, находится ли допустимый вход shm_segs по указанному индексу. Для функции remove_attach это не имеет значение, поскольку, как было показано выше, она даже не зависит от своего параметра shp. Но в последней части функции shm_close предполагается, что остальная программная реализация разделяемой памяти разработана и применяется правильно, так что этот «невозможный» случай действительно не произойдет.

Отключение области VMA от области разделяемой памяти, а затем обновление статистической информации этой области.

Уменьшение числа ссылок области и, возможно, также ее освобождение.



Содержание раздела