o Grammar.

This commit is contained in:
Maxim Konovalov 2009-10-20 05:54:08 +00:00
parent 9b34b39c11
commit 0dd1a3ed8c
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=34810

View file

@ -186,7 +186,7 @@ options KDB_TRACE</programlisting>
паника произошла раньше сбрасывания кэша на устройство хранения. паника произошла раньше сбрасывания кэша на устройство хранения.
Выключение механизма softupdates (посредством монтирования файловой Выключение механизма softupdates (посредством монтирования файловой
системы с опцией <quote>sync</quote>) значительно сказывается на системы с опцией <quote>sync</quote>) значительно сказывается на
производительности и, опять-же, не гарантирует целосности производительности и, опять-же, не гарантирует целостности
данных. Как компромисс, можно сократить задержки сбрасывания данных. Как компромисс, можно сократить задержки сбрасывания
кэша механизма softupdates. Есть три переменных sysctl, значения кэша механизма softupdates. Есть три переменных sysctl, значения
которых необходимо изменить (лучше всего &mdash; прописав их в которых необходимо изменить (лучше всего &mdash; прописав их в
@ -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> &mdash; дело <para>Создание <filename>Makefile</filename> &mdash; дело
не сложное благодаря исчерпывающему набору вспомогательных средств, не сложное благодаря исчерпывающему набору вспомогательных средств,
предоставляемых системой. В кратце, вот как должен выглядеть предоставляемых системой. В вкратце, вот как должен выглядеть
<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
из наиболее требовательных к памяти (его элементы - с двойными из наиболее требовательных к памяти (его элементы - с двойными
связями), а также &mdash; наиболее медленный (однако счет идет связями), а также &mdash; наиболее медленный (однако счет идет
на несколько инструкций ЦПУ, поэтому последнее утверждение не следует на несколько инструкций ЦПУ, поэтому последнее утверждение не следует
воспринимать в серьез).</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 &mdash; то более простой способ совершать преобразования данных &mdash;
это выполнять их в пространстве пользовательских процессов это выполнять их в пространстве пользовательских процессов
посредством ggate (GEOM gate). К недостаткам следует отнести посредством ggate (GEOM gate). К недостаткам следует отнести
невозможность простого переноса кода в ядро.</para> невозможность простого переноса кода в ядро.</para>
@ -470,7 +470,7 @@ KMOD=geom_journal
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para>16-байтного буффера для подписи &mdash; строки с <para>16-байтного буфера для подписи &mdash; строки с
завершающим нулем (обычно это имя класса)</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
обрабатывает запросы ввода/вывода, то, что он может блокироваться по обрабатывает запросы ввода/вывода, то, что он может блокироваться по
мере необходимости. Это, несомненно, привлекательно, но должно быть мере необходимости. Это, несомненно, привлекательно, но должно быть
хорошо обдумано. Блокирование &mdash; хорошо и удобно, но может хорошо обдумано. Блокирование &mdash; хорошо и удобно, но может
существенно снизить поизводительность преобразований данных в существенно снизить производительность преобразований данных в
системе 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;) есть одно различие
с их аналогами из пространства пользовательских процессов &mdash; с их аналогами из пространства пользовательских процессов &mdash;
во время удержания мьютекса в коде не должно быть блокировки. Если во время удержания мьютекса в коде не должно быть блокировки. Если
в коде необходимо блокирование, то лучше исплользовать &man.sx.9;. в коде необходимо блокирование, то лучше использовать &man.sx.9;.
С другой стороны, если вся ваша работа выполняется в одном потоке, С другой стороны, если вся ваша работа выполняется в одном потоке,
вы можете обойтись вообще без мьютексов.</para> вы можете обойтись вообще без мьютексов.</para>
</sect2> </sect2>