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