o Grammar.
This commit is contained in:
parent
9b34b39c11
commit
0dd1a3ed8c
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=34810
1 changed files with 13 additions and 13 deletions
|
@ -186,7 +186,7 @@ options KDB_TRACE</programlisting>
|
||||||
паника произошла раньше сбрасывания кэша на устройство хранения.
|
паника произошла раньше сбрасывания кэша на устройство хранения.
|
||||||
Выключение механизма softupdates (посредством монтирования файловой
|
Выключение механизма softupdates (посредством монтирования файловой
|
||||||
системы с опцией <quote>sync</quote>) значительно сказывается на
|
системы с опцией <quote>sync</quote>) значительно сказывается на
|
||||||
производительности и, опять-же, не гарантирует целосности
|
производительности и, опять-же, не гарантирует целостности
|
||||||
данных. Как компромисс, можно сократить задержки сбрасывания
|
данных. Как компромисс, можно сократить задержки сбрасывания
|
||||||
кэша механизма softupdates. Есть три переменных sysctl, значения
|
кэша механизма softupdates. Есть три переменных sysctl, значения
|
||||||
которых необходимо изменить (лучше всего — прописав их в
|
которых необходимо изменить (лучше всего — прописав их в
|
||||||
|
@ -205,7 +205,7 @@ kern.metadelay=3</programlisting>
|
||||||
должен быть не меньше размера ОЗУ компьютера. При последующей
|
должен быть не меньше размера ОЗУ компьютера. При последующей
|
||||||
загрузке дамп копируется в обычный файл. Это происходит сразу-же
|
загрузке дамп копируется в обычный файл. Это происходит сразу-же
|
||||||
после проверки и монтирования файловых систем, но перед
|
после проверки и монтирования файловых систем, но перед
|
||||||
активированием раздела свопа. Такое поведение контроллируется
|
активированием раздела свопа. Такое поведение контролируется
|
||||||
следующими переменными <filename>/etc/rc.conf</filename>:</para>
|
следующими переменными <filename>/etc/rc.conf</filename>:</para>
|
||||||
|
|
||||||
<programlisting>dumpdev="/dev/ad0s4b"
|
<programlisting>dumpdev="/dev/ad0s4b"
|
||||||
|
@ -261,7 +261,7 @@ dumpdir="/usr/core" </programlisting>
|
||||||
|
|
||||||
<para>Создание <filename>Makefile</filename> — дело
|
<para>Создание <filename>Makefile</filename> — дело
|
||||||
не сложное благодаря исчерпывающему набору вспомогательных средств,
|
не сложное благодаря исчерпывающему набору вспомогательных средств,
|
||||||
предоставляемых системой. В кратце, вот как должен выглядеть
|
предоставляемых системой. В вкратце, вот как должен выглядеть
|
||||||
<filename>Makefile</filename> для модуля ядра:</para>
|
<filename>Makefile</filename> для модуля ядра:</para>
|
||||||
|
|
||||||
<programlisting>SRCS=g_journal.c
|
<programlisting>SRCS=g_journal.c
|
||||||
|
@ -292,7 +292,7 @@ KMOD=geom_journal
|
||||||
справочника.</para>
|
справочника.</para>
|
||||||
|
|
||||||
<para>Тип <quote>malloc_type</quote> необходимо объявить в секции
|
<para>Тип <quote>malloc_type</quote> необходимо объявить в секции
|
||||||
деклараций файла с ихсодным кодом, например:</para>
|
деклараций файла с исходным кодом, например:</para>
|
||||||
|
|
||||||
<programlisting> static MALLOC_DEFINE(M_GJOURNAL, "gjournal data", "GEOM_JOURNAL Data");</programlisting>
|
<programlisting> static MALLOC_DEFINE(M_GJOURNAL, "gjournal data", "GEOM_JOURNAL Data");</programlisting>
|
||||||
|
|
||||||
|
@ -310,7 +310,7 @@ KMOD=geom_journal
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
<sect2 id="kernelprog-lists">
|
<sect2 id="kernelprog-lists">
|
||||||
<title>Очередя и списки</title>
|
<title>Очереди и списки</title>
|
||||||
|
|
||||||
<para>Ознакомьтесь с &man.queue.3;
|
<para>Ознакомьтесь с &man.queue.3;
|
||||||
Во множестве случаев вам необходимо будет организовывать и
|
Во множестве случаев вам необходимо будет организовывать и
|
||||||
|
@ -321,7 +321,7 @@ KMOD=geom_journal
|
||||||
из наиболее требовательных к памяти (его элементы - с двойными
|
из наиболее требовательных к памяти (его элементы - с двойными
|
||||||
связями), а также — наиболее медленный (однако счет идет
|
связями), а также — наиболее медленный (однако счет идет
|
||||||
на несколько инструкций ЦПУ, поэтому последнее утверждение не следует
|
на несколько инструкций ЦПУ, поэтому последнее утверждение не следует
|
||||||
воспринимать в серьез).</para>
|
воспринимать в всерьез).</para>
|
||||||
|
|
||||||
<para>Если важна скорость получения данных, то возьмите на вооружение
|
<para>Если важна скорость получения данных, то возьмите на вооружение
|
||||||
&man.tree.3; и &man.hashinit.9;.</para>
|
&man.tree.3; и &man.hashinit.9;.</para>
|
||||||
|
@ -333,7 +333,7 @@ KMOD=geom_journal
|
||||||
<para>Структура <structname>bio</structname> используется для всех
|
<para>Структура <structname>bio</structname> используется для всех
|
||||||
операций ввода/вывода, касающихся GEOM. Она содержит
|
операций ввода/вывода, касающихся GEOM. Она содержит
|
||||||
информацию о том, какое устройство ('поставщик geom') должно ответить
|
информацию о том, какое устройство ('поставщик geom') должно ответить
|
||||||
на запрос, тип запроса, смещение, длину и указатель на буффер,
|
на запрос, тип запроса, смещение, длину и указатель на буфер,
|
||||||
а также набор <quote>определенных пользователем</quote> флагов и
|
а также набор <quote>определенных пользователем</quote> флагов и
|
||||||
полей
|
полей
|
||||||
<!-- , которые могут помочь осуществить various hacks-->.
|
<!-- , которые могут помочь осуществить various hacks-->.
|
||||||
|
@ -367,7 +367,7 @@ KMOD=geom_journal
|
||||||
<title>Ggate</title>
|
<title>Ggate</title>
|
||||||
|
|
||||||
<para>Если максимальная производительность не требуется,
|
<para>Если максимальная производительность не требуется,
|
||||||
то более простой способ совершать преобразования данныx —
|
то более простой способ совершать преобразования данных —
|
||||||
это выполнять их в пространстве пользовательских процессов
|
это выполнять их в пространстве пользовательских процессов
|
||||||
посредством ggate (GEOM gate). К недостаткам следует отнести
|
посредством ggate (GEOM gate). К недостаткам следует отнести
|
||||||
невозможность простого переноса кода в ядро.</para>
|
невозможность простого переноса кода в ядро.</para>
|
||||||
|
@ -470,7 +470,7 @@ KMOD=geom_journal
|
||||||
|
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>16-байтного буффера для подписи — строки с
|
<para>16-байтного буфера для подписи — строки с
|
||||||
завершающим нулем (обычно это имя класса)</para>
|
завершающим нулем (обычно это имя класса)</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
|
@ -500,7 +500,7 @@ KMOD=geom_journal
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>программа решает каким классом geom ей прийдется
|
<para>программа решает каким классом geom ей придется
|
||||||
управлять и ищет библиотеку
|
управлять и ищет библиотеку
|
||||||
<filename>geom_<replaceable>CLASSNAME</replaceable>.so</filename>
|
<filename>geom_<replaceable>CLASSNAME</replaceable>.so</filename>
|
||||||
(которая обычно находится в <filename>/lib/geom</filename>).</para>
|
(которая обычно находится в <filename>/lib/geom</filename>).</para>
|
||||||
|
@ -796,13 +796,13 @@ KMOD=geom_journal
|
||||||
обрабатывает запросы ввода/вывода, то, что он может блокироваться по
|
обрабатывает запросы ввода/вывода, то, что он может блокироваться по
|
||||||
мере необходимости. Это, несомненно, привлекательно, но должно быть
|
мере необходимости. Это, несомненно, привлекательно, но должно быть
|
||||||
хорошо обдумано. Блокирование — хорошо и удобно, но может
|
хорошо обдумано. Блокирование — хорошо и удобно, но может
|
||||||
существенно снизить поизводительность преобразований данных в
|
существенно снизить производительность преобразований данных в
|
||||||
системе GEOM. Особо требовательные к производительности классы
|
системе GEOM. Особо требовательные к производительности классы
|
||||||
могут делать всю работу в функции <function>.start</function>(),
|
могут делать всю работу в функции <function>.start</function>(),
|
||||||
уделяя особое внимание ошибкам при работе с памятью.</para>
|
уделяя особое внимание ошибкам при работе с памятью.</para>
|
||||||
|
|
||||||
<para>Еще одно преимущество потока <quote>обработчика событий</quote>
|
<para>Еще одно преимущество потока <quote>обработчика событий</quote>
|
||||||
это сериализация всех запростов и ответов, приходящих с разных
|
это сериализация всех запросов и ответов, приходящих с разных
|
||||||
потоков geom в один поток. Это также удобно, но может быть медленным.
|
потоков geom в один поток. Это также удобно, но может быть медленным.
|
||||||
В большинстве случаев, обработка запросов функцией
|
В большинстве случаев, обработка запросов функцией
|
||||||
<function>.done</function>() может быть оставлена потоку
|
<function>.done</function>() может быть оставлена потоку
|
||||||
|
@ -811,7 +811,7 @@ KMOD=geom_journal
|
||||||
<para>У мьютексов в ядре FreeBSD (&man.mutex.9;) есть одно различие
|
<para>У мьютексов в ядре FreeBSD (&man.mutex.9;) есть одно различие
|
||||||
с их аналогами из пространства пользовательских процессов —
|
с их аналогами из пространства пользовательских процессов —
|
||||||
во время удержания мьютекса в коде не должно быть блокировки. Если
|
во время удержания мьютекса в коде не должно быть блокировки. Если
|
||||||
в коде необходимо блокирование, то лучше исплользовать &man.sx.9;.
|
в коде необходимо блокирование, то лучше использовать &man.sx.9;.
|
||||||
С другой стороны, если вся ваша работа выполняется в одном потоке,
|
С другой стороны, если вся ваша работа выполняется в одном потоке,
|
||||||
вы можете обойтись вообще без мьютексов.</para>
|
вы можете обойтись вообще без мьютексов.</para>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
Loading…
Reference in a new issue