aboutsummaryrefslogtreecommitdiff
path: root/documentation/content/ru/books/arch-handbook/locking
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/content/ru/books/arch-handbook/locking')
-rw-r--r--documentation/content/ru/books/arch-handbook/locking/chapter.adoc137
1 files changed, 0 insertions, 137 deletions
diff --git a/documentation/content/ru/books/arch-handbook/locking/chapter.adoc b/documentation/content/ru/books/arch-handbook/locking/chapter.adoc
deleted file mode 100644
index bdb37f8e29..0000000000
--- a/documentation/content/ru/books/arch-handbook/locking/chapter.adoc
+++ /dev/null
@@ -1,137 +0,0 @@
----
-title: Глава 2. Замечания по блокировке
-authors:
----
-
-[[locking]]
-= Замечания по блокировке
-:doctype: book
-:toc: macro
-:toclevels: 1
-:icons: font
-:sectnums:
-:sectnumlevels: 6
-:sectnumoffset: 2
-:partnums:
-:source-highlighter: rouge
-:experimental:
-
-ifdef::env-beastie[]
-ifdef::backend-html5[]
-:imagesdir: ../../../../images/{images-path}
-endif::[]
-ifndef::book[]
-include::shared/authors.adoc[]
-include::shared/mirrors.adoc[]
-include::shared/releases.adoc[]
-include::shared/attributes/attributes-{{% lang %}}.adoc[]
-include::shared/{{% lang %}}/teams.adoc[]
-include::shared/{{% lang %}}/mailing-lists.adoc[]
-include::shared/{{% lang %}}/urls.adoc[]
-toc::[]
-endif::[]
-ifdef::backend-pdf,backend-epub3[]
-include::../../../../../shared/asciidoctor.adoc[]
-endif::[]
-endif::[]
-
-ifndef::env-beastie[]
-toc::[]
-include::../../../../../shared/asciidoctor.adoc[]
-endif::[]
-
-_Эта глава поддерживается проектом FreeBSD SMP Next Generation Project. Комментарии и пожелания направляйте в link:{freebsd-smp}._
-
-Этот документ описывает механизм блокировки, используемый в ядре FreeBSD для обеспечения эффективной поддержки нескольких процессоров в ядре. Блокировку можно рассматривать с нескольких точек зрения. Структуры данных могут быть защищены с помощью блокировок mutex или man:lockmgr[9]. Несколько переменных защищены просто в силу атомарности используемых для доступа к ним операций.
-
-[[locking-mutexes]]
-== Мьютексы
-
-Мьютекс (mutex) - это просто блокировка, используемая для реализации гарантированной исключительности. В частности, в каждый момент времени мьютексом может владеть только один объект. Если какой-то объект хочет получить мьютекс, который уже кто-то занял, он должен дождаться момента его освобождения. В ядре FreeBSD владельцами мьютексов являются процессы.
-
-Мьютексы могут быть затребованы рекурсивно, но предполагается, что они занимаются на короткое время. В частности, владельцу мьютекса нельзя выдерживать паузу. Если вам нужно выполнить блокировку на время паузы, используйте блокировку через man:lockmgr[9].
-
-Каждый мьютекс имеет несколько представляющих интерес характеристик:
-
-Имя переменной::
-Имя переменной [type]#struct mtx# в исходных текстах ядра.
-
-Логическое имя::
-Имя мьютекса, назначенное ему через `mtx_init`. Это имя выводится в сообщениях трассировки KTR и диагностических предупреждающих и ошибочных сообщениях и используется для идентификации мьютексов в отладочном коде.
-
-Тип::
-Тип мьютекса в терминах флагов [constant]#MTX_*#. Значение каждого флага связано с его смыслом так, как это описано в man:mutex[9].
-
-[constant]#MTX_DEF#:::
-Sleep-мьютекс
-
-[constant]#MTX_SPIN#:::
-Spin-мьютекс
-
-[constant]#MTX_RECURSE#:::
-Этому мьютексу разрешается блокировать рекурсивно.
-
-Защиты::
-Список структур данных или членов структур данных, которые защищает этот мьютекс. Для членов структур данных имя будет в форме . члена структуры/.
-
-Зависимые функции::
-Функции, которые можно вызвать, если этот мьютекс занят.
-
-.Список мьютексов
-[cols="15%,10%,10%,55%,20%", frame="all", options="header"]
-|===
-| Variable Name
-| Logical Name
-| Type
-| Protectees
-| Dependent Functions
-
-|sched_lock
-|"sched lock"
-|`MTX_SPIN` \| `MTX_RECURSE`
-|`_gmonparam`, `cnt.v_swtch`, `cp_time`, `curpriority`, `mtx`.`mtx_blocked`, `mtx`.`mtx_contested`, `proc`.`p_procq`, `proc`.`p_slpq`, `proc`.`p_sflag`, `proc`.`p_stat`, `proc`.`p_estcpu`, `proc`.`p_cpticks` `proc`.`p_pctcpu`, `proc`.`p_wchan`, `proc`.`p_wmesg`, `proc`.`p_swtime`, `proc`.`p_slptime`, `proc`.`p_runtime`, `proc`.`p_uu`, `proc`.`p_su`, `proc`.`p_iu`, `proc`.`p_uticks`, `proc`.`p_sticks`, `proc`.`p_iticks`, `proc`.`p_oncpu`, `proc`.`p_lastcpu`, `proc`.`p_rqindex`, `proc`.`p_heldmtx`, `proc`.`p_blocked`, `proc`.`p_mtxname`, `proc`.`p_contested`, `proc`.`p_priority`, `proc`.`p_usrpri`, `proc`.`p_nativepri`, `proc`.`p_nice`, `proc`.`p_rtprio`, `pscnt`, `slpque`, `itqueuebits`, `itqueues`, `rtqueuebits`, `rtqueues`, `queuebits`, `queues`, `idqueuebits`, `idqueues`, `switchtime`, `switchticks`
-|`setrunqueue`, `remrunqueue`, `mi_switch`, `chooseproc`, `schedclock`, `resetpriority`, `updatepri`, `maybe_resched`, `cpu_switch`, `cpu_throw`, `need_resched`, `resched_wanted`, `clear_resched`, `aston`, `astoff`, `astpending`, `calcru`, `proc_compare`
-
-|vm86pcb_lock
-|"vm86pcb lock"
-|`MTX_DEF`
-|`vm86pcb`
-|`vm86_bioscall`
-
-|Giant
-|"Giant"
-|`MTX_DEF` \| `MTX_RECURSE`
-|nearly everything
-|lots
-
-|callout_lock
-|"callout lock"
-|`MTX_SPIN` \| `MTX_RECURSE`
-|`callfree`, `callwheel`, `nextsoftcheck`, `proc`.`p_itcallout`, `proc`.`p_slpcallout`, `softticks`, `ticks`
-|
-|===
-
-[[locking-sx]]
-== Разделяемые эксклюзивные блокировки
-
-Эти блокировки обеспечивают базовый тип функциональности - на чтение/запись и могут поддерживаться процессами, находящимся в состоянии ожидания. На текущий момент они реализованы в man:lockmgr[9].
-
-.Список разделяемых эксклюзивных блокировок
-[cols="1,1", options="header"]
-|===
-| Имя переменной
-| Защиты
-
-|`allproc_lock`
-|`allproc` `zombproc` `pidhashtbl` `proc`.`p_list` `proc`.`p_hash` `nextpid`
-
-|`proctree_lock`
-|`proc`.`p_children` `proc`.`p_sibling`
-|===
-
-[[locking-atomic]]
-== Атомарно защищенные переменные
-
-Переменной, защищенной атомарно, является особая переменная, которая не защищается явной блокировкой. Вместо этого для доступа к данным переменных используются специальные атомарные операции, как описано в man:atomic[9]. Лишь несколько переменных используются таким образом, хотя другие примитивы синхронизации, такие как мьютексы, реализованы с атомарно защищенными переменными.
-
-* `mtx`.`mtx_lock`