Где Linux задает значения по умолчанию для SHMMAX?

Мне просто интересно, где эти значения устанавливаются и что они по умолчанию? Моя шахта в настоящее время 18446744073692774399. Я не установил ее нигде, что я вижу.

$ cat /proc/sys/kernel/shmmax 18446744073692774399 $ sysctl kernel.shmmax kernel.shmmax = 18446744073692774399 

  • Отладка модуля ядра
  • Отображение потоков уровня на уровне ядра, потоки пользовательского уровня для процессов / потоков
  • Что такое язык, который появляется в первой строке скрипта?
  • Я не могу создать драйвер VirtualBox для Linux 2.6.38
  • Могу ли я использовать kernel_thread в ядре, когда его версия превышает 3.10?
  • Кто-нибудь, пожалуйста, объяснит вывод lspci -vv?
  • Работает ли MySQL в режиме пользователя или ядра?
  • В чем разница между прерываниями локального таймера и таймером?
  • 2 Solutions collect form web for “Где Linux задает значения по умолчанию для SHMMAX?”

    Функция __init ipc_ns_init устанавливает начальное значение shmmax , вызывая shm_init_ns , который устанавливает его в значение макроса SHMMAX .

    Определение SHMMAX находится в <uapi/linux/shm.h> :

     #define SHMMAX (ULONG_MAX - (1UL << 24)) /* max shared seg size (bytes) */ 

    На 64-битных машинах это определение равно значению, которое вы нашли, 18446744073692774399 .

    На лету вы можете просто эхо в / proc / sys / kernel / shmmax!

     # echo 20446744073692774399 > /proc/sys/kernel/shmmax 

    Но большинство людей редактируют файл /etc/sysctl.conf с линией, подобной:

     kernel.shmmax=your_new_value_here 

    См. Справочную страницу sysctl (8).

    Linux и Unix - лучшая ОС в мире.