Synchronize with English 1.8

Obtained from: The FreeBSD Russian Documentation Project
This commit is contained in:
Andrey Zakhvatov 2005-04-23 07:14:35 +00:00
parent 6c319f37eb
commit 4dc2e7591e
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=24376

View file

@ -2,17 +2,17 @@
The FreeBSD Russian Documentation Project
$FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/design-44bsd/book.sgml,v 1.10 2004/02/21 18:04:46 andy Exp $
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/design-44bsd/book.sgml,v 1.13 2005/04/23 07:14:17 andy Exp $
Original revision: 1.7
Original revision: 1.8
-->
<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
%man;
<!ENTITY % books.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Books Entity Set//EN">
%books.ent;
]>
<book>
<book lang="ru">
<bookinfo>
<title>Архитектура и реализация операционной системы 4.4BSD</title>
@ -191,13 +191,13 @@
подробности архитектуры и реализации этих сервисов в 4.4BSD.</para>
</sect2>
</sect1>
<sect1 id="overview-kernel-organization">
<title>Организация ядра</title>
<para>В этом разделе мы рассматриваем организацию ядра 4.4BSD с двух
точек зрения:</para>
<orderedlist>
<listitem>
<para>Как статический блок программного обеспечения, категоризуемый
@ -259,7 +259,7 @@
<entry>Процент от всего ядра</entry>
</row>
</thead>
<tfoot>
<row>
<entry>всего машинно-независимая часть</entry>
@ -267,50 +267,50 @@
<entry>80.4</entry>
</row>
</tfoot>
<tbody>
<row>
<entry>файлы заголовков</entry>
<entry>9,393</entry>
<entry>4.6</entry>
</row>
<row>
<entry>инициализация</entry>
<entry>1,107</entry>
<entry>0.6</entry>
</row>
<row>
<entry>службы ядра</entry>
<entry>8,793</entry>
<entry>4.4</entry>
</row>
<row>
<entry>общесистемные интерфейсы</entry>
<entry>4,782</entry>
<entry>2.4</entry>
</row>
<row>
<entry>межпроцессное взаимодействие</entry>
<entry>4,540</entry>
<entry>2.2</entry>
</row>
<row>
<entry>работа с терминалами</entry>
<entry>3,911</entry>
<entry>1.9</entry>
</row>
<row>
<entry>виртуальная память</entry>
<entry>11,813</entry>
<entry>5.8</entry>
</row>
<row>
<entry>управление vnode</entry>
<entry>7,954</entry>
@ -322,67 +322,67 @@
<entry>6,550</entry>
<entry>3.2</entry>
</row>
<row>
<entry>хранение файлов</entry>
<entry>4,365</entry>
<entry>2.2</entry>
</row>
<row>
<entry>хранение log-структур</entry>
<entry>4,337</entry>
<entry>2.1</entry>
</row>
<row>
<entry>хранение на основе памяти</entry>
<entry>645</entry>
<entry>0.3</entry>
</row>
<row>
<entry>файловая система cd9660</entry>
<entry>4,177</entry>
<entry>2.1</entry>
</row>
<row>
<entry>различные файловые системы (10)</entry>
<entry>12,695</entry>
<entry>6.3</entry>
</row>
<row>
<entry>сетевая файловая система</entry>
<entry>17,199</entry>
<entry>8.5</entry>
</row>
<row>
<entry>сетевое взаимодействие</entry>
<entry>8,630</entry>
<entry>4.3</entry>
</row>
<row>
<entry>протоколы internet</entry>
<entry>11,984</entry>
<entry>5.9</entry>
</row>
<row>
<entry>протоколы ISO</entry>
<entry>23,924</entry>
<entry>11.8</entry>
</row>
<row>
<entry>протоколы X.25</entry>
<entry>10,626</entry>
<entry>5.3</entry>
</row>
<row>
<entry>протоколы XNS</entry>
<entry>5,192</entry>
@ -391,11 +391,11 @@
</tbody>
</tgroup>
</table>
<para>Большая часть программного обеспечения в этих категориях является
машинно-независимой и переносима между различными аппаратными
архитектурами.</para>
<para>Машинно-зависимые аспекты ядра отделены от основного кода. В
частности, ни в одной части машинно-независимого кода не содержится
кода, зависимого от конкретной архитектуры. Когда требуется произвести
@ -425,7 +425,7 @@
<para>Поддержка устройств ввода/вывода во время работы</para>
</listitem>
</itemizedlist>
<table frame="none" id="table-mach-dep">
<title>Машинно-зависимое программное обеспечение для HP300 в ядре
4.4BSD</title>
@ -453,7 +453,7 @@
<entry>1,562</entry>
<entry>0.8</entry>
</row>
<row>
<entry>заголовки драйверов устройств</entry>
<entry>3,495</entry>
@ -465,25 +465,25 @@
<entry>17,506</entry>
<entry>8.7</entry>
</row>
<row>
<entry>виртуальная память</entry>
<entry>3,087</entry>
<entry>1.5</entry>
</row>
<row>
<entry>остальная машинно-зависимая часть</entry>
<entry>6,287</entry>
<entry>3.1</entry>
</row>
<row>
<entry>процедуры на ассемблере</entry>
<entry>3,014</entry>
<entry>1.5</entry>
</row>
<row>
<entry>совместимость с HP/UX</entry>
<entry>4,683</entry>
@ -516,10 +516,10 @@
он рассредоточен везде, и обычно появляется там, где логически связан с
объектом инициализации.</para>
</sect1>
<sect1 id="overview-kernel-service">
<title>Службы ядра</title>
<para>Разграничение между кодом уровней ядра и пользователя
обеспечивается аппаратными методами, предоставляемыми оборудованием.
Ядро работает в отдельном адресном пространстве, которое недоступно
@ -539,7 +539,7 @@
буфер ядра, пока процесс находится в ожидании, но, как правило, будет
немедленно завершаться до того, как буфер ядра реально будет записан на
диск.</para>
<para>Системный вызов обычно реализуется как аппаратное прерывание,
которое изменяет режим работы CPU и текущее отображение адресного
пространства. Параметры, передаваемые пользователями системным
@ -557,7 +557,7 @@
языка программирования C код этой ошибки сохраняется в глобальной
переменной <emphasis>errno</emphasis>, а функция, соответствующая
системному вызову, возвращает в качестве результата значение -1.</para>
<para>Пользовательские приложения и ядро работают независимо друг от
друга. 4.4BSD не хранит управляющие блоки ввода/вывода и другие
связанные с операционной системой структуры данных в адресном
@ -567,7 +567,7 @@
как приостановка процесса на время выполнения другого, незаметно для
участвующих процессов.</para>
</sect1>
<sect1 id="overview-process-management">
<title>Управление процессами</title>
@ -586,14 +586,14 @@
используется ядром для идентификации процесса при сообщении
пользователю об изменении его состояния, и пользователем для указания
процесса в системном вызове.</para>
<para>Ядро создает процесс, дублируя контекст другого процесса. Новый
процесс считается <emphasis>порожденным процессом</emphasis> исходного
<emphasis>родительского процесса</emphasis>. Контекст, копируемый в
ходе создания процесса, включает как состояние выполнения процесса
уровня пользователя, так и системное состояние процесса, управляемое
ядром. Важные компоненты состояния ядра описаны в Главе 4.</para>
<figure id="fig-process-lifecycle">
<title>Жизненный цикл процесса</title>
@ -615,13 +615,13 @@
+----------------+ +----------------+ +----------------+
</literallayout>
</textobject>
<textobject>
<phrase>Системные вызовы управления процессами</phrase>
</textobject>
</mediaobject>
</figure>
<para>Жизненный цикл процесса изображен на <xref
linkend="fig-process-lifecycle">. Процесс может создать новый процесс,
который является копией исходного процесса с помощью системного вызова
@ -666,7 +666,7 @@
завершения порожденного процесса особому системному процессу
<!-- FIXME, the emphasis is wrong -->
<emphasis>init</emphasis>: обратитесь к разделам 3.1 и 14.6).</para>
<para>Подробное описание того, как ядро создает и уничтожает процессы,
дается в Главе 5.</para>
@ -730,7 +730,7 @@
<para>Подробное описание архитектуры и реализации механизма сигналов
дается в Разделе 4.7.</para>
</sect2>
<sect2>
<title>Группы управления и сеансы</title>
@ -785,7 +785,7 @@
процессора пользователя и заданий, которые он порождает.</para>
</sect2>
</sect1>
<sect1 id="overview-memory-management">
<title>Управление памятью</title>
@ -820,7 +820,7 @@
системой абсолютно незаметно для процессов. Процесс может, однако,
указать системе объем памяти, который будет использоваться, в качестве
помощи.</para>
<sect2>
<title>Решения BSD по архитектуре управления памятью</title>
@ -898,14 +898,14 @@
страницы памяти и их объем не кратен размеру аппаратной
страницы памяти.</para>
</listitem>
<listitem>
<para>Если страница памяти забирается от процесса, он не может
больше ссылаться на эту страницу. Некоторые программы зависят от
данных, остающихся в буфере, даже после записи этих
данных.</para>
</listitem>
<listitem>
<para>Если процесс позволяет хранить копию страницы памяти (как это
делается в существующей 4.4BSD), то страница должна иметь атрибут
@ -918,7 +918,7 @@
записать новые данные в свой буфер вывода, что приводит в любом
случае к копированию данных.</para>
</listitem>
<listitem>
<para>Когда страницы переносятся в новые адреса виртуальной памяти,
большинство аппаратных менеджеров памяти требуют, чтобы кэш
@ -934,7 +934,7 @@
Интерфейс <emphasis>mmap</emphasis> дает методы для выполнения обеих
этих операций без копирования.</para>
</sect2>
<sect2>
<title>Управление памятью внутри ядра</title>
@ -969,7 +969,7 @@
нужно.</para>
</sect2>
</sect1>
<sect1 id="overview-io-system">
<title>Система ввода/вывода</title>
@ -1027,7 +1027,7 @@
<emphasis>open</emphasis>. Работа с устройствами ввода/вывода
осуществляется как с файлами.</para>
</listitem>
<listitem>
<para><emphasis>Каналом</emphasis> является линейная
последовательность байт, такая же, как файл, но используемая
@ -1091,7 +1091,7 @@
всех необходимых действий, таких, как окончательное удаление файла
или уничтожение сокета.</para>
</sect2>
<sect2>
<title>Управление дескрипторами</title>
@ -1146,14 +1146,14 @@
избежание этой проблемы в системе имеется системный вызов
<emphasis>dup2</emphasis>; он похож на <emphasis>dup</emphasis>, но
воспринимает дополнительный аргумент, указывающий номер нужного
ÄÅÓËÒÉÐÔÏÒÁ (ÅÓÌÉ ÎÕÖÎÙÊ ÄÅÓËÒÉÐÔÏÒ ÕÖÅ ÏÔËÒÙÔ, ÔÏ
ÄÅÓËÒÉÐÔÏÒÁ (ÅÓÌÉ ÎÕÖÎÙÊ ÄÅÓËÒÉÐÔÏÒ ÕÖÅ ÏÔËÒÙÔ, ÔÏ
<emphasis>dup2</emphasis> его закроет перед повторным
использованием).</para>
</sect2>
<sect2>
<title>Устройства</title>
<para>Аппаратные устройства имеют связанные с ними имена файлов, и к
ним может обращаться пользователь при помощи тех же самых системных
вызовов, что используются для обычных файлов. Ядро может
@ -1212,10 +1212,10 @@
особой или измененной версии функции
<emphasis>write</emphasis>.</para>
</sect2>
<sect2>
<title>Механизм межпроцессных коммуникаций посредством сокетов</title>
<para>В ядре 4.2BSD появился механизм межпроцессного взаимодействия,
более гибкий, чем каналы, основанный на <emphasis>сокетах</emphasis>.
Сокет является конечной точкой коммуникаций, доступный через
@ -1266,7 +1266,7 @@
<emphasis>recvmsg</emphasis> и <emphasis>sendmsg</emphasis>,
соответственно.</para>
</sect2>
<sect2>
<title>Множественный ввод/вывод</title>
@ -1306,7 +1306,7 @@
<emphasis>write</emphasis> используются столь часто, что накладные
расходы на такую симуляцию не стоят того.</para>
</sect2>
<sect2>
<title>Поддержка нескольких файловых систем</title>
@ -1323,16 +1323,16 @@
<listitem>
<para>Локальные файловые системы, использующие диск</para>
</listitem>
<listitem>
<para>Файлы, импортируемые при помощи разнообразных протоколов
удаленных файловых систем</para>
</listitem>
<listitem>
<para>Файловые системы CD-ROM, доступные только для чтения</para>
</listitem>
<listitem>
<para>Файловые системы, предоставляющие специализированные услуги
-- к примеру, файловая система <filename>/proc</filename></para>
@ -1347,7 +1347,7 @@
специального назначения описаны в Разделе 6.7.</para>
</sect2>
</sect1>
<sect1 id="overview-filesystem">
<title>Файловые системы</title>
@ -1408,7 +1408,7 @@
</textobject>
</mediaobject>
</figure>
<para>Одна небольшая файловая система показана на <xref
linkend="fig-small-fs">. Каталоги могут содержать подкаталоги, и нет
ограничений вложенности одного каталога в другой по глубине. Для
@ -1522,13 +1522,13 @@
состоянии, что может случиться при последовательном вызове серии
операций.</para>
</listitem>
<listitem>
<para>При работе сетевой файловой системы создание и удаление файлов
и каталогов должны выполняться атомарно, чтобы могли выполняться
последовательно.</para>
</listitem>
<listitem>
<para>При реализации поддержки не-UNIX файловых систем, таких, как
файловая система MS-DOS, на другом разделе диска, может оказаться,
@ -1584,11 +1584,11 @@
<listitem>
<para>Пользователя, который является владельцем файла</para>
</listitem>
<listitem>
<para>Группы, которая приписана файлу</para>
</listitem>
<listitem>
<para>Всех остальных</para>
</listitem>
@ -1647,7 +1647,7 @@
длинных имен файлов, впервые появившаяся в 4.2BSD, практически
полностью ликвидировала эту проблему.</para>
</sect1>
<sect1 id="overview-filestore">
<title>Размещение файлов</title>
@ -1672,7 +1672,7 @@
операционной системы Sprite <xref
linkend="biblio-rosenblum"></para>
</listitem>
<listitem>
<para>Файловая система в памяти</para>
</listitem>
@ -1704,7 +1704,7 @@
памяти преследуется цель организовать максимально компактное хранение
данных для минимизации использования ресурсов виртуальной памяти.</para>
</sect1>
<sect1 id="overview-nfs">
<title>Сетевая файловая система</title>
@ -1747,7 +1747,7 @@
независимо от спецификаций протокола <xref linkend="biblio-macklem">.
Протокол NFS описан в Главе 9.</para>
</sect1>
<sect1 id="overview-terminal">
<title>Терминалы</title>
@ -1768,7 +1768,7 @@
обрабатывается так, что обеспечиваются стандартные функции,
ориентированные на редактирование строк, и он представляется процессу
в виде целых строк.</para>
<para>Экранные редакторы и программы, которые взаимодействуют с другими
машинами, обычно работают в <emphasis>неканоническом режиме</emphasis>
(часто называемом <emphasis>raw-режимом</emphasis> или
@ -1785,7 +1785,7 @@
сигналы и разрешить управление выходным потоком, в противном случае
работать в неканоническом режиме; все остальные символы будут
передаваться в процесс необработанными.</para>
<para>Что касается выходного потока, то терминальный обработчик
предоставляет простые службы по его форматированию, включая</para>
@ -1819,7 +1819,7 @@
<sect1 id="overview-ipc">
<title>Коммуникации между процессами</title>
<para>Межпроцессные коммуникации в 4.4BSD организованы в
<emphasis>коммуникационные домены</emphasis>. К поддерживаемым на
данный момент доменам относятся <emphasis>локальный домен</emphasis>
@ -1869,7 +1869,7 @@
Для более сложных сокетов, таких, как те, что используются для посылки
датаграмм и в которых при каждом вызове <emphasis>send</emphasis> должен
указываться адрес назначения, был добавлен новый интерфейс.</para>
<para>Другим достоинством является то, что новый интерфейс легко
переносим. Вскоре после тестового релиза, полученного из Беркли,
интерфейс сокетов был перенесен в System III поставщиком UNIX (хотя
@ -1882,7 +1882,7 @@
интерфейс сокетов был использован в качестве основы для сетевого
интерфейса Winsock от Microsoft для Windows.</para>
</sect1>
<sect1 id="overview-network-communication">
<title>Сетевые коммуникации</title>
@ -1912,7 +1912,7 @@
использовалась для новых приложений, работающих с новым сетевым
протоколом.</para>
</sect1>
<sect1 id="overview-network-implementation">
<title>Сетевая реализация</title>
@ -1944,7 +1944,7 @@
возможностям по маршрутизации в 4.4BSD относятся раздельные уровни
маршрутизации с адресами переменной длины и сетевыми масками.</para>
</sect1>
<sect1 id="overview-operation">
<title>Работа системы</title>
@ -1967,13 +1967,13 @@
оболочка, из которой пользователь может запускать дополнительные
процессы.</para>
</sect1>
<bibliography id="references">
<title>Ссылки</title>
<biblioentry id="biblio-accetta">
<abbrev>Accetta et al, 1986</abbrev>
<biblioset relation="article">
<title>Mach: A New Kernel Foundation for UNIX Development"</title>
@ -1987,7 +1987,7 @@
<firstname>R.</firstname>
<surname>Baron</surname>
</author>
<author>
<firstname>W.</firstname>
<surname>Bolosky</surname>
@ -1997,12 +1997,12 @@
<firstname>D.</firstname>
<surname>Golub</surname>
</author>
<author>
<firstname>R.</firstname>
<surname>Rashid</surname>
</author>
<author>
<firstname>A.</firstname>
<surname>Tevanian</surname>
@ -2026,7 +2026,7 @@
<biblioentry id="biblio-cheriton">
<abbrev>Cheriton, 1988</abbrev>
<biblioset relation="article">
<title>The V Distributed System</title>
@ -2047,7 +2047,7 @@
<biblioentry id="biblio-ewens">
<abbrev>Ewens et al, 1985</abbrev>
<biblioset relation="article">
<title>Tunis: A Distributed Multiprocessor Operating System</title>
@ -2085,7 +2085,7 @@
<biblioentry id="biblio-gingell">
<abbrev>Gingell et al, 1987</abbrev>
<biblioset relation="article">
<title>Virtual Memory Architecture in SunOS</title>
@ -2115,10 +2115,10 @@
<pubdate>June 1987</pubdate>
</biblioset>
</biblioentry>
<biblioentry id="biblio-kernighan">
<abbrev>Kernighan & Pike, 1984</abbrev>
<title>The UNIX Programming Environment</title>
<authorgroup>
@ -2140,13 +2140,13 @@
<state>NJ</state>
</address>
</publisher>
<pubdate>1984</pubdate>
</biblioentry>
<biblioentry id="biblio-macklem">
<abbrev>Macklem, 1994</abbrev>
<biblioset relation="chapter">
<title>The 4.4BSD NFS Implementation</title>
@ -2175,7 +2175,7 @@
<biblioentry id="biblio-mckusick-2">
<abbrev>McKusick & Karels, 1988</abbrev>
<biblioset relation="article">
<title>Design of a General Purpose Memory Allocator for the 4.3BSD
UNIX Kernel</title>
@ -2201,10 +2201,10 @@
<pubdate>June 1998</pubdate>
</biblioset>
</biblioentry>
<biblioentry id="biblio-mckusick-1">
<abbrev>McKusick et al, 1994</abbrev>
<biblioset relation="manual">
<title>Berkeley Software Architecture Manual, 4.4BSD Edition</title>
@ -2255,10 +2255,10 @@
<biblioentry id="biblio-ritchie">
<abbrev>Ritchie, 1988</abbrev>
<title>Early Kernel Design</title>
<subtitle>private communication</subtitle>
<author>
<firstname>D. M.</firstname>
<surname>Ritchie</surname>
@ -2269,7 +2269,7 @@
<biblioentry id="biblio-rosenblum">
<abbrev>Rosenblum & Ousterhout, 1992</abbrev>
<biblioset relation="article">
<title>The Design and Implementation of a Log-Structured File
System</title>
@ -2299,7 +2299,7 @@
<biblioentry id="biblio-rozier">
<abbrev>Rozier et al, 1988</abbrev>
<biblioset relation="article">
<title>Chorus Distributed Operating Systems</title>
@ -2371,11 +2371,11 @@
<biblioentry id="biblio-tevanian">
<abbrev>Tevanian, 1987</abbrev>
<title>Architecture-Independent Virtual Memory Management for Parallel
and Distributed Environments: The Mach Approach</title>
<subtitle>Technical Report CMU-CS-88-106,</subtitle>
<author>
<firstname>A.</firstname>
<surname>Tevanian</surname>
@ -2390,7 +2390,7 @@
<state>PA</state>
</address>
</publisher>
<pubdate>December 1987</pubdate>
</biblioentry>
</bibliography>