aboutsummaryrefslogtreecommitdiff
path: root/documentation/content/ru/books/arch-handbook/locking/_index.po
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/content/ru/books/arch-handbook/locking/_index.po')
-rw-r--r--documentation/content/ru/books/arch-handbook/locking/_index.po409
1 files changed, 409 insertions, 0 deletions
diff --git a/documentation/content/ru/books/arch-handbook/locking/_index.po b/documentation/content/ru/books/arch-handbook/locking/_index.po
new file mode 100644
index 0000000000..9653ca2162
--- /dev/null
+++ b/documentation/content/ru/books/arch-handbook/locking/_index.po
@@ -0,0 +1,409 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR The FreeBSD Project
+# This file is distributed under the same license as the FreeBSD Documentation package.
+# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025.
+msgid ""
+msgstr ""
+"Project-Id-Version: FreeBSD Documentation VERSION\n"
+"POT-Creation-Date: 2025-05-01 19:56-0300\n"
+"PO-Revision-Date: 2025-06-30 23:10+0000\n"
+"Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
+"Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
+"documentation/booksarch-handbooklocking_index/ru/>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 4.17\n"
+
+#. type: Title =
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:1
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:14
+#, no-wrap
+msgid "Locking Notes"
+msgstr "Заметки о блокировках"
+
+#. type: YAML Front Matter: title
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:1
+#, no-wrap
+msgid "Chapter 2. Locking Notes"
+msgstr "Глава 2. Заметки о блокировках"
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:52
+msgid ""
+"_This chapter is maintained by the FreeBSD SMP Next Generation Project._"
+msgstr ""
+"_Эта глава сопровождается и поддерживается проектом FreeBSD SMP Next "
+"Generation._"
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:54
+msgid ""
+"This document outlines the locking used in the FreeBSD kernel to permit "
+"effective multi-processing within the kernel. Locking can be achieved via "
+"several means. Data structures can be protected by mutexes or man:lockmgr[9] "
+"locks. A few variables are protected simply by always using atomic "
+"operations to access them."
+msgstr ""
+"Этот документ описывает механизмы блокировки, используемые в ядре FreeBSD "
+"для эффективной многопроцессорной обработки. Блокировка может быть "
+"достигнута несколькими способами. Структуры данных могут защищаться "
+"мьютексами или блокировками (lock) из man:lockmgr[9]. Некоторые переменные "
+"защищаются просто за счёт использования атомарных операций для доступа к ним."
+
+#. type: Title ==
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:56
+#, no-wrap
+msgid "Mutexes"
+msgstr "Mutexes"
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:59
+msgid ""
+"A mutex is simply a lock used to guarantee mutual exclusion. Specifically, a "
+"mutex may only be owned by one entity at a time. If another entity wishes to "
+"obtain a mutex that is already owned, it must wait until the mutex is "
+"released. In the FreeBSD kernel, mutexes are owned by processes."
+msgstr ""
+"Мьютекс — это просто блокировка, используемая для обеспечения взаимного "
+"исключения. Конкретно, мьютекс может принадлежать только одному объекту в "
+"один момент времени. Если другой объект хочет получить мьютекс, который уже "
+"принадлежит кому-то, он должен ждать, пока мьютекс не будет освобожден. В "
+"ядре FreeBSD мьютексы принадлежат процессам."
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:61
+msgid ""
+"Mutexes may be recursively acquired, but they are intended to be held for a "
+"short period of time. Specifically, one may not sleep while holding a mutex. "
+"If you need to hold a lock across a sleep, use a man:lockmgr[9] lock."
+msgstr ""
+"Мьютексы могут быть получены рекурсивно, но предполагается, что они "
+"удерживаются в течение короткого периода времени. В частности, нельзя "
+"переходить в режим сна, удерживая мьютекс. Если необходимо удерживать "
+"блокировку во время сна, используйте блокировку man:lockmgr[9]."
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:63
+msgid "Each mutex has several properties of interest:"
+msgstr "Каждый мьютекс обладает несколькими важными свойствами:"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:64
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:92
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:131
+#, no-wrap
+msgid "Variable Name"
+msgstr "Имя переменной"
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:66
+msgid "The name of the struct mtx variable in the kernel source."
+msgstr "Имя переменной struct mtx в исходном коде ядра."
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:67
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:93
+#, no-wrap
+msgid "Logical Name"
+msgstr "Логическое имя"
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:69
+msgid ""
+"The name of the mutex assigned to it by `mtx_init`. This name is displayed "
+"in KTR trace messages and witness errors and warnings and is used to "
+"distinguish mutexes in the witness code."
+msgstr ""
+"Имя мьютекса, назначенное ему с помощью `mtx_init`. Это имя отображается в "
+"сообщениях трассировки KTR, ошибках и предупреждениях witness, а также "
+"используется для различения мьютексов в коде witness."
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:70
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:94
+#, no-wrap
+msgid "Type"
+msgstr "Тип"
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:72
+msgid ""
+"The type of the mutex in terms of the `MTX_*` flags. The meaning for each "
+"flag is related to its meaning as documented in man:mutex[9]."
+msgstr ""
+"Тип мьютекса в терминах флагов `MTX_*`. Значение каждого флага связано с его "
+"значением, как описано в man:mutex[9]."
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:73
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:106
+#, no-wrap
+msgid "`MTX_DEF`"
+msgstr "`MTX_DEF`"
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:75
+msgid "A sleep mutex"
+msgstr "Мьютекс блокировки с ожиданием"
+
+#. type: Labeled list
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:76
+#, no-wrap
+msgid "`MTX_SPIN`"
+msgstr "`MTX_SPIN`"
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:78
+msgid "A spin mutex"
+msgstr "Мьютекс с вращающейся блокировкой (spin mutex)"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:79
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:100
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:112
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:118
+#, no-wrap
+msgid "`MTX_RECURSE`"
+msgstr "`MTX_RECURSE`"
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:81
+msgid "This mutex is allowed to recurse."
+msgstr "Этот мьютекс допускает рекурсию."
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:82
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:95
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:133
+#, no-wrap
+msgid "Protectees"
+msgstr "Защищаемые системы"
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:84
+msgid ""
+"A list of data structures or data structure members that this entry "
+"protects. For data structure members, the name will be in the form of "
+"`structure name`.`member name`."
+msgstr ""
+"Список структур данных или членов структур данных, которые защищает эта "
+"запись. Для членов структур данных имя будет указано в формате `имя "
+"структуры`.`имя члена`."
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:85
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:97
+#, no-wrap
+msgid "Dependent Functions"
+msgstr "Зависимые функции"
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:87
+msgid "Functions that can only be called if this mutex is held."
+msgstr ""
+"Функции, которые могут быть вызваны только при удержании этого мьютекса."
+
+#. type: Block title
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:88
+#, no-wrap
+msgid "Mutex List"
+msgstr "Список мьютексов"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:98
+#, no-wrap
+msgid "sched_lock"
+msgstr "sched_lock"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:99
+#, no-wrap
+msgid "\"sched lock\""
+msgstr "\"sched lock\""
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:99
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:117
+#, no-wrap
+msgid "`MTX_SPIN` \\"
+msgstr "`MTX_SPIN` \\"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:101
+#, no-wrap
+msgid "`_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`"
+msgstr ""
+"`_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`"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:103
+#, no-wrap
+msgid "`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`"
+msgstr ""
+"`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`"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:104
+#, no-wrap
+msgid "vm86pcb_lock"
+msgstr "vm86pcb_lock"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:105
+#, no-wrap
+msgid "\"vm86pcb lock\""
+msgstr "\"vm86pcb lock\""
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:107
+#, no-wrap
+msgid "`vm86pcb`"
+msgstr "`vm86pcb`"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:109
+#, no-wrap
+msgid "`vm86_bioscall`"
+msgstr "`vm86_bioscall`"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:110
+#, no-wrap
+msgid "Giant"
+msgstr "Giant"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:111
+#, no-wrap
+msgid "\"Giant\""
+msgstr "\"Giant\""
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:111
+#, no-wrap
+msgid "`MTX_DEF` \\"
+msgstr "`MTX_DEF` \\"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:113
+#, no-wrap
+msgid "nearly everything"
+msgstr "почти всё"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:115
+#, no-wrap
+msgid "lots"
+msgstr "много"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:116
+#, no-wrap
+msgid "callout_lock"
+msgstr "callout_lock"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:117
+#, no-wrap
+msgid "\"callout lock\""
+msgstr "\"callout lock\""
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:119
+#, no-wrap
+msgid "`callfree`, `callwheel`, `nextsoftcheck`, `proc`.`p_itcallout`, `proc`.`p_slpcallout`, `softticks`, `ticks`"
+msgstr ""
+"`callfree`, `callwheel`, `nextsoftcheck`, `proc`.`p_itcallout`, "
+"`proc`.`p_slpcallout`, `softticks`, `ticks`"
+
+#. type: Title ==
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:123
+#, no-wrap
+msgid "Shared Exclusive Locks"
+msgstr "Разделяемые эксклюзивные блокировки"
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:126
+msgid ""
+"These locks provide basic reader-writer type functionality and may be held "
+"by a sleeping process. Currently they are backed by man:lockmgr[9]."
+msgstr ""
+"Эти блокировки обеспечивают базовую функциональность типа читатель-писатель "
+"и могут удерживаться спящим процессом. В настоящее время они реализованы "
+"через man:lockmgr[9]."
+
+#. type: Block title
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:127
+#, no-wrap
+msgid "Shared Exclusive Lock List"
+msgstr "Список разделяемых эксклюзивных блокировок"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:134
+#, no-wrap
+msgid "`allproc_lock`"
+msgstr "`allproc_lock`"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:136
+#, no-wrap
+msgid "`allproc` `zombproc` `pidhashtbl` `proc`.`p_list` `proc`.`p_hash` `nextpid`"
+msgstr ""
+"`allproc` `zombproc` `pidhashtbl` `proc`.`p_list` `proc`.`p_hash` `nextpid`"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:137
+#, no-wrap
+msgid "`proctree_lock`"
+msgstr "`proctree_lock`"
+
+#. type: Table
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:138
+#, no-wrap
+msgid "`proc`.`p_children` `proc`.`p_sibling`"
+msgstr "`proc`.`p_children` `proc`.`p_sibling`"
+
+#. type: Title ==
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:141
+#, no-wrap
+msgid "Atomically Protected Variables"
+msgstr "Атомарно защищённые переменные"
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:144
+msgid ""
+"An atomically protected variable is a special variable that is not protected "
+"by an explicit lock. Instead, all data accesses to the variables use special "
+"atomic operations as described in man:atomic[9]. Very few variables are "
+"treated this way, although other synchronization primitives such as mutexes "
+"are implemented with atomically protected variables."
+msgstr ""
+"Переменная с атомарной защитой — это специальная переменная, которая не "
+"защищена явной блокировкой. Вместо этого все операции доступа к данным этой "
+"переменной используют специальные атомарные операции, как описано в "
+"man:atomic[9]. Очень немногие переменные обрабатываются таким образом, хотя "
+"другие примитивы синхронизации, такие как мьютексы, реализованы с "
+"использованием переменных с атомарной защитой."
+
+#. type: Plain text
+#: documentation/content/en/books/arch-handbook/locking/_index.adoc:145
+msgid "`mtx`.`mtx_lock`"
+msgstr "`mtx`.`mtx_lock`"