Jump to content

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

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

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

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

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

По состоянию на сентябрь 2022 г. , в ядре Linux все еще есть console_lock , который иногда называют BKL, и его удаление находится в процессе. [4] [5]

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

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

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

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

См. также

[ редактировать ]
  1. ^ Jump up to: а б Роберт Н. М. Уотсон (25 ноября 2007 г.). «До и после под гигантским замком» . FreeBSD-Hackers@ (список рассылки). FreeBSD . Проверено 25 июля 2019 г.
  2. ^ "git.kernel.org: BKL: вот и все, ребята " . Архивировано из оригинала 20 июля 2012 г. Проверено 28 декабря 2019 г.
  3. ^ https://kernelnewbies.org/BigKernelLock – BigKernelLock на kernelnewbies.org
  4. ^ ИСПРАВЛЕНИЕ - fbcon: Сделайте fbcon встроенной зависимостью для fbdev . Дэниел Веттер. 28 июня 2017 г.
  5. ^ патч RFC 19/29 — printk: Добавить базовую инфраструктуру для консолей, отличных от BKL . Томас Глейкснер. 11 сентября 2022 г.
  6. ^ "/sys/net/if.c" . Перекрестная ссылка BSD . OpenBSD . 30 июня 2019 г. Проверено 25 июля 2019 г. с = splnet();
  7. ^ Jump up to: а б "/sys/net/if.c" . Перекрестная ссылка BSD . НетБСД . 25 июля 2019 г. Проверено 25 июля 2019 г. с = splnet();
  8. ^ «splx(9) — изменить уровень приоритета системного прерывания» . НетБСД , ОпенБСД . Проверено 25 июля 2019 г.
  9. ^ Jump up to: а б Мэтью Диллон (22 июля 2019 г.). «Обновление проекта DragonFlyBSD — обновление цвета, будущие тенденции» . пользователи @ (список рассылки). Драгонфлай БСД . Проверено 25 июля 2019 г.
  10. ^ Джулиан Элишер (2007). "locking(9) — примитивы синхронизации ядра" . Перекрестная ссылка BSD . FreeBSD . Проверено 25 июля 2019 г. Giant — это специальный мьютекс, используемый для защиты структур данных, которые еще не имеют собственных блокировок. Поскольку он обеспечивает семантику, подобную старому интерфейсу spl(9),…
  11. ^ «SMP Networking (также известный как снятие большой сетевой блокировки)» . НетБСД . 14 февраля 2013 г. Архивировано из оригинала 25 июля 2019 г. Проверено 26 марта 2023 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 23629ed12c1f4051d4ec8093c41496b8__1702822800
URL1:https://arc.ask3.ru/arc/aa/23/b8/23629ed12c1f4051d4ec8093c41496b8.html
Заголовок, (Title) документа по адресу, URL1:
Giant lock - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)