Гигантский замок - Giant lock

В операционные системы, а гигантский замок, также известный как большой замок или блокировка ядра, это замок что может быть использовано в ядро предоставлять контроль параллелизма требуется симметричная многопроцессорная обработка (SMP) системы.

Гигантский замок - это отдельный глобальный замок, который удерживается всякий раз, когда нить входит пространство ядра и освобождается, когда поток возвращается к пространство пользователя; а системный вызов это архетипический пример. В этой модели потоки в пространство пользователя может работать одновременно на любом доступном процессоры или ядра процессора, но в пространстве ядра может выполняться не более одного потока; любые другие потоки, которые пытаются войти в пространство ядра, вынуждены ждать. Другими словами, гигантский замок устраняет все параллелизм в пространстве ядра.

Изолируя ядро ​​от параллелизма, многие части ядра больше не нужно модифицировать для поддержки SMP. Однако, поскольку в системах SMP с гигантской блокировкой только один процессор может запускать код ядра за раз, производительность приложений, проводящих значительное количество времени в ядре, не сильно улучшается.[1] Соответственно, подход гигантской блокировки обычно рассматривается как предварительное средство обеспечения поддержки SMP в операционной системе, дающее преимущества только в пространстве пользователя. Большинство современных операционных систем используют мелкозернистая блокировка подход.

Linux

В Ядро Linux была большая блокировка ядра (BKL) с момента появления SMP до Арнд Бергманн удалил его в 2011 году в версии ядра 2.6.39,[2][3] с удалением остальных видов использования большого замка или заменой более мелкозернистой блокировки. Дистрибутивы Linux на или выше CentOS 7, Debian 7 (Wheezy) и Ubuntu 11.10 поэтому не используют BKL.

BSD

По состоянию на июль 2019 г., OpenBSD и NetBSD все еще используют spl (Unix) семейство примитивов для облегчения синхронизации критических секций в ядре,[4][5][6] это означает, что многие системные вызовы могут блокировать возможности SMP системы, и, согласно Мэтью Диллон, возможности SMP этих двух систем нельзя считать современными.[7]

FreeBSD по-прежнему поддерживает гигантский мьютекс,[8] который обеспечивает семантику, аналогичную старому интерфейсу spl, но критически важные для производительности основные компоненты уже давно преобразованы для использования более тонкой блокировки.[1]

Об этом заявляет Мэтью Диллон это из программное обеспечение с открытым исходным кодом операционные системы общего назначения, только Linux, DragonFly BSD и FreeBSD имеют современную поддержку SMP, с OpenBSD и NetBSD отставая.[7]

В NetBSD Foundation считает современную поддержку SMP жизненно важной для направления проекта NetBSD и предлагает гранты разработчикам, желающим работать над улучшениями SMP; НПФ (межсетевой экран) был одним из проектов, возникших в результате этих финансовых стимулов, но все же могут потребоваться дальнейшие улучшения основного сетевого стека.[5][9]

Смотрите также

использованная литература

  1. ^ а б Роберт Н. М. Уотсон (2007-11-25). "До и после под гигантским замком". FreeBSD-Hackers @ (Список рассылки). FreeBSD. Получено 2019-07-25.
  2. ^ "git.kernel.org: БКЛ: это все, ребята". Архивировано из оригинал на 2012-07-20. Получено 2019-12-28.
  3. ^ https://kernelnewbies.org/BigKernelLock - BigKernelLock на kernelnewbies.org
  4. ^ "/sys/net/if.c". Перекрестная ссылка BSD. OpenBSD. 2019-06-30. Получено 2019-07-25. s = splnet ();
  5. ^ а б "/sys/net/if.c". Перекрестная ссылка BSD. NetBSD. 2019-07-25. Получено 2019-07-25. s = splnet ();
  6. ^ "splx (9) - изменить уровень приоритета системного прерывания". NetBSD, OpenBSD. Получено 2019-07-25.
  7. ^ а б Мэтью Диллон (2019-07-22). «Обновление проекта DragonFlyBSD - обновление цвета, будущие тенденции». пользователи @ (Список рассылки). DragonFly BSD. Получено 2019-07-25.
  8. ^ Джулиан Элишер (2007). "блокировка (9) - примитивы синхронизации ядра". Перекрестная ссылка BSD. FreeBSD. Получено 2019-07-25. Сложить резюме. Giant - это специальный мьютекс, используемый для защиты структур данных, которые еще не имеют собственных блокировок. Поскольку он обеспечивает семантику, аналогичную старому интерфейсу spl (9),…
  9. ^ «Сеть SMP (также известная как снятие большой сетевой блокировки)». NetBSD. 2013-02-14. В архиве из оригинала на 2019-07-25. Получено 2019-07-25.