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