diff options
Diffstat (limited to 'documentation/content/ru/books/design-44bsd/_index.po')
-rw-r--r-- | documentation/content/ru/books/design-44bsd/_index.po | 3677 |
1 files changed, 3677 insertions, 0 deletions
diff --git a/documentation/content/ru/books/design-44bsd/_index.po b/documentation/content/ru/books/design-44bsd/_index.po new file mode 100644 index 0000000000..e94660b26e --- /dev/null +++ b/documentation/content/ru/books/design-44bsd/_index.po @@ -0,0 +1,3677 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR The FreeBSD Project +# This file is distributed under the same license as the FreeBSD Documentation package. +# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025. +msgid "" +msgstr "" +"Project-Id-Version: FreeBSD Documentation VERSION\n" +"POT-Creation-Date: 2025-10-03 18:09+0300\n" +"PO-Revision-Date: 2025-10-03 04:45+0000\n" +"Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n" +"Language-Team: Russian <https://translate-dev.freebsd.org/projects/" +"documentation/booksdesign-44bsd_index/ru/>\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.17\n" + +#. type: Yaml Front Matter Hash Value: description +#: documentation/content/en/books/design-44bsd/_index.adoc:1 +#, no-wrap +msgid "Donated by Addison-Wesley, provides a design overview of 4.4BSD, from which FreeBSD was originally derived" +msgstr "Предоставлено издательством Addison-Wesley и предоставляет обзор архитектуры 4.4BSD, от которой изначально произошел FreeBSD" + +#. type: Title = +#: documentation/content/en/books/design-44bsd/_index.adoc:1 +#: documentation/content/en/books/design-44bsd/_index.adoc:16 +#, no-wrap +msgid "The Design and Implementation of the 4.4BSD Operating System" +msgstr "Архитектура и реализация операционной системы 4.4BSD" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:50 +msgid "'''" +msgstr "'''" + +#. type: Title == +#: documentation/content/en/books/design-44bsd/_index.adoc:54 +#, no-wrap +msgid "Design Overview of 4.4BSD" +msgstr "Обзор архитектуры 4.4BSD" + +#. type: Title === +#: documentation/content/en/books/design-44bsd/_index.adoc:57 +#, no-wrap +msgid "4.4BSD Facilities and the Kernel" +msgstr "Подсистемы и ядро 4.4BSD" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:61 +msgid "" +"The 4.4BSD kernel provides four basic facilities: processes, a filesystem, " +"communications, and system startup. This section outlines where each of " +"these four basic services is described in this book." +msgstr "" +"Ядро 4.4BSD предоставляет четыре базовых подсистемы: процессы, файловую " +"систему, коммуникации и запуск системы. Этот раздел перечисляет, в каком " +"месте этой книги описана каждая из этих подсистем." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:63 +msgid "" +"Processes constitute a thread of control in an address space. Mechanisms for " +"creating, terminating, and otherwise controlling processes are described in " +"Chapter 4. The system multiplexes separate virtual-address spaces for each " +"process; this memory management is discussed in Chapter 5." +msgstr "" +"Процессы образуют поток управления в адресном пространстве. Механизмы " +"создания, завершения и другие управляющие процессы описаны в Главе 4. Для " +"каждого процесса система мультиплексирует отдельное виртуальное адресное " +"пространство; такое управление памятью обсуждается в Главе 5." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:64 +msgid "" +"The user interface to the filesystem and devices is similar; common aspects " +"are discussed in Chapter 6. The filesystem is a set of named files, " +"organized in a tree-structured hierarchy of directories, and of operations " +"to manipulate them, as presented in Chapter 7. Files reside on physical " +"media such as disks. 4.4BSD supports several organizations of data on the " +"disk, as set forth in Chapter 8. Access to files on remote machines is the " +"subject of Chapter 9. Terminals are used to access the system; their " +"operation is the subject of Chapter 10." +msgstr "" +"Механизм доступа пользователя к файловой системе и устройствам один и тот " +"же; общие аспекты обсуждаются в Главе 6. Файловая система является набором " +"именованных файлов, организованных в древовидную иерархию каталогов, а " +"операции по управлению ими представлены в Главе 7. Файлы располагаются на " +"таких физических носителях, как диски. 4.4BSD поддерживает несколько типов " +"организации данных на диске, как описано далее в Главе 8. Доступ к файлам на " +"удаленных машинах является предметом обсуждения в Главе 9. Для доступа к " +"системе Терминалы используются терминалы; их функционированию посвящена " +"глава 10." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:65 +msgid "" +"Communication mechanisms provided by traditional UNIX systems include " +"simplex reliable byte streams between related processes (see pipes, Section " +"11.1), and notification of exceptional events (see signals, Section 4.7). " +"4.4BSD also has a general interprocess-communication facility. This " +"facility, described in Chapter 11, uses access mechanisms distinct from " +"those of the filesystem, but, once a connection is set up, a process can " +"access it as though it were a pipe. There is a general networking framework, " +"discussed in Chapter 12, that is normally used as a layer underlying the IPC " +"facility. Chapter 13 describes a particular networking implementation in " +"detail." +msgstr "" +"Механизмы коммуникаций, предоставляемые традиционными UNIX-системами, " +"включают однонаправленные потоки байтов между связанными процессами " +"(смотрите материал о конвейерах в Разделе 11.1) и извещение об " +"исключительных событиях (смотрите материал о сигналах в Разделе 4.7). В " +"4.4BSD имеется также механизм межпроцессного взаимодействия между " +"процессами. Этот механизм, описываемый в Главе 11, использует способы " +"доступа, отличающиеся от тех, что используются в файловой системе, но, как " +"только соединение установлено, процесс может работать с ним, как будто это " +"конвейер. Имеется и механизм работы с сетью, описываемый в Главе 12, который " +"обычно используется как слой ниже механизма IPC. В Главе 13 дается детальное " +"описание конкретной реализации механизма работы с сетью." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:66 +msgid "" +"Any real operating system has operational issues, such as how to start it " +"running. Startup and operational issues are described in Chapter 14." +msgstr "" +"В любой операционной системе присутствуют вопросы управления, такие, как ее " +"запуск. Запуск и вопросы управления обсуждаются в Главе 14." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:70 +msgid "" +"Sections 2.3 through 2.14 present introductory material related to Chapters " +"3 through 14. We shall define terms, mention basic system calls, and " +"explore historical developments. Finally, we shall give the reasons for " +"many major design decisions." +msgstr "" +"Разделы с 2.3 по 2.14 представляют собой вводный материал, относящийся к " +"главам с 3 по 14. Мы определим понятия, коснемся основных системных вызовов " +"и рассмотрим исторические разработки. Наконец, мы расскажем о причинах " +"многих ключевых архитектурных решений." + +#. type: Title ==== +#: documentation/content/en/books/design-44bsd/_index.adoc:71 +#, no-wrap +msgid "The Kernel" +msgstr "Ядро" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:78 +msgid "" +"The _kernel_ is the part of the system that runs in protected mode and " +"mediates access by all user programs to the underlying hardware (e.g., CPU, " +"disks, terminals, network links) and software constructs (e.g., filesystem, " +"network protocols). The kernel provides the basic system facilities; it " +"creates and manages processes, and provides functions to access the " +"filesystem and communication facilities. These functions, called _system " +"calls_ appear to user processes as library subroutines. These system calls " +"are the only interface that processes have to these facilities. Details of " +"the system-call mechanism are given in Chapter 3, as are descriptions of " +"several kernel mechanisms that do not execute as the direct result of a " +"process doing a system call." +msgstr "" +"_Ядро_ является частью системы, которая работает в защищенном режиме и " +"управляет доступом всех пользовательских программ к низкоуровнему " +"аппаратному обеспечению (к примеру, ЦПУ, дискам, терминалам, сетевым связям) " +"и программным компонентам (к примеру, файловой системе, сетевым протоколам). " +"Ядро предоставляет основные подсистемы; оно создает процессы и управляет " +"ими, предоставляет функции для доступа к файловой системе и службам связи. " +"Такие функции, называемые _системными вызовами_, доступны процессам " +"пользователей в виде библиотечных подпрограмм. Эти системные вызовы являются " +"единственным способом доступа к этим подсистемам. Подробно механизм работы " +"системных вызовов дается в Главе 3, вместе с описанием некоторых механизмов " +"ядра, работа которых не является прямым результатом процесса, выполняющего " +"системный вызов." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:84 +msgid "" +"A _kernel_ in traditional operating-system terminology, is a small nucleus " +"of software that provides only the minimal facilities necessary for " +"implementing additional operating-system services. In contemporary research " +"operating systems -- such as Chorus crossref:design-44bsd[biblio-rozier, " +"[Rozier et al, 1988]], Mach crossref:design-44bsd[biblio-accetta, [Accetta " +"et al, 1986]], Tunis crossref:design-44bsd[biblio-ewens, [Ewens et al, " +"1985]], and the V Kernel crossref:design-44bsd[biblio-cheriton, [Cheriton, " +"1988]] -- this division of functionality is more than just a logical one. " +"Services such as filesystems and networking protocols are implemented as " +"client application processes of the nucleus or kernel." +msgstr "" +"_Ядро_, по традиционной терминологии операционных систем, является маленьким " +"куском программного обеспечения, которое предоставляет только минимальный " +"набор подсистем, необходимый для реализации дополнительных служб " +"операционной системы. В современных исследовательских операционных системах " +"— таких, как Chorus crossref:design-44bsd[biblio-rozier, [Rozier et al, " +"1988]], Mach crossref:design-44bsd[biblio-accetta, [Accetta et al, 1986]], " +"Tunis crossref:design-44bsd[biblio-ewens, [Ewens et al, 1985]], и V Kernel " +"crossref:design-44bsd[biblio-cheriton, [Cheriton, 1988]] - такое разделение " +"функциональности выполнено не только логически. Такие службы, как файловые " +"системы и сетевые протоколы, выполнены в виде прикладных процессов клиентов " +"ядра или микроядра." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:93 +msgid "" +"The 4.4BSD kernel is not partitioned into multiple processes. This basic " +"design decision was made in the earliest versions of UNIX. The first two " +"implementations by Ken Thompson had no memory mapping, and thus made no " +"hardware-enforced distinction between user and kernel space " +"crossref:design-44bsd[biblio-ritchie, [Ritchie, 1988]]. A message-passing " +"system could have been implemented as readily as the actually implemented " +"model of kernel and user processes. The monolithic kernel was chosen for " +"simplicity and performance. And the early kernels were small; the inclusion " +"of facilities such as networking into the kernel has increased its size. " +"The current trend in operating-systems research is to reduce the kernel size " +"by placing such services in user space." +msgstr "" +"Ядро 4.4BSD не разбивается на несколько процессов. Это основополагающее " +"архитектурное решение было сделано в самых ранних версиях UNIX. В первых " +"двух реализациях Кена Томпсона (Ken Thompson) не было отображаемой памяти, и " +"поэтому не было аппаратного различия между адресным пространством " +"пользователя и ядра crossref:design-44bsd[biblio-ritchie, [Ritchie, 1988]]. " +"Могла бы быть придумана система обмена сообщениями как реально реализуемая " +"модель процессов ядра и пользователя. Для простоты и увеличения " +"производительности было выбрано монолитное ядро. К тому же ранние ядра были " +"маленькими; включение таких подсистем, как сетевые коммуникации, в ядро " +"увеличило его размер. Современные тенденции в области операционных систем " +"сводятся к уменьшению размера ядра за счет перевода таких служб в " +"пользовательское адресное пространство." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:97 +msgid "" +"Users ordinarily interact with the system through a command-language " +"interpreter, called a _shell_, and perhaps through additional user " +"application programs. Such programs and the shell are implemented with " +"processes. Details of such programs are beyond the scope of this book, " +"which instead concentrates almost exclusively on the kernel." +msgstr "" +"Пользователи обычно общаются с системой через интерпретатор языка команд, " +"называемый оболочкой (_shell_), и, может быть, через дополнительные " +"прикладные пользовательские программы. Такие программы и оболочка " +"реализованы в виде процессов. Подробное описание таких программ выходит за " +"рамки этой книги, которая практически полностью посвящена работе ядра." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:100 +msgid "" +"Sections 2.3 and 2.4 describe the services provided by the 4.4BSD kernel, " +"and give an overview of the latter's design. Later chapters describe the " +"detailed design and implementation of these services as they appear in " +"4.4BSD." +msgstr "" +"В разделах 2.3 и 2.4 описываются сервисы, предоставляемые ядром 4.4BSD, и " +"дается обзор их архитектуры. Последующие главы описывают подробности " +"архитектуры и реализации этих сервисов в 4.4BSD." + +#. type: Title === +#: documentation/content/en/books/design-44bsd/_index.adoc:102 +#, no-wrap +msgid "Kernel Organization" +msgstr "Организация ядра" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:105 +msgid "" +"In this section, we view the organization of the 4.4BSD kernel in two ways:" +msgstr "" +"В этом разделе мы рассматриваем организацию ядра 4.4BSD с двух точек зрения:" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:108 +msgid "" +"As a static body of software, categorized by the functionality offered by " +"the modules that make up the kernel" +msgstr "" +"Как статический блок программного обеспечения, категоризуемый по " +"функциональности модулей, составляющих ядро" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:109 +msgid "" +"By its dynamic operation, categorized according to the services provided to " +"users" +msgstr "" +"В его динамике, категоризуемой по услугам, предоставляемым пользователям" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:112 +msgid "" +"The largest part of the kernel implements the system services that " +"applications access through system calls. In 4.4BSD, this software has been " +"organized according to the following:" +msgstr "" +"Самая большая часть ядра реализует системные услуги, к которым приложения " +"обращаются через системные вызовы. В 4.4BSD это программное обеспечение " +"организуется по следующим принципам:" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:114 +msgid "" +"Basic kernel facilities: timer and system-clock handling, descriptor " +"management, and process management" +msgstr "" +"Базовые подсистемы ядра: обработка таймеров и системного таймера, управление " +"дескрипторами и процессами" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:115 +msgid "Memory-management support: paging and swapping" +msgstr "Поддержка управления памятью: подкачка и выгрузка" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:116 +msgid "" +"Generic system interfaces: the I/O, control, and multiplexing operations " +"performed on descriptors" +msgstr "" +"Общесистемные интерфейсы: ввод/вывод, управление и мультиплексирование " +"операций, выполняемых над дескрипторами" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:117 +msgid "" +"The filesystem: files, directories, pathname translation, file locking, and " +"I/O buffer management" +msgstr "" +"Файловая система: файлы, каталоги, преобразование маршрутов, блокировка " +"файлов и управление буфером ввода/вывода" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:118 +msgid "" +"Terminal-handling support: the terminal-interface driver and terminal line " +"disciplines" +msgstr "" +"Поддержка работы с терминалами: драйвер терминального интерфейса и режимы " +"работы терминального канала" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:119 +msgid "Interprocess-communication facilities: sockets" +msgstr "Подсистемы межпроцессного взаимодействия: сокеты" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:120 +msgid "" +"Support for network communication: communication protocols and generic " +"network facilities, such as routing" +msgstr "" +"Поддержка сетевых коммуникаций: коммуникационные протоколы и общесетевые " +"подсистемы, такие, как маршрутизация" + +#. type: Block title +#: documentation/content/en/books/design-44bsd/_index.adoc:121 +#, no-wrap +msgid "Machine-independent software in the 4.4BSD kernel" +msgstr "Машинно-независимое программное обеспечение в ядре 4.4BSD" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:125 +#: documentation/content/en/books/design-44bsd/_index.adoc:165 +#, no-wrap +msgid "Category" +msgstr "Категория" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:125 +#: documentation/content/en/books/design-44bsd/_index.adoc:165 +#, no-wrap +msgid "Lines of code" +msgstr "Строк кода" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:126 +#: documentation/content/en/books/design-44bsd/_index.adoc:166 +#, no-wrap +msgid "Percentage of kernel" +msgstr "Процент от строк ядра" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:126 +#, no-wrap +msgid "headers" +msgstr "заголовки" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:126 +#, no-wrap +msgid "9,393" +msgstr "9,393" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:127 +#, no-wrap +msgid "4.6" +msgstr "4.6" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:127 +#, no-wrap +msgid "initialization" +msgstr "инициализация" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:127 +#, no-wrap +msgid "1,107" +msgstr "1,107" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:128 +#, no-wrap +msgid "0.6" +msgstr "0.6" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:128 +#, no-wrap +msgid "kernel facilities" +msgstr "подсистемы ядра" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:128 +#, no-wrap +msgid "8,793" +msgstr "8,793" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:129 +#, no-wrap +msgid "4.4" +msgstr "4.4" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:129 +#, no-wrap +msgid "generic interfaces" +msgstr "универсальные интерфейсы" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:129 +#, no-wrap +msgid "4,782" +msgstr "4,782" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:130 +#, no-wrap +msgid "2.4" +msgstr "2.4" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:130 +#, no-wrap +msgid "interprocess communication" +msgstr "межпроцессное взаимодействие" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:130 +#, no-wrap +msgid "4,540" +msgstr "4,540" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:131 +#: documentation/content/en/books/design-44bsd/_index.adoc:136 +#, no-wrap +msgid "2.2" +msgstr "2.2" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:131 +#, no-wrap +msgid "terminal handling" +msgstr "работа с терминалом" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:131 +#, no-wrap +msgid "3,911" +msgstr "3,911" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:132 +#, no-wrap +msgid "1.9" +msgstr "1.9" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:132 +#: documentation/content/en/books/design-44bsd/_index.adoc:169 +#, no-wrap +msgid "virtual memory" +msgstr "Виртуальная память" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:132 +#, no-wrap +msgid "11,813" +msgstr "11,813" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:133 +#, no-wrap +msgid "5.8" +msgstr "5.8" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:133 +#, no-wrap +msgid "vnode management" +msgstr "управление vnode" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:133 +#, no-wrap +msgid "7,954" +msgstr "7,954" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:134 +#, no-wrap +msgid "3.9" +msgstr "3.9" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:134 +#, no-wrap +msgid "filesystem naming" +msgstr "имена в файловой системы" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:134 +#, no-wrap +msgid "6,550" +msgstr "6,550" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:135 +#, no-wrap +msgid "3.2" +msgstr "3.2" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:135 +#, no-wrap +msgid "fast filestore" +msgstr "быстрое хранилище файлов" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:135 +#, no-wrap +msgid "4,365" +msgstr "4,365" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:136 +#, no-wrap +msgid "log-structure filestore" +msgstr "логическая структура файлового хранилища" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:136 +#, no-wrap +msgid "4,337" +msgstr "4,337" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:137 +#: documentation/content/en/books/design-44bsd/_index.adoc:139 +#, no-wrap +msgid "2.1" +msgstr "2.1" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:137 +#, no-wrap +msgid "memory-based filestore" +msgstr "хранилище файлов в памяти" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:137 +#, no-wrap +msgid "645" +msgstr "645" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:138 +#, no-wrap +msgid "0.3" +msgstr "0.3" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:138 +#, no-wrap +msgid "cd9660 filesystem" +msgstr "cd9660 файловая система" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:138 +#, no-wrap +msgid "4,177" +msgstr "4,177" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:139 +#, no-wrap +msgid "miscellaneous filesystems (10)" +msgstr "различные файловые системы (10)" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:139 +#, no-wrap +msgid "12,695" +msgstr "12,695" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:140 +#, no-wrap +msgid "6.3" +msgstr "6.3" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:140 +#, no-wrap +msgid "network filesystem" +msgstr "сетевая файловая система" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:140 +#, no-wrap +msgid "17,199" +msgstr "17,199" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:141 +#, no-wrap +msgid "8.5" +msgstr "8.5" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:141 +#, no-wrap +msgid "network communication" +msgstr "сетевое взаимодействие" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:141 +#, no-wrap +msgid "8,630" +msgstr "8,630" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:142 +#, no-wrap +msgid "4.3" +msgstr "4.3" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:142 +#, no-wrap +msgid "internet protocols" +msgstr "интернет-протоколы" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:142 +#, no-wrap +msgid "11,984" +msgstr "11,984" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:143 +#, no-wrap +msgid "5.9" +msgstr "5.9" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:143 +#, no-wrap +msgid "ISO protocols" +msgstr "протоколы ISO" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:143 +#, no-wrap +msgid "23,924" +msgstr "23,924" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:144 +#, no-wrap +msgid "11.8" +msgstr "11.8" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:144 +#, no-wrap +msgid "X.25 protocols" +msgstr "протоколы X.25" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:144 +#, no-wrap +msgid "10,626" +msgstr "10,626" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:145 +#, no-wrap +msgid "5.3" +msgstr "5.3" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:145 +#, no-wrap +msgid "XNS protocols" +msgstr "протоколы XNS" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:145 +#, no-wrap +msgid "5,192" +msgstr "5,192" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:146 +#, no-wrap +msgid "2.6" +msgstr "2.6" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:149 +msgid "" +"Most of the software in these categories is machine independent and is " +"portable across different hardware architectures." +msgstr "" +"Большая часть программного обеспечения в этих категориях является машинно-" +"независимой и переносима между различными аппаратными архитектурами." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:154 +msgid "" +"The machine-dependent aspects of the kernel are isolated from the mainstream " +"code. In particular, none of the machine-independent code contains " +"conditional code for specific architecture. When an architecture-dependent " +"action is needed, the machine-independent code calls an architecture-" +"dependent function that is located in the machine-dependent code. The " +"software that is machine dependent includes" +msgstr "" +"Машинно-зависимые аспекты ядра отделены от основного кода. В частности, ни в " +"одной части машинно-независимого кода не содержится кода, зависимого от " +"конкретной архитектуры. Когда требуется произвести действия, зависимые от " +"архитектуры, машинно-независимый код вызывает функцию, зависимую от " +"архитектуры машины, которая находится в машинно-зависимой части кода. " +"Машинно-зависимое программное обеспечение включает в себя" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:156 +msgid "Low-level system-startup actions" +msgstr "Низкоуровневые действия по запуску системы" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:157 +msgid "Trap and fault handling" +msgstr "Обработка исключительных ситуаций и прерываний" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:158 +msgid "Low-level manipulation of the run-time context of a process" +msgstr "Низкоуровневые манипуляции процессом во время работы" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:159 +msgid "Configuration and initialization of hardware devices" +msgstr "Конфигурация и инициализация аппаратных устройств" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:160 +msgid "Run-time support for I/O devices" +msgstr "Поддержка устройств ввода/вывода во время работы" + +#. type: Block title +#: documentation/content/en/books/design-44bsd/_index.adoc:161 +#, no-wrap +msgid "Machine-dependent software for the HP300 in the 4.4BSD kernel" +msgstr "Машинно-зависимое программное обеспечение для HP300 в ядре 4.4BSD" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:166 +#, no-wrap +msgid "machine dependent headers" +msgstr "заголовочные файлы, зависимые от машины" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:166 +#, no-wrap +msgid "1,562" +msgstr "1,562" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:167 +#, no-wrap +msgid "0.8" +msgstr "0.8" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:167 +#, no-wrap +msgid "device driver headers" +msgstr "заголовочные файлы драйверов устройств" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:167 +#, no-wrap +msgid "3,495" +msgstr "3,495" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:168 +#, no-wrap +msgid "1.7" +msgstr "1.7" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:168 +#, no-wrap +msgid "device driver source" +msgstr "исходный код драйверов устройств" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:168 +#, no-wrap +msgid "17,506" +msgstr "17,506" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:169 +#, no-wrap +msgid "8.7" +msgstr "8.7" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:169 +#, no-wrap +msgid "3,087" +msgstr "3,087" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:170 +#: documentation/content/en/books/design-44bsd/_index.adoc:172 +#, no-wrap +msgid "1.5" +msgstr "1.5" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:170 +#, no-wrap +msgid "other machine dependent" +msgstr "код, зависящий от других машин" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:170 +#, no-wrap +msgid "6,287" +msgstr "6,287" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:171 +#, no-wrap +msgid "3.1" +msgstr "3.1" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:171 +#, no-wrap +msgid "routines in assembly language" +msgstr "подпрограммы на языке ассемблера" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:171 +#, no-wrap +msgid "3,014" +msgstr "3,014" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:172 +#, no-wrap +msgid "HP/UX compatibility" +msgstr "совместимость с HP/UX" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:172 +#, no-wrap +msgid "4,683" +msgstr "4,683" + +#. type: Table +#: documentation/content/en/books/design-44bsd/_index.adoc:173 +#, no-wrap +msgid "2.3" +msgstr "2.3" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:179 +msgid "" +"crossref:design-44bsd[table-mach-indep, Machine-independent software in the " +"4.4BSD kernel] summarizes the machine-independent software that constitutes " +"the 4.4BSD kernel for the HP300. The numbers in column 2 are for lines of C " +"source code, header files, and assembly language. Virtually all the " +"software in the kernel is written in the C programming language; less than 2 " +"percent is written in assembly language. As the statistics in " +"crossref:design-44bsd[table-mach-dep, Machine-dependent software in the " +"4.4BSD kernel] show, the machine-dependent software, excluding HP/UX and " +"device support, accounts for a minuscule 6.9 percent of the kernel." +msgstr "" +"crossref:design-44bsd[table-mach-indep, Машинно-независимое программное " +"обеспечение в ядре 4.4BSD] показывает статистику машинно-независимого кода, " +"который составляет ядро 4.4BSD для HP300. Числа во второй колонке обозначают " +"количество строк исходного кода на языке C, заголовочных файлов и " +"ассемблерного кода. Практически весь код ядра написан на языке " +"программирования C; менее двух процентов написано на языке ассемблера. Как " +"показывает статистика в crossref:design-44bsd[table-mach-dep, Машинно-" +"зависимое программное обеспечение для HP300 в ядре 4.4BSD], машинно-" +"зависимый код, не включающий поддержку HP/UX и устройств, составляет менее " +"6.9 процента ядра." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:185 +msgid "" +"Only a small part of the kernel is devoted to initializing the system. This " +"code is used when the system is _bootstrapped_ into operation and is " +"responsible for setting up the kernel hardware and software environment (see " +"Chapter 14). Some operating systems (especially those with limited physical " +"memory) discard or _overlay_ the software that performs these functions " +"after that software has been executed. The 4.4BSD kernel does not reclaim " +"the memory used by the startup code because that memory space is barely 0.5 " +"percent of the kernel resources used on a typical machine. Also, the " +"startup code does not appear in one place in the kernel -- it is scattered " +"throughout, and it usually appears in places logically associated with what " +"is being initialized." +msgstr "" +"Лишь малая часть ядра отвечает за инициализацию системы. Этот код " +"используется при _начальной загрузке_ системы для перехода в рабочий режим и " +"отвечает за настройку аппаратного и программного окружения ядра (обратитесь " +"к Главе 14). Некоторые операционные системы (особенно те, что ограничены " +"объемом физической памяти) выполняют действия по выгрузке или _перекрытию_ " +"программного кода, выполняющего эти функции, после окончания его работы. " +"Ядро 4.4BSD не работает повторно с памятью, использованной начальным кодом, " +"потому что этот объем памяти составляет менее 0.5 процентов ресурсов ядра, " +"используемых на типичной машине. Также начальный код не находится только в " +"одном месте ядра - он рассредоточен везде, и обычно появляется там, где " +"логически связан с объектом инициализации." + +#. type: Title === +#: documentation/content/en/books/design-44bsd/_index.adoc:187 +#, no-wrap +msgid "Kernel Services" +msgstr "Службы ядра" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:197 +msgid "" +"The boundary between the kernel- and user-level code is enforced by hardware-" +"protection facilities provided by the underlying hardware. The kernel " +"operates in a separate address space that is inaccessible to user " +"processes. Privileged operations -- such as starting I/O and halting the " +"central processing unit (CPU) -- are available to only the kernel. " +"Applications request services from the kernel with _system calls_. System " +"calls are used to cause the kernel to execute complicated operations, such " +"as writing data to secondary storage, and simple operations, such as " +"returning the current time of day. All system calls appear _synchronous_ to " +"applications: The application does not run while the kernel does the actions " +"associated with a system call. The kernel may finish some operations " +"associated with a system call after it has returned. For example, a _write_ " +"system call will copy the data to be written from the user process to a " +"kernel buffer while the process waits, but will usually return from the " +"system call before the kernel buffer is written to the disk." +msgstr "" +"Разграничение между кодом уровней ядра и пользователя обеспечивается " +"аппаратными методами, предоставляемыми оборудованием. Ядро работает в " +"отдельном адресном пространстве, которое недоступно процессам пользователя. " +"Привилегированные операции - такие, как осуществление ввода/вывода и " +"остановка модуля центрального процессора (CPU) - доступны только ядру. " +"Приложения делают запросы ядру на доступ к его сервисам при помощи " +"_системных вызовов_. Системные вызовы используются для указания ядру на " +"выполнение как сложных операций, таких, как запись данных во вторичный " +"носитель, так и простых, таких, как получение текущего времени. Все " +"системные вызовы выполняются _синхронно_ с приложением: Приложение не будет " +"продолжать работу, пока ядро не выполнит действия, соответствующие " +"системному вызову. Ядро может завершить некоторые операции, связанные с " +"системным вызовом, после его окончания. Например, системный вызов _write_ " +"будет копировать записываемые данные от пользовательского процесса в буфер " +"ядра, пока процесс находится в ожидании, но, как правило, будет немедленно " +"завершаться до того, как буфер ядра реально будет записан на диск." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:206 +msgid "" +"A system call usually is implemented as a hardware trap that changes the " +"CPU's execution mode and the current address-space mapping. Parameters " +"supplied by users in system calls are validated by the kernel before being " +"used. Such checking ensures the integrity of the system. All parameters " +"passed into the kernel are copied into the kernel's address space, to ensure " +"that validated parameters are not changed as a side effect of the system " +"call. System-call results are returned by the kernel, either in hardware " +"registers or by their values being copied to user-specified memory " +"addresses. Like parameters passed into the kernel, addresses used for the " +"return of results must be validated to ensure that they are part of an " +"application's address space. If the kernel encounters an error while " +"processing a system call, it returns an error code to the user. For the C " +"programming language, this error code is stored in the global variable " +"_errno_, and the function that executed the system call returns the value -1." +msgstr "" +"Системный вызов обычно реализуется как аппаратное прерывание, которое " +"изменяет режим работы CPU и текущее отображение адресного пространства. " +"Параметры, передаваемые пользователями системным вызовам, перед " +"использованием проверяются ядром. Такая проверка обеспечивает целостность " +"системы. Все параметры, передаваемые в ядро, копируются в адресное " +"пространство ядра, для того, чтобы проверенные параметры не могли быть " +"изменены в результате побочного действия системного вызова. Результаты " +"выполнения системного вызова возвращаются ядром либо в аппаратных регистрах, " +"либо копированием их значений в области памяти, указанные пользователем. Как " +"и параметры, переданные в ядро, адреса, используемые для возвращения " +"результатов, должны быть проверены на то, что они являются частью адресного " +"пространства приложения. Если при обработке системного вызова ядром " +"возникает ошибка, код ошибки возвращается пользователю. В случае языка " +"программирования C код этой ошибки сохраняется в глобальной переменной " +"_errno_, а функция, соответствующая системному вызову, возвращает в качестве " +"результата значение -1." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:211 +msgid "" +"User applications and the kernel operate independently of each other. " +"4.4BSD does not store I/O control blocks or other operating-system-related " +"data structures in the application's address space. Each user-level " +"application is provided an independent address space in which it executes. " +"The kernel makes most state changes, such as suspending a process while " +"another is running, invisible to the processes involved." +msgstr "" +"Пользовательские приложения и ядро работают независимо друг от друга. 4.4BSD " +"не хранит управляющие блоки ввода/вывода и другие связанные с операционной " +"системой структуры данных в адресном пространстве приложения. Каждому " +"пользовательскому приложению предоставляется независимое адресное " +"пространство, в котором оно и выполняется. Ядро выполняет большинство " +"управляющих действий, таких, как приостановка процесса на время выполнения " +"другого, незаметно для участвующих процессов." + +#. type: Title === +#: documentation/content/en/books/design-44bsd/_index.adoc:213 +#, no-wrap +msgid "Process Management" +msgstr "Управление процессами" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:222 +msgid "" +"4.4BSD supports a multitasking environment. Each task or thread of " +"execution is termed a _process_. The _context_ of a 4.4BSD process consists " +"of user-level state, including the contents of its address space and the run-" +"time environment, and kernel-level state, which includes scheduling " +"parameters, resource controls, and identification information. The context " +"includes everything used by the kernel in providing services for the " +"process. Users can create processes, control the processes' execution, and " +"receive notification when the processes' execution status changes. Every " +"process is assigned a unique value, termed a _process identifier_ (PID). " +"This value is used by the kernel to identify a process when reporting status " +"changes to a user, and by a user when referencing a process in a system call." +msgstr "" +"4.4BSD поддерживает многозадачность. Каждая задача или выполняющийся поток " +"называется _процессом_. _Контекст_ процесса 4.4BSD состоит из состояния " +"пользовательского уровня, включая содержимое его адресного пространства и " +"окружения времени выполнения, и состояния уровня ядра, в который включаются " +"параметры планировщика задач, управляющие ресурсы и идентифицирующая " +"информация. В контекст включается все, что используется ядром при " +"предоставлении своих сервисов процессу. Пользователи могут создавать " +"процессы, управлять их выполнением и получать уведомления при изменении " +"состояния выполнения процессов. Каждому процессу назначается уникальное " +"число, называемое _идентификатором процесса_ (PID). Это число используется " +"ядром для идентификации процесса при сообщении пользователю об изменении его " +"состояния, и пользователем для указания процесса в системном вызове." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:227 +msgid "" +"The kernel creates a process by duplicating the context of another process. " +"The new process is termed a _child process_ of the original _parent process_ " +"The context duplicated in process creation includes both the user-level " +"execution state of the process and the process's system state managed by the " +"kernel. Important components of the kernel state are described in Chapter 4." +msgstr "" +"Ядро создает процесс, дублируя контекст другого процесса. Новый процесс " +"считается _порожденным процессом_ исходного _родительского процесса_. " +"Контекст, копируемый в ходе создания процесса, включает как состояние " +"выполнения процесса уровня пользователя, так и системное состояние процесса, " +"управляемое ядром. Важные компоненты состояния ядра описаны в Главе 4." + +#. type: Block title +#: documentation/content/en/books/design-44bsd/_index.adoc:229 +#, no-wrap +msgid "Process lifecycle" +msgstr "Жизненный цикл процесса" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:231 +msgid "image:fig1.png[Process lifecycle]" +msgstr "image:fig1.png[Жизненный цикл процесса]" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:238 +msgid "" +"The process lifecycle is depicted in crossref:design-44bsd[fig-process-" +"lifecycle,Process lifecycle]. A process may create a new process that is a " +"copy of the original by using the _fork_ system call. The _fork_ call " +"returns twice: once in the parent process, where the return value is the " +"process identifier of the child, and once in the child process, where the " +"return value is 0. The parent-child relationship induces a hierarchical " +"structure on the set of processes in the system. The new process shares all " +"its parent's resources, such as file descriptors, signal-handling status, " +"and memory layout." +msgstr "" +"Жизненный цикл процесса изображен на рисунке crossref:design-44bsd[fig-" +"process-lifecycle,Жизненный цикл процесса]. Процесс может создать новый " +"процесс, который является копией исходного процесса с помощью системного " +"вызова _fork_. Возврат из вызова _fork_ происходит два раза: один раз в " +"родительском процессе, в котором возвращаемое значение является " +"идентификатором порожденного процесса, и второй раз в порожденном процессе, " +"в котором возвращаемое значение равно 0. Связь родитель-потомок порождает " +"иерархическую структуру процессов в системе. Новый процесс имеет доступ ко " +"всем ресурсам его родителя, таким, как файловые дескрипторы, состояние " +"обработки сигналов и распределение памяти." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:242 +msgid "" +"Although there are occasions when the new process is intended to be a copy " +"of the parent, the loading and execution of a different program is a more " +"useful and typical action. A process can overlay itself with the memory " +"image of another program, passing to the newly created image a set of " +"parameters, using the system call _execve_. One parameter is the name of a " +"file whose contents are in a format recognized by the system -- either a " +"binary-executable file or a file that causes the execution of a specified " +"interpreter program to process its contents." +msgstr "" +"Хотя есть ситуации, когда процесс должен быть копией своего родителя, " +"наиболее типичным и полезным действием является загрузка и выполнение другой " +"программы. Процесс может заместить себя образом памяти другой программы, " +"передавая вновь созданному образу набор параметров, при помощи системного " +"вызова _execve_. Одним из параметров является имя файла, содержимое которого " +"имеет формате, распознаваемый системой - это либо двоичный выполняемый файл, " +"либо файл, который приводит к запуску указанной программы интерпретации для " +"обработки его содержимого." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:246 +msgid "" +"A process may terminate by executing an _exit_ system call, sending 8 bits " +"of exit status to its parent. If a process wants to communicate more than a " +"single byte of information with its parent, it must either set up an " +"interprocess-communication channel using pipes or sockets, or use an " +"intermediate file. Interprocess communication is discussed extensively in " +"Chapter 11." +msgstr "" +"Процесс может завершить работу, выполнив системный вызов _exit_, посылающий " +"8-битовое значение состояния завершения своему родителю. Если процесс хочет " +"передать родительскому процессу информацию, превышающую один байт, он должен " +"либо создать канал межпроцессных коммуникаций при помощи конвейеров или " +"сокетов, или при помощи промежуточного файла. Коммуникации между процессами " +"подробно обсуждаются в Главе 11." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:251 +msgid "" +"A process can suspend execution until any of its child processes terminate " +"using the _wait_ system call, which returns the PID and exit status of the " +"terminated child process. A parent process can arrange to be notified by a " +"signal when a child process exits or terminates abnormally. Using the " +"_wait4_ system call, the parent can retrieve information about the event " +"that caused termination of the child process and about resources consumed by " +"the process during its lifetime. If a process is orphaned because its " +"parent exits before it is finished, then the kernel arranges for the child's " +"exit status to be passed back to a special system process _init_: see " +"Sections 3.1 and 14.6)." +msgstr "" +"Процесс может приостановить выполнение до тех пор, пока не завершит работу " +"любой из порожденных им процессов, при помощи системного вызова _wait_, " +"который возвращает PID и статус завершения выполненного дочернего процесса. " +"Родительский процесс может быть настроен на получение сигнала в случае, " +"когда порожденный процесс завершает работу или аварийно прекращает " +"выполнение. При помощи системного вызова _wait4_ родитель может получить " +"информацию о событии, приведшем к завершению порожденного процесса и о " +"ресурсах, использованных процессом за время его работы. Если процесс " +"становится сиротой из-за того, что процесс, его породивший, завершил работу " +"до окончания работы потомка, то ядро перенаправляет состояние завершения " +"порожденного процесса особому системному процессу _init_: обратитесь к " +"разделам 3.1 и 14.6)." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:253 +msgid "" +"The details of how the kernel creates and destroys processes are given in " +"Chapter 5." +msgstr "" +"Подробное описание того, как ядро создает и уничтожает процессы, дается в " +"Главе 5." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:257 +msgid "" +"Processes are scheduled for execution according to a _process-priority_ " +"parameter. This priority is managed by a kernel-based scheduling " +"algorithm. Users can influence the scheduling of a process by specifying a " +"parameter (_nice_) that weights the overall scheduling priority, but are " +"still obligated to share the underlying CPU resources according to the " +"kernel's scheduling policy." +msgstr "" +"Планирование выполнения процессов осуществляется согласно параметру " +"_приоритетности процесса_. Этот приоритет управляется алгоритмом " +"планирования задач в ядре. Пользователи могут влиять на выполнение процесса, " +"задавая этот параметр (_nice_), который влияет на суммарный приоритет, но " +"ограничен использованием ресурсов CPU согласно алгоритму планировщика задач " +"ядра." + +#. type: Title ==== +#: documentation/content/en/books/design-44bsd/_index.adoc:258 +#, no-wrap +msgid "Signals" +msgstr "Сигналы" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:267 +msgid "" +"The system defines a set of _signals_ that may be delivered to a process. " +"Signals in 4.4BSD are modeled after hardware interrupts. A process may " +"specify a user-level subroutine to be a _handler_ to which a signal should " +"be delivered. When a signal is generated, it is blocked from further " +"occurrence while it is being _caught_ by the handler. Catching a signal " +"involves saving the current process context and building a new one in which " +"to run the handler. The signal is then delivered to the handler, which can " +"either abort the process or return to the executing process (perhaps after " +"setting a global variable). If the handler returns, the signal is unblocked " +"and can be generated (and caught) again." +msgstr "" +"В системе определен набор _сигналов_, которые могут быть отправлены " +"процессу. Сигналы в 4.4BSD сделаны по образу аппаратных прерываний. Процесс " +"может определить пользовательскую подпрограмму, которая будет являться " +"_обработчиком_, и которой должен будет перенаправляться сигнал. Когда сигнал " +"генерируется, он блокируется от повторного появления до тех пор, пока не " +"будет _перехвачен_ обработчиком. Перехват сигнала включает в себя сохранение " +"контекста текущего процесса и построение нового, в котором запускается " +"обработчик. Затем сигнал направляется обработчику, который может либо " +"прервать процесс, либо передать управление обратно выполняемому процессу " +"(может быть, после установки значения глобальной переменной). Если " +"обработчик возвратил управление, сигнал разблокировывается и может быть " +"сгенерирован (и получен) снова." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:271 +msgid "" +"Alternatively, a process may specify that a signal is to be _ignored_, or " +"that a default action, as determined by the kernel, is to be taken. The " +"default action of certain signals is to terminate the process. This " +"termination may be accompanied by creation of a _core file_ that contains " +"the current memory image of the process for use in postmortem debugging." +msgstr "" +"Либо процесс может определить, что сигнал будет _игнорироваться_ или будет " +"выполняться действие по умолчанию, определяемое ядром. Действием по " +"умолчанию для некоторых сигналов является прекращение процесса. Это " +"завершение работы может сопровождаться созданием _файла дампа_, содержащего " +"текущий образ памяти процесса для использования в последующей отладке." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:274 +msgid "" +"Some signals cannot be caught or ignored. These signals include _SIGKILL_, " +"which kills runaway processes, and the job-control signal _SIGSTOP_." +msgstr "" +"Некоторые сигналы не могут быть перехвачены или проигнорированы. К таким " +"сигналам относятся _SIGKILL_, прерывающий неуправляемый процесс, и сигнал " +"управления заданиями _SIGSTOP_." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:279 +msgid "" +"A process may choose to have signals delivered on a special stack so that " +"sophisticated software stack manipulations are possible. For example, a " +"language supporting coroutines needs to provide a stack for each coroutine. " +"The language run-time system can allocate these stacks by dividing up the " +"single stack provided by 4.4BSD. If the kernel does not support a separate " +"signal stack, the space allocated for each coroutine must be expanded by the " +"amount of space required to catch a signal." +msgstr "" +"Процесс может выбрать получение сигналов в специальный стек для выполнения " +"хитроумных программных манипуляций стеком. Например, подпрограммам поддержки " +"языка нужно иметь стек для каждой подпрограммы. Система времени выполнения " +"языка может выделять эти стеки, разделяя единственный стек, предоставляемый " +"в 4.4BSD. Если ядро не поддерживает отдельный стек сигналов, то " +"пространство, выделяемое каждой подпрограмме, должно быть расширено на " +"объем, требуемый для перехвата сигнала." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:284 +msgid "" +"All signals have the same _priority_. If multiple signals are pending " +"simultaneously, the order in which signals are delivered to a process is " +"implementation specific. Signal handlers execute with the signal that " +"caused their invocation to be blocked, but other signals may yet occur. " +"Mechanisms are provided so that processes can protect critical sections of " +"code against the occurrence of specified signals." +msgstr "" +"Все сигналы имеют один и тот же _приоритет_. Если обработки ожидают " +"несколько сигналов, то порядок их направления процессу зависит от " +"реализации. Обработчики сигналов, выполняемые по сигналу, который их вызвал, " +"блокируются, но при этом могут быть сгенерированы дополнительные сигналы. " +"Имеется механизм, позволяющий защитить критический участок кода от появления " +"заданных сигналов." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:286 +msgid "" +"The detailed design and implementation of signals is described in Section " +"4.7." +msgstr "" +"Подробное описание архитектуры и реализации механизма сигналов дается в " +"Разделе 4.7." + +#. type: Title ==== +#: documentation/content/en/books/design-44bsd/_index.adoc:287 +#, no-wrap +msgid "Process Groups and Sessions" +msgstr "Группы управления и сеансы" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:294 +msgid "" +"Processes are organized into _process groups_. Process groups are used to " +"control access to terminals and to provide a means of distributing signals " +"to collections of related processes. A process inherits its process group " +"from its parent process. Mechanisms are provided by the kernel to allow a " +"process to alter its process group or the process group of its descendants. " +"Creating a new process group is easy; the value of a new process group is " +"ordinarily the process identifier of the creating process." +msgstr "" +"Процессы организованы в _группы управления_. Группы управления используются " +"для управления доступом к терминалам и для обеспечения передачи сигналов " +"наборам связанных процессов. Процесс наследует группу управления от своего " +"родительского процесса. Ядром обеспечиваются механизмы, позволяющие процессу " +"изменять свою группу управления или группу управления своих наследников. " +"Создание новой группы управления просто; значение, соответствующее новой " +"группе управления, обычно является идентификатором создающего ее процесса." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:298 +msgid "" +"The group of processes in a process group is sometimes referred to as a " +"_job_ and is manipulated by high-level system software, such as the shell. " +"A common kind of job created by a shell is a _pipeline_ of several processes " +"connected by pipes, such that the output of the first process is the input " +"of the second, the output of the second is the input of the third, and so " +"forth. The shell creates such a job by forking a process for each stage of " +"the pipeline, then putting all those processes into a separate process group." +msgstr "" +"Группу процессов в группе управления иногда называют _заданием_ и оно " +"управляется высокоуровневым системным программным обеспечением, таким, как " +"командный процессор. Типичным примером задания, созданного командным " +"процессором, является _конвейер_ из нескольких связанных процессов, так что " +"выходной поток первого процесса является входным потоком для второго, " +"выходной поток второго процесса является входным потоком для третьего, и так " +"далее. Командный процессор создает такое задание, порождая процесс для " +"каждого участка конвейера, а затем помещая все эти процессы в отдельную " +"группу обработки." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:301 +msgid "" +"A user process can send a signal to each process in a process group, as well " +"as to a single process. A process in a specific process group may receive " +"software interrupts affecting the group, causing the group to suspend or " +"resume execution, or to be interrupted or terminated." +msgstr "" +"Пользовательский процесс может послать сигнал как всем процессам в группе " +"управления, так и конкретному процессу. Процесс в заданной группе управления " +"может получать программные прерывания, отражающиеся на группе, приводящие к " +"приостановке или продолжению выполнения, или к прерыванию или завершению " +"работы." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:309 +msgid "" +"A terminal has a process-group identifier assigned to it. This identifier " +"is normally set to the identifier of a process group associated with the " +"terminal. A job-control shell may create a number of process groups " +"associated with the same terminal; the terminal is the _controlling " +"terminal_ for each process in these groups. A process may read from a " +"descriptor for its controlling terminal only if the terminal's process-group " +"identifier matches that of the process. If the identifiers do not match, " +"the process will be blocked if it attempts to read from the terminal. By " +"changing the process-group identifier of the terminal, a shell can arbitrate " +"a terminal among several different jobs. This arbitration is called _job " +"control_ and is described, with process groups, in Section 4.8." +msgstr "" +"Терминалу ставится в соответствие идентификатор группы управления. Этот " +"идентификатор обычно равен идентификатору группы управления, соответствующей " +"терминалу. Управляющий заданиями командный процессор может создать несколько " +"групп управления, связанных с одним и тем же терминалом; терминал является " +"_управляющим терминалом_ для каждого процесса в этих группах. Процесс может " +"выполнять чтение из дескриптора своего управляющего терминала, если только " +"идентификатор группы управления соответствует идентификатору группы этого " +"процесса. Если идентификаторы не совпадают, процесс будет блокирован при " +"попытке чтения с терминала. Изменяя идентификатор группы управления " +"терминала, командный процессор может распределять терминал между несколькими " +"различными заданиями. Такое распределение называется _управлением заданиями_ " +"и описывается вместе с группами управления в Разделе 4.8." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:312 +msgid "" +"Just as a set of related processes can be collected into a process group, a " +"set of process groups can be collected into a _session_. The main uses for " +"sessions are to create an isolated environment for a daemon process and its " +"children, and to collect together a user's login shell and the jobs that " +"shell spawns." +msgstr "" +"Так же, как и наборы связанных процессов могут объединяться в группы " +"управления, набор групп управления может быть объединен в _сеанс_. Основное " +"назначение сеансов заключается создании изолированного окружения для " +"процесса-даемона и порожденных им процессов, а также для объединения " +"начального командного процессора пользователя и заданий, которые он " +"порождает." + +#. type: Title === +#: documentation/content/en/books/design-44bsd/_index.adoc:314 +#, no-wrap +msgid "Memory Management" +msgstr "Управление памятью" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:324 +msgid "" +"Each process has its own private address space. The address space is " +"initially divided into three logical segments: _text_, _data_, and _stack_. " +"The text segment is read-only and contains the machine instructions of a " +"program. The data and stack segments are both readable and writable. The " +"data segment contains the initialized and uninitialized data portions of a " +"program, whereas the stack segment holds the application's run-time stack. " +"On most machines, the stack segment is extended automatically by the kernel " +"as the process executes. A process can expand or contract its data segment " +"by making a system call, whereas a process can change the size of its text " +"segment only when the segment's contents are overlaid with data from the " +"filesystem, or when debugging takes place. The initial contents of the " +"segments of a child process are duplicates of the segments of a parent " +"process." +msgstr "" +"Каждый процесс имеет собственное адресное пространство. Адресное " +"пространство изначально разделяется на три логических сегмента: _код_, " +"_данные_ и _стек_. Сегмент кода доступен только для чтения и содержит " +"машинные коды программы. Сегменты данных и стека оба доступны как для " +"чтения, так и для записи. Сегмент данных содержит как инициализированные, " +"так и неинициализированные области данных программы, когда как стековый " +"сегмент представляет собой стек программы на этапе выполнения. На " +"большинстве машин сегмент стека автоматически расширяется ядром в процессе " +"работы программы. Процесс может расширять или уменьшать свой сегмент данных, " +"выполняя системный вызов, когда как размер сегмента кода процесс может " +"изменить только когда содержимое сегмента перекрывается данными файловой " +"системы или в процессе отладки. Начальное содержимое сегментов порожденного " +"процесса копируется из сегментов родительского процесса." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:332 +msgid "" +"The entire contents of a process address space do not need to be resident " +"for a process to execute. If a process references a part of its address " +"space that is not resident in main memory, the system _pages_ the necessary " +"information into memory. When system resources are scarce, the system uses " +"a two-level approach to maintain available resources. If a modest amount of " +"memory is available, the system will take memory resources away from " +"processes if these resources have not been used recently. Should there be a " +"severe resource shortage, the system will resort to _swapping_ the entire " +"context of a process to secondary storage. The _demand paging_ and " +"_swapping_ done by the system are effectively transparent to processes. A " +"process may, however, advise the system about expected future memory " +"utilization as a performance aid." +msgstr "" +"Для выполнения процесса вовсе не обязательно постоянно хранить в памяти " +"полное содержимое его адресного пространства. Если процесс обращается к " +"области адресного пространства, которая не присутствует в оперативной " +"памяти, то система _подгружает страницу_ с необходимой информацией в память. " +"Когда возникает нехватка системных ресурсов, то система использует " +"двухуровневый подход к управлению имеющимися ресурсами. Если не хватает " +"памяти, то система будет забирать ресурсы памяти от процессов, если они " +"давно не использовались. Если ресурсов не хватает очень сильно, то система " +"будет прибегать к _выгрузке_ всего контекста процесса во вторичную " +"подсистему хранения данных. _Постраничная подгрузка по требованию_ и " +"_выгрузка_ выполняются системой абсолютно незаметно для процессов. Процесс " +"может, однако, указать системе объем памяти, который будет использоваться, в " +"качестве помощи." + +#. type: Title ==== +#: documentation/content/en/books/design-44bsd/_index.adoc:333 +#, no-wrap +msgid "BSD Memory-Management Design Decisions" +msgstr "Решения BSD по архитектуре управления памятью" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:339 +msgid "" +"The support of large sparse address spaces, mapped files, and shared memory " +"was a requirement for 4.2BSD. An interface was specified, called _mmap_, " +"that allowed unrelated processes to request a shared mapping of a file into " +"their address spaces. If multiple processes mapped the same file into their " +"address spaces, changes to the file's portion of an address space by one " +"process would be reflected in the area mapped by the other processes, as " +"well as in the file itself. Ultimately, 4.2BSD was shipped without the " +"_mmap_ interface, because of pressure to make other features, such as " +"networking, available." +msgstr "" +"В 4.2BSD требовалось реализовать поддержку больших несвязанных адресных " +"пространств, отображаемых в память файлов и совместно используемой памяти. " +"Был спроектирован интерфейс, который назвали _mmap_, позволяющий несвязанным " +"процессам запрашивать отображение в их адресное пространство файла в режиме " +"совместного использования. Если несколько процессов отображают в свое " +"адресное пространство один и тот же файл, то изменение адресного " +"пространства процесса, соответствующего файлу, в одном процессе, будет " +"отображено в области отображения этого файла в другом процессе, а также и в " +"самом файле. Однако в конце концов 4.2BSD была выпущена без интерфейса " +"_mmap_ из-за необходимости сделать в первую очередь другие возможности, " +"такие, как работа с сетью." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:346 +msgid "" +"Further development of the _mmap_ interface continued during the work on " +"4.3BSD. Over 40 companies and research groups participated in the " +"discussions leading to the revised architecture that was described in the " +"Berkeley Software Architecture Manual crossref:design-44bsd[biblio-" +"mckusick-1, [McKusick et al, 1994]]. Several of the companies have " +"implemented the revised interface crossref:design-44bsd[biblio-gingell, " +"[Gingell et al, 1987]]." +msgstr "" +"Затем разработка интерфейса _mmap_ продолжалась во время работы над 4.3BSD. " +"Более 40 компаний и исследовательских групп принимали участие в обсуждениях, " +"которые привели к появлению обновленной концепции, описанной в Berkeley " +"Software Architecture Manual crossref:design-44bsd[biblio-mckusick-1, " +"[McKusick et al, 1994]]. Несколько компаний реализовали этот обновленный " +"интерфейс crossref:design-44bsd[biblio-gingell, [Gingell et al, 1987]]." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:353 +msgid "" +"Once again, time pressure prevented 4.3BSD from providing an implementation " +"of the interface. Although the latter could have been built into the " +"existing 4.3BSD virtual-memory system, the developers decided not to put it " +"in because that implementation was nearly 10 years old. Furthermore, the " +"original virtual-memory design was based on the assumption that computer " +"memories were small and expensive, whereas disks were locally connected, " +"fast, large, and inexpensive. Thus, the virtual-memory system was designed " +"to be frugal with its use of memory at the expense of generating extra disk " +"traffic. In addition, the 4.3BSD implementation was riddled with VAX memory-" +"management hardware dependencies that impeded its portability to other " +"computer architectures. Finally, the virtual-memory system was not designed " +"to support the tightly coupled multiprocessors that are becoming " +"increasingly common and important today." +msgstr "" +"И снова сроки разработки не позволили включить в 4.3BSD реализацию этого " +"интерфейса. Хотя позже она могла быть встроена в имеющуюся подсистему " +"виртуальной памяти 4.3BSD, разработчики решили не включать ее сюда. потому " +"что этой реализации было уже более 10 лет. Более того, оригинальная " +"архитектура виртуальной памяти была основана на предположении, что " +"компьютерная память мала и дорога, а диски подключены непосредственно к " +"компьютеру, быстры и дешевы. Поэтому подсистема виртуальной памяти была " +"разработана с упором на бережное использование памяти ценой более частых " +"обращений к диску. Вдобавок реализация в 4.3BSD была пронизана зависимостями " +"от аппаратной системы управления памятью машин VAX, что препятствовало ее " +"переносу на другие аппаратные платформы. И наконец, подсистема виртуальной " +"памяти не была предназначена для поддержки связных многопроцессорных систем, " +"которые сейчас становятся все более распространенными и необходимыми." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:364 +msgid "" +"Attempts to improve the old implementation incrementally seemed doomed to " +"failure. A completely new design, on the other hand, could take advantage " +"of large memories, conserve disk transfers, and have the potential to run on " +"multiprocessors. Consequently, the virtual-memory system was completely " +"replaced in 4.4BSD. The 4.4BSD virtual-memory system is based on the Mach " +"2.0 VM system crossref:design-44bsd[biblio-tevanian, [Tevanian, 1987]]. with " +"updates from Mach 2.5 and Mach 3.0. It features efficient support for " +"sharing, a clean separation of machine-independent and machine-dependent " +"features, as well as (currently unused) multiprocessor support. Processes " +"can map files anywhere in their address space. They can share parts of " +"their address space by doing a shared mapping of the same file. Changes " +"made by one process are visible in the address space of the other process, " +"and also are written back to the file itself. Processes can also request " +"private mappings of a file, which prevents any changes that they make from " +"being visible to other processes mapping the file or being written back to " +"the file itself." +msgstr "" +"Попытки постепенно усовершенствовать старую реализацию заведомо были " +"обречены на неудачу. Полностью новая архитектура, с другой стороны, могла бы " +"использовать большие объемы памяти, уменьшить дисковые операции и " +"обеспечивать работу с несколькими процессорами. Наконец, система виртуальной " +"памяти в 4.4BSD была полностью изменена. Система виртуальной памяти 4.4BSD " +"основана на системе виртуальнй памяти (VM) crossref:design-44bsd[biblio-" +"tevanian, [Tevanian, 1987]] с заимствованиями из Mach 2.5 и Mach 3.0. В ней " +"была эффективная поддержка совместного использования, полное разделение " +"машинно-зависимой и машинно-независимой частей, а также (сейчас не " +"используемая) поддержка работы с несколькими процессорами. Процессы могут " +"отображать файлы в любую область своего адресного пространства. Они могут " +"совместно использовать части своих адресных пространств посредством " +"отображения в память одного и того же файла. Изменения, сделанные одним " +"процессом, видны в адресном пространстве другого процесса, а также " +"записываются и в сам файл. Процессы могут также запрашивать эксклюзивное " +"отображение файла в память, при котором любые изменения, сделанные " +"процессом, не видны другим процессам, которые отображают файл в память и не " +"записываются обратно в файл." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:370 +msgid "" +"Another issue with the virtual-memory system is the way that information is " +"passed into the kernel when a system call is made. 4.4BSD always copies " +"data from the process address space into a buffer in the kernel. For read " +"or write operations that are transferring large quantities of data, doing " +"the copy can be time consuming. An alternative to doing the copying is to " +"remap the process memory into the kernel. The 4.4BSD kernel always copies " +"the data for several reasons:" +msgstr "" +"Еще одной проблемой с системой виртуальной памяти является способ, которым " +"информация передается ядру при выполнении системного вызова. 4.4BSD всегда " +"копирует данные из адресного пространства процесса в буфер ядра. Для " +"операций чтения и записи, при которых передаются большие объемы данных, " +"выполнение копирования может оказаться занимающим время процессом. " +"Альтернативным способом является манипуляции с адресным пространством " +"процесса в ядре. Ядро 4.4BSD всегда копирует данные о нескольким причинам:" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:372 +msgid "" +"Often, the user data are not page aligned and are not a multiple of the " +"hardware page length." +msgstr "" +"Зачастую пользовательские данные не выравнены по границе страницы памяти и " +"их объем не кратен размеру аппаратной страницы памяти." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:373 +msgid "" +"If the page is taken away from the process, it will no longer be able to " +"reference that page. Some programs depend on the data remaining in the " +"buffer even after those data have been written." +msgstr "" +"Если страница памяти забирается от процесса, он не может больше ссылаться на " +"эту страницу. Некоторые программы зависят от данных, остающихся в буфере, " +"даже после записи этих данных." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:374 +msgid "" +"If the process is allowed to keep a copy of the page (as it is in current " +"4.4BSD semantics), the page must be made _copy-on-write_. A copy-on-write " +"page is one that is protected against being written by being made read-only. " +"If the process attempts to modify the page, the kernel gets a write fault. " +"The kernel then makes a copy of the page that the process can modify. " +"Unfortunately, the typical process will immediately try to write new data to " +"its output buffer, forcing the data to be copied anyway." +msgstr "" +"Если процесс позволяет хранить копию страницы памяти (как это делается в " +"существующей 4.4BSD), то страница должна иметь атрибут _копирования-при-" +"записи_. Такая страница является одной из таковых, что защищается от записи " +"при помощи атрибута только-для-чтения. Если процесс пытается модифицировать " +"страницу памяти, в ядре возникает ситуация ошибки записи. После этого ядро " +"делает копию страницы, которую процесс может изменять. К несчастью, " +"большинство процессов будет немедленно пытаться записать новые данные в свой " +"буфер вывода, что приводит в любом случае к копированию данных." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:375 +msgid "" +"When pages are remapped to new virtual-memory addresses, most memory-" +"management hardware requires that the hardware address-translation cache be " +"purged selectively. The cache purges are often slow. The net effect is that " +"remapping is slower than copying for blocks of data less than 4 to 8 Kbyte." +msgstr "" +"Когда страницы переносятся в новые адреса виртуальной памяти, большинство " +"аппаратных менеджеров памяти требуют, чтобы кэш аппаратного переназначения " +"адресов был выборочно очищен. Очистка кэша зачастую выполняется медленно. В " +"итоге получается, что переназначение адресов оказывается медленнее, чем " +"копирование блоков данных, не превышающих 4 или 8 килобайт." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:378 +msgid "" +"The biggest incentives for memory mapping are the needs for accessing big " +"files and for passing large quantities of data between processes. The " +"_mmap_ interface provides a way for both of these tasks to be done without " +"copying." +msgstr "" +"Больше всего отображение памяти нужно для работы к большими файлами и " +"передачи больших объемов данных между процессами. Интерфейс _mmap_ дает " +"методы для выполнения обеих этих операций без копирования." + +#. type: Title ==== +#: documentation/content/en/books/design-44bsd/_index.adoc:379 +#, no-wrap +msgid "Memory Management Inside the Kernel" +msgstr "Управление памятью внутри ядра" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:388 +msgid "" +"The kernel often does allocations of memory that are needed for only the " +"duration of a single system call. In a user process, such short-term memory " +"would be allocated on the run-time stack. Because the kernel has a limited " +"run-time stack, it is not feasible to allocate even moderate-sized blocks of " +"memory on it. Consequently, such memory must be allocated through a more " +"dynamic mechanism. For example, when the system must translate a pathname, " +"it must allocate a 1-Kbyte buffer to hold the name. Other blocks of memory " +"must be more persistent than a single system call, and thus could not be " +"allocated on the stack even if there was space. An example is protocol-" +"control blocks that remain throughout the duration of a network connection." +msgstr "" +"Ядро часто выполняет выделение памяти, которое нужно только для выполнения " +"единственного системного вызова. В пользовательском процессе такая " +"кратковременно используемая память будет выделяться в стеке во время " +"выполнения. Так как ядро имеет ограниченный объем стека времени выполнения, " +"то неэффективно выделять в нем даже блоки памяти среднего размера. Таким " +"образом, такая память должна выделяться посредством более гибкого механизма. " +"Например, когда системный вызов должен преобразовать имя каталога, он должен " +"выделить буфер размером 1 Кбайт для хранения имени. Другие блоки памяти " +"должны выделяться на более продолжительный срок, чем один системный вызов, и " +"поэтому не могут выделяться в стеке, даже если там есть место. В качестве " +"примера можно взять блоки управления протоколами, которые существуют на всем " +"протяжении сетевого соединения." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:398 +msgid "" +"Demands for dynamic memory allocation in the kernel have increased as more " +"services have been added. A generalized memory allocator reduces the " +"complexity of writing code inside the kernel. Thus, the 4.4BSD kernel has a " +"single memory allocator that can be used by any part of the system. It has " +"an interface similar to the C library routines _malloc_ and _free_ that " +"provide memory allocation to application programs " +"crossref:design-44bsd[biblio-mckusick-2, [McKusick & Karels, 1988]]. Like " +"the C library interface, the allocation routine takes a parameter specifying " +"the size of memory that is needed. The range of sizes for memory requests " +"is not constrained; however, physical memory is allocated and is not paged. " +"The free routine takes a pointer to the storage being freed, but does not " +"require the size of the piece of memory being freed." +msgstr "" +"Необходимость в динамическом выделении памяти в ядре становилась все более " +"острой вместе с добавлением количества сервисов. Общий механизм выделения " +"памяти уменьшает сложность написания кода в ядре. Поэтому в 4.4BSD ядро " +"имеет единый механизм выделения памяти, который может использоваться в любой " +"части системы. У него есть интерфейс, похожий на функции библиотеки языка C " +"_malloc_ и _free_, которые обеспечивают выделение памяти в прикладных " +"программах crossref:design-44bsd[biblio-mckusick-2, [McKusick & Karels, " +"1988]]. Как интерфейс библиотеки языка C, функция выделения памяти получает " +"параметр, указывающий на размер памяти, который необходим. Диапазон " +"запрашиваемых объемов выделяемой памяти не ограничен; однако выделяемая " +"физическая память не подвергается постраничной подгрузке. Функции " +"освобождения памяти передается указатель на освобождаемый участок памяти, но " +"указывать размер освобождаемого участка памяти не нужно." + +#. type: Title === +#: documentation/content/en/books/design-44bsd/_index.adoc:400 +#, no-wrap +msgid "I/O System" +msgstr "Система ввода/вывода" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:404 +msgid "" +"The basic model of the UNIX I/O system is a sequence of bytes that can be " +"accessed either randomly or sequentially. There are no _access methods_ and " +"no _control blocks_ in a typical UNIX user process." +msgstr "" +"Базовой моделью системы ввода/вывода UNIX является последовательность байт, " +"доступ к которым может осуществляться как последовательно, так и в в " +"произвольном порядке. В типичном пользовательском процессе UNIX нет таких " +"понятий, как _методы доступа_ или _управляющие блоки_." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:412 +msgid "" +"Different programs expect various levels of structure, but the kernel does " +"not impose structure on I/O. For instance, the convention for text files is " +"lines of ASCII characters separated by a single newline character (the ASCII " +"line-feed character), but the kernel knows nothing about this convention. " +"For the purposes of most programs, the model is further simplified to being " +"a stream of data bytes, or an _I/O stream_. It is this single common data " +"form that makes the characteristic UNIX tool-based approach work " +"crossref:design-44bsd[biblio-kernighan, [Kernighan & Pike, 1984]]. An I/O " +"stream from one program can be fed as input to almost any other program. " +"(This kind of traditional UNIX I/O stream should not be confused with the " +"Eighth Edition stream I/O system or with the System V, Release 3 STREAMS, " +"both of which can be accessed as traditional I/O streams.)" +msgstr "" +"Различные программы используют разнообразные структуры данных, но ядро не " +"связывает ввод/вывод с используемыми структурами. Например, текстовым файлом " +"считается файл из строк символов набора ASCII, которые разделены одним " +"символом новой строки (символ ASCII перевода строки), но ядро не знает " +"ничего об этом соглашении. Для удовлетворения потребностей большинства " +"программ модель еще более упрощена и сводится к потоку байт данных, или " +"_потоку ввода/вывода_. Такое единое представление данных позволяет работать " +"характерному для UNIX подходу на основе инструментов " +"crossref:design-44bsd[biblio-kernighan, [Kernighan & Pike, 1984]]. Поток " +"ввода/вывода одной программы может быть подан в качестве входной информации " +"практически любой другой программе. (Этот тип традиционных для UNIX потоков " +"ввода/выводы не нужно путать с потоковой системой ввода/вывода из Eighth " +"Edition или с потоками из System V, Release 3 (STREAMS), оба из которых " +"доступны как обычные потоки ввода/вывода.)" + +#. type: Title ==== +#: documentation/content/en/books/design-44bsd/_index.adoc:413 +#, no-wrap +msgid "Descriptors and I/O" +msgstr "Дескрипторы и ввод/вывод" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:421 +msgid "" +"UNIX processes use _descriptors_ to reference I/O streams. Descriptors are " +"small unsigned integers obtained from the _open_ and _socket_ system calls. " +"The _open_ system call takes as arguments the name of a file and a " +"permission mode to specify whether the file should be open for reading or " +"for writing, or for both. This system call also can be used to create a " +"new, empty file. A _read_ or _write_ system call can be applied to a " +"descriptor to transfer data. The _close_ system call can be used to " +"deallocate any descriptor." +msgstr "" +"Процессы UNIX для работы с потоками ввода/вывода используют _дескрипторы_. " +"Дескрипторы представляют собой беззнаковые целые числа, получаемые после " +"выполнения системных вызовов _open_ и _socket_. Системный вызов _open_ " +"получает в качестве аргументов имя файла и режим доступа, который " +"определяет, должен ли файл открываться для чтения, для записи или для обеих " +"операций. Этот системный вызов может также использоваться для создания " +"нового пустого файла. Системные вызовы _read_ и _write_ могут применяться к " +"дескриптору для переноса данных. Системный вызов _close_ может " +"использоваться для уничтожения любого дескриптора." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:424 +msgid "" +"Descriptors represent underlying objects supported by the kernel, and are " +"created by system calls specific to the type of object. In 4.4BSD, three " +"kinds of objects can be represented by descriptors: files, pipes, and " +"sockets." +msgstr "" +"Дескрипторы представляют низкоуровневые объекты, поддерживаемые ядром, и " +"создаваемые системными вызовами, специфичными для каждого типа объектов. В " +"4.4BSD дескрипторы могут представлять три типа таких объектов: файлы, каналы " +"и сокеты." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:426 +msgid "" +"A _file_ is a linear array of bytes with at least one name. A file exists " +"until all its names are deleted explicitly and no process holds a descriptor " +"for it. A process acquires a descriptor for a file by opening that file's " +"name with the _open_ system call. I/O devices are accessed as files." +msgstr "" +"_Файл_ представляет собой линейную последовательность байт, имеющую по " +"крайней мере одно имя. Файл существует, пока все его имена не удалены и ни " +"один из процессов не хранит его дескриптор. Процесс получает дескриптор " +"файла, открывая имя файла посредством системного вызова _open_. Работа с " +"устройствами ввода/вывода осуществляется как с файлами." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:427 +msgid "" +"A _pipe_ is a linear array of bytes, as is a file, but it is used solely as " +"an I/O stream, and it is unidirectional. It also has no name, and thus " +"cannot be opened with _open_. Instead, it is created by the _pipe_ system " +"call, which returns two descriptors, one of which accepts input that is sent " +"to the other descriptor reliably, without duplication, and in order. The " +"system also supports a named pipe or FIFO. A FIFO has properties identical " +"to a pipe, except that it appears in the filesystem; thus, it can be opened " +"using the _open_ system call. Two processes that wish to communicate each " +"open the FIFO: One opens it for reading, the other for writing." +msgstr "" +"_Каналом_ является линейная последовательность байт, такая же, как файл, но " +"используемая исключительно как поток ввода/вывода, причем однонаправленный. " +"У канала нет имени, и поэтому он не может быть открыт при помощи _open_. " +"Вместо этого он создается посредством системного вызова _pipe_, который " +"возвращает два дескриптора, один из которых принимает входные данные, без " +"искажений, без повторений и в той же самой последовательности посылаемый на " +"другой дескриптор. Система также поддерживает именованный канал, или FIFO. " +"FIFO имеет те же самые свойства, что и канал, за исключением того, что он " +"располагается в файловой системе; поэтому он может быть открыт системным " +"вызовом _open_. Процессы, которые хотят обмениваться данными, открывают " +"FIFO: Один процесс открывает его для чтения, а другой для записи." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:428 +msgid "" +"A _socket_ is a transient object that is used for interprocess " +"communication; it exists only as long as some process holds a descriptor " +"referring to it. A socket is created by the _socket_ system call, which " +"returns a descriptor for it. There are different kinds of sockets that " +"support various communication semantics, such as reliable delivery of data, " +"preservation of message ordering, and preservation of message boundaries." +msgstr "" +"_Сокет_ является промежуточным объектом, который используется для " +"межпроцессных коммуникаций; он существует, пока какой-либо процесс хранит " +"дескриптор, ссылающийся на него. Сокет создается системным вызовом _socket_, " +"который возвращает его дескриптор. Имеется несколько типов сокетов, которые " +"поддерживают различные коммуникационные возможности, такие, как надежную " +"доставку данных, сохранение последовательности передаваемых сообщений, и " +"сохранение границ сообщений." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:430 +msgid "" +"In systems before 4.2BSD, pipes were implemented using the filesystem; when " +"sockets were introduced in 4.2BSD, pipes were reimplemented as sockets." +msgstr "" +"В системах, предшествующих 4.2BSD, каналы были реализованы в файловой " +"системе, когда в 4.2BSD появились сокеты, то каналы были повторно " +"реализованы как сокеты." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:436 +msgid "" +"The kernel keeps for each process a _descriptor table_, which is a table " +"that the kernel uses to translate the external representation of a " +"descriptor into an internal representation. (The descriptor is merely an " +"index into this table.) The descriptor table of a process is inherited from " +"that process's parent, and thus access to the objects to which the " +"descriptors refer also is inherited. The main ways that a process can " +"obtain a descriptor are by opening or creation of an object, and by " +"inheritance from the parent process. In addition, socket IPC allows passing " +"of descriptors in messages between unrelated processes on the same machine." +msgstr "" +"Для каждого процесса ядро хранит _таблицу дескрипторов_, которая является " +"таблицей, используемой ядром для преобразования внешнего представления " +"дескриптора в его внутреннее представление. (Дескриптор является просто " +"индексом в этой таблице.) Таблица дескрипторов процесса наследуется от " +"родительского процесса, и вместе с ней наследуется и доступ к объектам, на " +"которые ссылаются дескрипторы. Основными способами, при помощи которых " +"процесс может получить дескриптор, является открытие или создание объекта, а " +"также наследование от родительского процесса. Кроме того, межпроцессные " +"коммуникации при помощи сокетов позволяют передавать дескрипторы в " +"сообщениях между несвязанными процессами на одной и той же машине." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:442 +msgid "" +"Every valid descriptor has an associated _file offset_ in bytes from the " +"beginning of the object. Read and write operations start at this offset, " +"which is updated after each data transfer. For objects that permit random " +"access, the file offset also may be set with the _lseek_ system call. " +"Ordinary files permit random access, and some devices do, as well. Pipes " +"and sockets do not." +msgstr "" +"Любой рабочий дескриптор имеет связанное с ним _смещение в файле_ в байтах " +"от начала объекта. Операции чтения и записи начинаются от этого смещения, " +"который обновляется после каждой передачи данных. Для объектов, к которым " +"разрешен произвольный доступ, смещение в файле может быть установлено " +"посредством системного вызова _lseek_. Обычные файлы, а также некоторые " +"устройства, разрешают произвольный доступ к ним. Каналы и сокеты этого " +"делать не позволяют." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:445 +msgid "" +"When a process terminates, the kernel reclaims all the descriptors that were " +"in use by that process. If the process was holding the final reference to " +"an object, the object's manager is notified so that it can do any necessary " +"cleanup actions, such as final deletion of a file or deallocation of a " +"socket." +msgstr "" +"Когда процесс завершается, ядро освобождает все дескрипторы, которые " +"использовались этим процессом. Если процесс хранил последнюю ссылку на " +"объект, то менеджер объектов уведомляется для выполнения всех необходимых " +"действий, таких, как окончательное удаление файла или уничтожение сокета." + +#. type: Title ==== +#: documentation/content/en/books/design-44bsd/_index.adoc:446 +#, no-wrap +msgid "Descriptor Management" +msgstr "Управление дескрипторами" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:453 +msgid "" +"Most processes expect three descriptors to be open already when they start " +"running. These descriptors are 0, 1, 2, more commonly known as _standard " +"input_, _standard output_, and _standard error_, respectively. Usually, all " +"three are associated with the user's terminal by the login process (see " +"Section 14.6) and are inherited through _fork_ and _exec_ by processes run " +"by the user. Thus, a program can read what the user types by reading " +"standard input, and the program can send output to the user's screen by " +"writing to standard output. The standard error descriptor also is open for " +"writing and is used for error output, whereas standard output is used for " +"ordinary output." +msgstr "" +"Большинство процессов ожидают, что перед началом их работы уже будут открыты " +"три дескриптора. Это дескрипторы 0, 1 и 2, больше известные как _стандартный " +"ввод_, _стандартный вывод_ и _стандартный поток диагностических сообщений_, " +"соответственно. Как правило, все они связываются с пользовательским " +"терминалом по время входа в систему (смотри Раздел 14.6) и наследуются через " +"вызовы _fork_ и _exec_ процессами, запускаемыми пользователем. Таким " +"образом, программа может считывать то, что набирает пользователь, из " +"стандартного ввода, и программа может выдавать результат на экран " +"пользователя, осуществляя запись в стандартный вывод. Дескриптор потока " +"диагностических сообщений также открыт для записи и используется для вывода " +"ошибок, когда как стандартный вывод используется для обычного вывода." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:457 +msgid "" +"These (and other) descriptors can be mapped to objects other than the " +"terminal; such mapping is called _I/O redirection_, and all the standard " +"shells permit users to do it. The shell can direct the output of a program " +"to a file by closing descriptor 1 (standard output) and opening the desired " +"output file to produce a new descriptor 1. It can similarly redirect " +"standard input to come from a file by closing descriptor 0 and opening the " +"file." +msgstr "" +"Эти (и другие) дескрипторы могут отображаться на объекты, отличающиеся от " +"терминала; такое отображение называется _перенаправлением ввода/вывода_, и " +"все стандартные командные процессоры позволяют пользователю это делать. " +"Оболочка может направить вывод программы в файл, закрывая дескриптор 1 " +"(стандартный вывод) и открывая выбранный выходной файл для создания нового " +"дескриптора 1. Подобным же образом стандартный ввод может браться из файла, " +"при этом закрывается дескриптор 0 и открывается файл." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:463 +msgid "" +"Pipes allow the output of one program to be input to another program without " +"rewriting or even relinking of either program. Instead of descriptor 1 " +"(standard output) of the source program being set up to write to the " +"terminal, it is set up to be the input descriptor of a pipe. Similarly, " +"descriptor 0 (standard input) of the sink program is set up to reference the " +"output of the pipe, instead of the terminal keyboard. The resulting set of " +"two processes and the connecting pipe is known as a _pipeline_. Pipelines " +"can be arbitrarily long series of processes connected by pipes." +msgstr "" +"Каналы позволяют выводу одной программы становиться вводом другой программы " +"без переписывания и даже перекомпоновки программ. Вместо того, чтобы " +"дескриптор 1 (стандартный вывод) исходной программы был настроен на запись " +"на терминал, он настраивается на входной дескриптор канала. Аналогично " +"дескриптор 0 (стандартный ввод) принимающей программы настраивается на " +"обращение к выводу канала, а не к клавиатуре терминала. Результирующий набор " +"двух процессов и соединяющий канал называется _конвейером_. Конвейеры могут " +"быть весьма большими последовательностями процессов, соединенных каналами." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:470 +msgid "" +"The _open_, _pipe_, and _socket_ system calls produce new descriptors with " +"the lowest unused number usable for a descriptor. For pipelines to work, " +"some mechanism must be provided to map such descriptors into 0 and 1. The " +"_dup_ system call creates a copy of a descriptor that points to the same " +"file-table entry. The new descriptor is also the lowest unused one, but if " +"the desired descriptor is closed first, _dup_ can be used to do the desired " +"mapping. Care is required, however: If descriptor 1 is desired, and " +"descriptor 0 happens also to have been closed, descriptor 0 will be the " +"result. To avoid this problem, the system provides the _dup2_ system call; " +"it is like _dup_, but it takes an additional argument specifying the number " +"of the desired descriptor (if the desired descriptor was already open, " +"_dup2_ closes it before reusing it)." +msgstr "" +"Системные вызовы _open_, _pipe_ и _socket_ порождают новые дескрипторы с " +"наименьшим неиспользуемым номером, подходящим для дескриптора. Для того, " +"чтобы конвейеры могли работать, должен существовать механизм для отображения " +"таких дескрипторов в 0 и 1. Системный вызов _dup_ создает копию дескриптора, " +"которая указывает на ту же самую запись в таблице файлов. Новый дескриптор " +"также является наименьшим неиспользуемым, но если нужный дескриптор сначала " +"закрыть, то _dup_ можно использовать для выполнения нужного отображения. " +"Однако здесь требуется некоторая осторожность: если нужен дескриптор 1, а " +"дескриптор 0 уже закрыт, то в результате получится дескриптор 0. Во " +"избежание этой проблемы в системе имеется системный вызов _dup2_; он похож " +"на _dup_, но воспринимает дополнительный аргумент, указывающий номер нужного " +"дескриптора (если нужный дескриптор уже открыт, то _dup2_ его закроет перед " +"повторным использованием)." + +#. type: Title ==== +#: documentation/content/en/books/design-44bsd/_index.adoc:471 +#, no-wrap +msgid "Devices" +msgstr "Устройства" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:477 +msgid "" +"Hardware devices have filenames, and may be accessed by the user via the " +"same system calls used for regular files. The kernel can distinguish a " +"_device special file_ or _special file_, and can determine to what device it " +"refers, but most processes do not need to make this determination. " +"Terminals, printers, and tape drives are all accessed as though they were " +"streams of bytes, like 4.4BSD disk files. Thus, device dependencies and " +"peculiarities are kept in the kernel as much as possible, and even in the " +"kernel most of them are segregated in the device drivers." +msgstr "" +"Аппаратные устройства имеют связанные с ними имена файлов, и к ним может " +"обращаться пользователь при помощи тех же самых системных вызовов, что " +"используются для обычных файлов. Ядро может различать _специальный файл " +"устройства_ или просто _специальный файл_, и может определять, к какому " +"устройству он относится, но большинство процессов не выполняют такого " +"распознавания. Терминалы, принтеры и стримеры все доступны как " +"последовательности байт, как дисковые файлы 4.4BSD. Таким образом, " +"особенности работы устройств максимально скрываются ядром, и даже в ядре " +"большинство из них отличаются в драйверах." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:482 +msgid "" +"Hardware devices can be categorized as either _structured_ or " +"_unstructured_; they are known as _block_ or _character_ devices, " +"respectively. Processes typically access devices through _special files_ in " +"the filesystem. I/O operations to these files are handled by kernel-" +"resident software modules termed _device drivers_. Most network-" +"communication hardware devices are accessible through only the interprocess-" +"communication facilities, and do not have special files in the filesystem " +"name space, because the _raw-socket_ interface provides a more natural " +"interface than does a special file." +msgstr "" +"Аппаратные устройства могут быть разделены на _структурированные_ или " +"_неструктурированные_; они известны под названиями _блочные_ и " +"_посимвольные_, соответственно. Как правило, процессы обращаются к " +"устройствам посредством _специальных файлов_ в файловой системе. Операции " +"ввода/вывода, выполняемые с такими файлами, обрабатываются постоянно " +"находящимися в ядре программными модулями, называемыми _драйверами " +"устройств_. Большинство аппаратных устройств для сетевых коммуникаций " +"доступны только при помощи подсистемы межпроцессного взаимодействия, и не " +"имеют специальных устройств в пространстве имен файловой системы, так как " +"интерфейс _низкоуровневых сокетов_ дает более естественный интерфейс, чем " +"специальный файл." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:486 +msgid "" +"Structured or block devices are typified by disks and magnetic tapes, and " +"include most random-access devices. The kernel supports read-modify-write-" +"type buffering actions on block-oriented structured devices to allow the " +"latter to be read and written in a totally random byte-addressed fashion, " +"like regular files. Filesystems are created on block devices." +msgstr "" +"Структурированные или блочные устройства разделяются на диски и магнитные " +"ленты и включают в себя большинство устройств с произвольным доступом. Ядро " +"поддерживает операции буферизации типа чтение-изменение-запись с блочными " +"структурированными устройствами для того, чтобы разрешить последним " +"осуществлять чтение и запись полностью произвольным образом, как с обычными " +"файлами. Файловые системы создаются на блочных устройствах." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:490 +msgid "" +"Unstructured devices are those devices that do not support a block " +"structure. Familiar unstructured devices are communication lines, raster " +"plotters, and unbuffered magnetic tapes and disks. Unstructured devices " +"typically support large block I/O transfers." +msgstr "" +"Неструктурированными устройствами являются те, что не поддерживают блочную " +"структуру. Типичными неструктурированными устройствами являются линии связи, " +"растровые графопостроители и небуферизируемые магнитные ленты и диски. " +"Неструктурированные устройства, как правило, поддерживают перенос больших " +"объемов данных." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:493 +msgid "" +"Unstructured files are called _character devices_ because the first of these " +"to be implemented were terminal device drivers. The kernel interface to the " +"driver for these devices proved convenient for other devices that were not " +"block structured." +msgstr "" +"Неструктурированные файлы называют _символьными устройствами_, потому что " +"первые из них являлись драйверами терминальных устройств. Интерфейс ядра к " +"драйверу для этих устройств доказал удобство его использования для других " +"неструктурированных устройств." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:499 +msgid "" +"Device special files are created by the _mknod_ system call. There is an " +"additional system call, _ioctl_, for manipulating the underlying device " +"parameters of special files. The operations that can be done differ for " +"each device. This system call allows the special characteristics of devices " +"to be accessed, rather than overloading the semantics of other system " +"calls. For example, there is an _ioctl_ on a tape drive to write an end-of-" +"tape mark, instead of there being a special or modified version of _write_." +msgstr "" +"Специальные файлы устройств создаются системным вызовом _mknod_. Имеется " +"дополнительный системный вызов, _ioctl_, для управления низкоуровневыми " +"параметрами специальных файлов. Выполняемые операции для каждого устройства " +"различны. Этот системный вызов позволяет осуществлять доступ к специальным " +"характеристикам устройств, не перегружая смысл других системных вызовов. " +"Например, для стримера существует _ioctl_ для записи метки конца ленты, но " +"нет особой или измененной версии функции _write_." + +#. type: Title ==== +#: documentation/content/en/books/design-44bsd/_index.adoc:500 +#, no-wrap +msgid "Socket IPC" +msgstr "Механизм межпроцессных коммуникаций посредством сокетов" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:509 +msgid "" +"The 4.2BSD kernel introduced an IPC mechanism more flexible than pipes, " +"based on _sockets_. A socket is an endpoint of communication referred to by " +"a descriptor, just like a file or a pipe. Two processes can each create a " +"socket, and then connect those two endpoints to produce a reliable byte " +"stream. Once connected, the descriptors for the sockets can be read or " +"written by processes, just as the latter would do with a pipe. The " +"transparency of sockets allows the kernel to redirect the output of one " +"process to the input of another process residing on another machine. A " +"major difference between pipes and sockets is that pipes require a common " +"parent process to set up the communications channel. A connection between " +"sockets can be set up by two unrelated processes, possibly residing on " +"different machines." +msgstr "" +"В ядре 4.2BSD появился механизм межпроцессного взаимодействия, более гибкий, " +"чем каналы, основанный на _сокетах_. Сокет является конечной точкой " +"коммуникаций, доступный через дескриптор, как файл или канал. Каждый из двух " +"процессов может создать сокет, а затем соединить эти конечные точки для " +"получения надежного канала передачи потока байт. После соединения процесс " +"может выполнять с дескрипторами операции чтения и записи, как это делалось с " +"каналами. Прозрачность сокетов позволяет ядру перенаправить вывод одного " +"процесса на вход другого, работающего на другой машине. Большим различием " +"между каналами и сокетами является то, что каналы требуют наличия общего " +"родительского процесса для установки коммуникации. Соединение между сокетами " +"может быть установлено двумя несвязанными процессами, возможно, работающими " +"на разных машинах." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:516 +msgid "" +"System V provides local interprocess communication through FIFOs (also known " +"as _named pipes_). FIFOs appear as an object in the filesystem that " +"unrelated processes can open and send data through in the same way as they " +"would communicate through a pipe. Thus, FIFOs do not require a common " +"parent to set them up; they can be connected after a pair of processes are " +"up and running. Unlike sockets, FIFOs can be used on only a local machine; " +"they cannot be used to communicate between processes on different machines. " +"FIFOs are implemented in 4.4BSD only because they are required by the " +"POSIX.1 standard. Their functionality is a subset of the socket interface." +msgstr "" +"System V предоставляет механизм локального межпроцессного взаимодействия " +"через FIFO (также называемые _именованными каналами_). FIFO отображаются как " +"объекты файловой системы, которые могут быть открыты несвязанными " +"процессами, и в которые можно открывать и посылать данные так же, как в " +"случае каналов. Таким образом, FIFO не требуют общего родительского процесса " +"для установки соединения; они могут быть соединены после того, как будут " +"запущены два процесса. В отличие от сокетов, FIFO могут быть использованы " +"только на локальной машине; они не могут быть использованы для связи между " +"процессами, работающими на разных машинах. FIFO реализованы в 4.4BSD, потому " +"что это требует стандарт POSIX.1. Их функциональность является подмножеством " +"функций интерфейса сокетов." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:523 +msgid "" +"The socket mechanism requires extensions to the traditional UNIX I/O system " +"calls to provide the associated naming and connection semantics. Rather " +"than overloading the existing interface, the developers used the existing " +"interfaces to the extent that the latter worked without being changed, and " +"designed new interfaces to handle the added semantics. The _read_ and " +"_write_ system calls were used for byte-stream type connections, but six new " +"system calls were added to allow sending and receiving addressed messages " +"such as network datagrams. The system calls for writing messages include " +"_send_, _sendto_, and _sendmsg_. The system calls for reading messages " +"include _recv_, _recvfrom_, and _recvmsg_. In retrospect, the first two in " +"each class are special cases of the others; _recvfrom_ and _sendto_ probably " +"should have been added as library interfaces to _recvmsg_ and _sendmsg_, " +"respectively." +msgstr "" +"Механизм сокетов требует расширения традиционных для UNIX системных вызовов " +"ввода/вывода для обеспечения соответствующих имен и смыслов соединениям. " +"Вместо того, чтобы перегружать существующий интерфейс, разработчики " +"использовали существующие интерфейсы, расширив их так, что они продолжили " +"работать без изменений, и разработали новые интерфейсы для работы с новыми " +"возможностями. Системные вызовы _read_ и _write_ использовались для " +"соединений типа потока байт, и было добавлено шесть новых системных вызовов, " +"что позволило посылать и принимать адресованные сообщения, такие, как " +"сетевые датаграммы. Системные вызовы для записи сообщений включают в себя " +"_send_, _sendto_ и _sendmsg_. Системные вызовы для чтения сообщений включают " +"_recv_, _recvfrom_ и _recvmsg_. В ретроспективе, первые два в каждом классе " +"являются особыми случаями других; _recvfrom_ и _sendto_, наверное, должны " +"были быть добавлены как библиотечные интерфейсы к _recvmsg_ и _sendmsg_, " +"соответственно." + +#. type: Title ==== +#: documentation/content/en/books/design-44bsd/_index.adoc:524 +#, no-wrap +msgid "Scatter/Gather I/O" +msgstr "Множественный ввод/вывод" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:530 +msgid "" +"In addition to the traditional _read_ and _write_ system calls, 4.2BSD " +"introduced the ability to do scatter/gather I/O. Scatter input uses the " +"_readv_ system call to allow a single read to be placed in several different " +"buffers. Conversely, the _writev_ system call allows several different " +"buffers to be written in a single atomic write. Instead of passing a single " +"buffer and length parameter, as is done with _read_ and _write_, the process " +"passes in a pointer to an array of buffers and lengths, along with a count " +"describing the size of the array." +msgstr "" +"Кроме традиционных системных вызовов _read_ и _write_, в 4.2BSD появилась " +"возможность выполнять множественный ввод/вывод. Множественный ввод " +"использует системный вызов _readv_ для размещения результата единственной " +"операции чтения в нескольких различных буферах. Обратно, системный вызов " +"_writev_ позволяет осуществлять запись нескольких различных буферов за одну " +"атомарную операцию записи. Вместо передачи одного буфера и его длины в " +"качестве параметров, как это делается при использовании системных вызовов " +"_read_ и _write_, процесс передает указатель на массив буферов и их длин, а " +"также счетчик, определяющий размер массива." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:535 +msgid "" +"This facility allows buffers in different parts of a process address space " +"to be written atomically, without the need to copy them to a single " +"contiguous buffer. Atomic writes are necessary in the case where the " +"underlying abstraction is record based, such as tape drives that output a " +"tape block on each write request. It is also convenient to be able to read " +"a single request into several different buffers (such as a record header " +"into one place and the data into another). Although an application can " +"simulate the ability to scatter data by reading the data into a large buffer " +"and then copying the pieces to their intended destinations, the cost of " +"memory-to-memory copying in such cases often would more than double the " +"running time of the affected application." +msgstr "" +"Такой механизм позволяет буферам в различных областях адресного пространства " +"процесса записываться атомарно, без необходимости копировать их в один " +"буфер. Атомарные операции записи необходимы в случае, когда низкоуровневые " +"абстракции основаны на записях, например, стримеры, которые выводят блок " +"ленты при каждом запросе на запись. Также полезна возможность помещать " +"результат одного запроса на чтение в нескольких различных буферах (например, " +"заголовок записи в одно место, а данные в другое). Хотя приложение может " +"симулировать возможность выполнять множественные операции посредством чтения " +"данных в большой буфер с последующим копированием их частей в нужные " +"области, и накладные расходы на копирование в памяти в таких случаях часто " +"увеличивает время выполнения приложения чуть ли не вдвое." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:538 +msgid "" +"Just as _send_ and _recv_ could have been implemented as library interfaces " +"to _sendto_ and _recvfrom_, it also would have been possible to simulate " +"_read_ with _readv_ and _write_ with _writev_. However, _read_ and _write_ " +"are used so much more frequently that the added cost of simulating them " +"would not have been worthwhile." +msgstr "" +"Так же, как _send_ и _recv_ могут быть реализованы в виде библиотечных " +"интерфейсов к _sendto_ и _recvfrom_, возможно симулирование _read_ через " +"_readv_ и _write_ через _writev_. Однако _read_ и _write_ используются столь " +"часто, что накладные расходы на такую симуляцию не стоят того." + +#. type: Title ==== +#: documentation/content/en/books/design-44bsd/_index.adoc:539 +#, no-wrap +msgid "Multiple Filesystem Support" +msgstr "Поддержка нескольких файловых систем" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:545 +msgid "" +"With the expansion of network computing, it became desirable to support both " +"local and remote filesystems. To simplify the support of multiple " +"filesystems, the developers added a new virtual node or _vnode_ interface to " +"the kernel. The set of operations exported from the vnode interface appear " +"much like the filesystem operations previously supported by the local " +"filesystem. However, they may be supported by a wide range of filesystem " +"types:" +msgstr "" +"Вместе с распространением сетевых вычислений возникла потребность в " +"поддержке как локальных, так и удаленных файловых систем. Для облегчения " +"поддержки нескольких файловых систем разработчики добавили в ядро интерфейс " +"виртуальных узлов файловой системы, или интерфейс _vnode_. Набор операций, " +"экспортируемых через интерфейс vnode, похож на операции файловой системы, " +"ранее поддерживаемые локальной файловой системой. Однако они могут " +"поддерживаться широким спектром типов файловых систем:" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:547 +msgid "Local disk-based filesystems" +msgstr "Локальные файловые системы, использующие диск" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:548 +msgid "Files imported using a variety of remote filesystem protocols" +msgstr "" +"Файлы, импортируемые при помощи разнообразных протоколов удаленных файловых " +"систем" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:549 +msgid "Read-only CD-ROM filesystems" +msgstr "Файловые системы CD-ROM, доступные только для чтения" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:550 +msgid "" +"Filesystems providing special-purpose interfaces -- for example, the `/proc` " +"filesystem" +msgstr "" +"Файловые системы, предоставляющие специализированные услуги - к примеру, " +"файловая система [.filename]#/proc#" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:553 +msgid "" +"A few variants of 4.4BSD, such as FreeBSD, allow filesystems to be loaded " +"dynamically when the filesystems are first referenced by the _mount_ system " +"call. The vnode interface is described in Section 6.5; its ancillary " +"support routines are described in Section 6.6; several of the special-" +"purpose filesystems are described in Section 6.7." +msgstr "" +"Некоторые варианты 4.4BSD, такие, как FreeBSD, позволяют выполнять " +"динамическую загрузку файловых систем при первом обращении к ним при помощи " +"системного вызова _mount_. Интерфейс vnode описан в Разделе 6.5; вдобавок он " +"поддерживает функции, описанные в Разделе 6.6; некоторые из файловых систем " +"специального назначения описаны в Разделе 6.7." + +#. type: Title === +#: documentation/content/en/books/design-44bsd/_index.adoc:555 +#, no-wrap +msgid "Filesystems" +msgstr "Файловые системы" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:560 +msgid "" +"A regular file is a linear array of bytes, and can be read and written " +"starting at any byte in the file. The kernel distinguishes no record " +"boundaries in regular files, although many programs recognize line-feed " +"characters as distinguishing the ends of lines, and other programs may " +"impose other structure. No system-related information about a file is kept " +"in the file itself, but the filesystem stores a small amount of ownership, " +"protection, and usage information with each file." +msgstr "" +"Обычный файл представляет собой массив байтов, и может читаться и " +"записываться, начиная с произвольного байта файла. Ядро не различает в " +"обычных файлах границ записей, хотя многие программы воспринимают символы " +"перевода строки в качестве признаков конца строк, но другие программы могут " +"предполагать наличие других структур. В самом файле не хранится никакой " +"системной информации о файле, но в файловой системе размещается некоторая " +"информация о владельце, правах доступа и об использовании каждого файла." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:565 +msgid "" +"A _filename_ component is a string of up to 255 characters. These filenames " +"are stored in a type of file called a _directory_. The information in a " +"directory about a file is called a _directory entry_ and includes, in " +"addition to the filename, a pointer to the file itself. Directory entries " +"may refer to other directories, as well as to plain files. A hierarchy of " +"directories and files is thus formed, and is called a _filesystem_;" +msgstr "" +"Компонент под названием _имя файла_ является строкой длиной до 255 символов. " +"Эти имена хранятся в файле особого типа, который называется _каталогом_. " +"Информация о файле в каталоге называется _записью каталога_ и включает, " +"кроме имени файла, указатель на сам файл. Записи каталога могут ссылаться " +"как на другие каталоги, так и на обычные файлы. Таким образом формируется " +"иерархия каталогов и файлов, которая и называется файловой системой " +"_filesystem_;" + +#. type: Block title +#: documentation/content/en/books/design-44bsd/_index.adoc:566 +#, no-wrap +msgid "A small filesystem" +msgstr "Небольшая файловая система" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:569 +msgid "image:fig2.png[A small filesystem]" +msgstr "image:fig2.png[Дерево небольшой файловой системы]" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:574 +msgid "" +"a small one is shown in crossref:design-44bsd[fig-small-fs, A small " +"filesystem]. Directories may contain subdirectories, and there is no " +"inherent limitation to the depth with which directory nesting may occur. To " +"protect the consistency of the filesystem, the kernel does not permit " +"processes to write directly into directories. A filesystem may include not " +"only plain files and directories, but also references to other objects, such " +"as devices and sockets." +msgstr "" +"Одна небольшая файловая система показана на crossref:design-44bsd[fig-small-" +"fs, A small filesystem]. Каталоги могут содержать подкаталоги, и нет " +"ограничений вложенности одного каталога в другой по глубине. Для соблюдения " +"целостности файловой системы, ядро не позволяет процессу производить запись " +"непосредственно в каталоги. Файловая система может хранить не только обычные " +"файлы и каталоги, но также ссылки на другие объекты, такие, как устройства и " +"сокеты." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:579 +msgid "" +"The filesystem forms a tree, the beginning of which is the _root directory_, " +"sometimes referred to by the name _slash_, spelled with a single solidus " +"character (/). The root directory contains files; in our example in Fig " +"2.2, it contains `vmunix`, a copy of the kernel-executable object file. It " +"also contains directories; in this example, it contains the `usr` " +"directory. Within the `usr` directory is the `bin` directory, which mostly " +"contains executable object code of programs, such as the files `ls` and `vi`." +msgstr "" +"Файловая система образует дерево, начало которого находится в _корневом " +"каталоге_, иногда называемому по имени _слэш_, которое соответствует символу " +"одинарной наклонной черты (/). Корневой каталог содержит файлы; в нашем " +"примере на Рисунке 2.2, он содержит [.filename]#vmunix#, копию выполнимого " +"объектного файла ядра. В нем также расположены каталоги; в этом примере он " +"содержит каталог [.filename]#usr#. Внутри каталога [.filename]#usr# " +"располагается каталог [.filename]#bin#, который в основном содержит " +"выполнимый объектный код программ, таких, как [.filename]#ls# и " +"[.filename]#vi#." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:584 +msgid "" +"A process identifies a file by specifying that file's _pathname_, which is a " +"string composed of zero or more filenames separated by slash (/) " +"characters. The kernel associates two directories with each process for use " +"in interpreting pathnames. A process's _root directory_ is the topmost " +"point in the filesystem that the process can access; it is ordinarily set to " +"the root directory of the entire filesystem. A pathname beginning with a " +"slash is called an _absolute pathname_, and is interpreted by the kernel " +"starting with the process's root directory." +msgstr "" +"Процесс обращается к файлу, указывая _путь_ до него, который является " +"строкой, состоящей из нескольких или ни одного имен файлов, разделенных " +"символами слэша (/). С каждым процессом ядро связывает два каталога, при " +"помощи которых можно интерпретировать маршруты до файлов. _Корневой каталог_ " +"процесса является самой верхней точкой файловой системы, которую может " +"достичь процесс; обычно он соответствует корневому каталогу всей файловой " +"системы. Маршрут, начинающийся с символа слэша, называется _абсолютным " +"маршрутом_, и интерпретируется ядром, начиная с корневого каталога процесса." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:590 +msgid "" +"A pathname that does not begin with a slash is called a _relative pathname_, " +"and is interpreted relative to the _current working directory_ of the " +"process. (This directory also is known by the shorter names _current " +"directory_ or _working directory_.) The current directory itself may be " +"referred to directly by the name _dot_, spelled with a single period (`.`) " +"The filename _dot-dot_ (`..`) refers to a directory's parent directory. The " +"root directory is its own parent." +msgstr "" +"Имя пути, которое не начинается со слэша, называется _относительным " +"маршрутом_, и интерпретируется относительно _текущего рабочего каталога_ " +"процесса. (Этот каталог кратко также называют _текущим каталогом_ или " +"_рабочим каталогом_.) Текущий каталог сам по себе можно обозначить " +"непосредственно по имени _dot_, что соответствует одной точке (`.`). Имя " +"файла _dot-dot_ (`..`) обозначает родительский каталог текущего каталога. " +"Корневой каталог является предком самому себе." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:594 +msgid "" +"A process may set its root directory with the _chroot_ system call, and its " +"current directory with the _chdir_ system call. Any process may do _chdir_ " +"at any time, but _chroot_ is permitted only a process with superuser " +"privileges. _Chroot_ is normally used to set up restricted access to the " +"system." +msgstr "" +"Процесс может задать собственный корневой каталог при помощи системного " +"вызова _chroot_, и установить текущий каталог системным вызовом _chdir_. " +"Каждый процесс может в любой момент выполнить вызов _chdir_, но _chroot_ " +"позволено выполнять только процессу с административными привилегиями. " +"_Chroot_ обычно используется для ограничения доступа к системе." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:596 +msgid "" +"Using the filesystem shown in Fig. 2.2, if a process has the root of the " +"filesystem as its root directory, and has `/usr` as its current directory, " +"it can refer to the file `vi` either from the root with the absolute " +"pathname `/usr/bin/vi`, or from its current directory with the relative " +"pathname `bin/vi`." +msgstr "" +"Взяв файловую систему, изображенную на Рисунке 2.2, и полагая, что процесс " +"имеет в качестве корневого каталога корневой каталог файловой системы, и в " +"качестве текущего каталога [.filename]#/usr#, он может обратиться к файлу " +"[.filename]#vi# либо от корня по абсолютному имени [.filename]#/usr/bin/vi#, " +"либо из текущего каталога с относительным именем [.filename]#bin/vi#." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:602 +msgid "" +"System utilities and databases are kept in certain well-known directories. " +"Part of the well-defined hierarchy includes a directory that contains the " +"_home directory_ for each user -- for example, `/usr/staff/mckusick` and `/" +"usr/staff/karels` in Fig. 2.2. When users log in, the current working " +"directory of their shell is set to the home directory. Within their home " +"directories, users can create directories as easily as they can regular " +"files. Thus, a user can build arbitrarily complex subhierarchies." +msgstr "" +"Системные утилиты и базы данных располагаются в нескольких всем известных " +"каталогах. Частью предопределенной иерархии является каталог, содержащий " +"_домашний каталог_ для каждого пользователя - например, [.filename]#/usr/" +"staff/mckusick# и [.filename]#/usr/staff/karels# на Рисунке 2.2. Когда " +"пользователи регистрируются в системе, то рабочий каталог их командного " +"процессора устанавливается в домашний каталог. В своих домашних каталогах " +"пользователи могут создавать каталоги так же легко, как и обычные файлы. " +"Таким образом, пользователь может строить иерархии каталогов произвольной " +"сложности." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:609 +msgid "" +"The user usually knows of only one filesystem, but the system may know that " +"this one virtual filesystem is really composed of several physical " +"filesystems, each on a different device. A physical filesystem may not span " +"multiple hardware devices. Since most physical disk devices are divided " +"into several logical devices, there may be more than one filesystem per " +"physical device, but there will be no more than one per logical device. One " +"filesystem -- the filesystem that anchors all absolute pathnames -- is " +"called the _root filesystem_, and is always available. Others may be " +"mounted; that is, they may be integrated into the directory hierarchy of the " +"root filesystem. References to a directory that has a filesystem mounted on " +"it are converted transparently by the kernel into references to the root " +"directory of the mounted filesystem." +msgstr "" +"Пользователь обычно знает только об одной файловой системе, но система может " +"знать, что одна виртуальная файловая система на самом деле состоит из " +"нескольких физических файловых систем, каждая из которых расположена на " +"отдельном устройстве. Физическая файловая система не может располагаться на " +"нескольких физических устройствах. Так как большинство физических дисковых " +"устройств разбиваются на несколько логических устройств, то на одном " +"физическом устройстве может располагаться более одной файловой системы, но " +"не более одной для каждого логического устройства. Одна из файловых систем - " +"та, с которой начинаются все абсолютные имена - называется _корневой " +"файловой системой_, и она всегда доступна. Другие файловые системы могут " +"монтироваться; это значит, что они могут интегрироваться в иерархию " +"каталогов корневой файловой системы. Ссылки на каталог, в котором находится " +"смонтированная в него файловая системе, прозрачно преобразуются ядром в " +"ссылки на корневой каталог смонтированной файловой системы." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:614 +msgid "" +"The _link_ system call takes the name of an existing file and another name " +"to create for that file. After a successful _link_, the file can be " +"accessed by either filename. A filename can be removed with the _unlink_ " +"system call. When the final name for a file is removed (and the final " +"process that has the file open closes it), the file is deleted." +msgstr "" +"Системный вызов _link_ в качестве параметров принимает имя существующего " +"файла и новое имя, которое будет присвоено файлу. После успешного выполнения " +"вызова _link_, файл может быть доступен по любому из имен. Имя файла может " +"быть удалено при помощи системного вызова _unlink_. Когда удаляется " +"последнее имя для файла (и последний процесс, который держал файл открытым, " +"закрыл его), удаляется и сам файл." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:621 +msgid "" +"Files are organized hierarchically in _directories_. A directory is a type " +"of file, but, in contrast to regular files, a directory has a structure " +"imposed on it by the system. A process can read a directory as it would an " +"ordinary file, but only the kernel is permitted to modify a directory. " +"Directories are created by the _mkdir_ system call and are removed by the " +"_rmdir_ system call. Before 4.2BSD, the _mkdir_ and _rmdir_ system calls " +"were implemented by a series of _link_ and _unlink_ system calls being " +"done. There were three reasons for adding systems calls explicitly to " +"create and delete directories:" +msgstr "" +"Файлы организованы иерархически в _каталоги_. Каталог является типом файла, " +"но, в отличие от обычных файлов, каталог имеет структуру, определяемую " +"системой. Процесс может читать каталог, как будто это обычный файл, но " +"только ядру разрешено изменять каталог. Каталоги создаются системным вызовом " +"_mkdir_ и удаляются системным вызовом _rmdir_. До 4.2BSD системные вызовы " +"_mkdir_ и _rmdir_ были реализованы как последовательность системных вызовов " +"_link_ и _unlink_. Имелось три причины для добавления системных вызовов " +"специально для создания и удаления каталогов:" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:624 +msgid "" +"The operation could be made atomic. If the system crashed, the directory " +"would not be left half-constructed, as could happen when a series of link " +"operations were used." +msgstr "" +"Операция может быть сделана атомарной. Если система завершила работу " +"аварийно, то каталог не может оставаться в промежуточном состоянии, что " +"может случиться при последовательном вызове серии операций." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:625 +msgid "" +"When a networked filesystem is being run, the creation and deletion of files " +"and directories need to be specified atomically so that they can be " +"serialized." +msgstr "" +"При работе сетевой файловой системы создание и удаление файлов и каталогов " +"должны выполняться атомарно, чтобы могли выполняться последовательно." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:626 +msgid "" +"When supporting non-UNIX filesystems, such as an MS-DOS filesystem, on " +"another partition of the disk, the other filesystem may not support link " +"operations. Although other filesystems might support the concept of " +"directories, they probably would not create and delete the directories with " +"links, as the UNIX filesystem does. Consequently, they could create and " +"delete directories only if explicit directory create and delete requests " +"were presented." +msgstr "" +"При реализации поддержки не-UNIX файловых систем, таких, как файловая " +"система MS-DOS, на другом разделе диска, может оказаться, что эта файловая " +"система не поддерживает ссылочных операций. Хотя другие файловые системы " +"могут поддерживать концепцию каталогов, скорее всего, они не будут создавать " +"и удалять каталоги со ссылками, как это делается в файловой системе UNIX. " +"Соответственно они могут создавать и и удалять каталоги только при наличии " +"явных запросов на удаление или создание каталогов." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:633 +msgid "" +"The _chown_ system call sets the owner and group of a file, and _chmod_ " +"changes protection attributes. _Stat_ applied to a filename can be used to " +"read back such properties of a file. The _fchown_, _fchmod_, and _fstat_ " +"system calls are applied to a descriptor, instead of to a filename, to do " +"the same set of operations. The _rename_ system call can be used to give a " +"file a new name in the filesystem, replacing one of the file's old names. " +"Like the directory-creation and directory-deletion operations, the _rename_ " +"system call was added to 4.2BSD to provide atomicity to name changes in the " +"local filesystem. Later, it proved useful explicitly to export renaming " +"operations to foreign filesystems and over the network." +msgstr "" +"Системный вызов _chown_ устанавливает владельца и группу файла, а _chmod_ " +"изменяет атрибуты защиты. Вызов _stat_, примененный к имени файла, может " +"использоваться для чтения этих свойств файла. Системные вызовы _fchown_, " +"_fchmod_ и _fstat_ применяются с дескрипторами, а не с именами файлов, для " +"выполнения того же самого набора операций. Системный вызов _rename_ может " +"использоваться для присвоения файлу нового имени в файловой системе с " +"заменой старого имени файла. Как и операции по созданию и удалению " +"каталогов, системный вызов _rename_ был добавлен в 4.2BSD для придания " +"атомарности изменению имен в локальной файловой системе. Позже он оправдал " +"свою исключительную полезность для экспортирования операций по " +"переименованию в сторонних файловых системах и по сети." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:638 +msgid "" +"The _truncate_ system call was added to 4.2BSD to allow files to be " +"shortened to an arbitrary offset. The call was added primarily in support " +"of the Fortran run-time library, which has the semantics such that the end " +"of a random-access file is set to be wherever the program most recently " +"accessed that file. Without the _truncate_ system call, the only way to " +"shorten a file was to copy the part that was desired to a new file, to " +"delete the old file, then to rename the copy to the original name. As well " +"as this algorithm being slow, the library could potentially fail on a full " +"filesystem." +msgstr "" +"Системный вызов _truncate_ был добавлен в 4.2BSD для того, чтобы файлы могли " +"обрезаться по указанному смещению. Вызов был добавлен первоначально для " +"поддержки библиотеки времени выполнения языка Fortran, в котором применялось " +"понятие конца файла с произвольным доступом, который мог устанавливаться в " +"любую позицию, в которой был последний раз доступ к файлу. Без системного " +"вызова _truncate_ единственным способом обрезать файл было копирование " +"нужной части в новый файл, удаление старого и переименование копии в " +"первоначальное имя. Библиотека могла теоретически отказываться работать на " +"заполненной файловой системе, к тому же такой алгоритм оказывался медленным." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:641 +msgid "" +"Once the filesystem had the ability to shorten files, the kernel took " +"advantage of that ability to shorten large empty directories. The advantage " +"of shortening empty directories is that it reduces the time spent in the " +"kernel searching them when names are being created or deleted." +msgstr "" +"После того, как файловая система получила возможность обрезать файлы, ядро " +"применяло эту возможность для уменьшения больших пустых каталогов. " +"Преимущество в уменьшении пустых каталогов заключается в сокращении времени " +"ядра на поиск в них при создании или удалении имен." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:645 +msgid "" +"Newly created files are assigned the user identifier of the process that " +"created them and the group identifier of the directory in which they were " +"created. A three-level access-control mechanism is provided for the " +"protection of files. These three levels specify the accessibility of a file " +"to" +msgstr "" +"Вновь создаваемым файлам присваивается идентификатор пользователя процесса, " +"который их создал, и идентификатор группы каталога, в котором они были " +"созданы. Для защиты файлов применяется трехуровневый механизм управления " +"доступом. Эти три уровня определяют доступность файла для" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:648 +msgid "The user who owns the file" +msgstr "Пользователя, который является владельцем файла" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:649 +msgid "The group that owns the file" +msgstr "Группы, которая приписана файлу" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:650 +msgid "Everyone else" +msgstr "Всех остальных" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:652 +msgid "" +"Each level of access has separate indicators for read permission, write " +"permission, and execute permission." +msgstr "" +"Каждый уровень доступа имеет отдельные индикаторы прав для чтения, записи и " +"выполнения." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:662 +msgid "" +"Files are created with zero length, and may grow when they are written. " +"While a file is open, the system maintains a pointer into the file " +"indicating the current location in the file associated with the descriptor. " +"This pointer can be moved about in the file in a random-access fashion. " +"Processes sharing a file descriptor through a _fork_ or _dup_ system call " +"share the current location pointer. Descriptors created by separate _open_ " +"system calls have separate current location pointers. Files may have " +"_holes_ in them. Holes are void areas in the linear extent of the file " +"where data have never been written. A process can create these holes by " +"positioning the pointer past the current end-of-file and writing. When " +"read, holes are treated by the system as zero-valued bytes." +msgstr "" +"Файлы создаются с нулевым размером, который может увеличиться при выполнении " +"операций записи. Пока файл открыт, система отслеживает указатель на файл, " +"соответствующий текущему положению в файле, связанном с дескриптором. Этот " +"указатель может перемешаться по файлу в произвольном порядке. Процессы, " +"использующие один и тот же дескриптор файла посредством системных вызовов " +"_fork_ или _dup_, используют одновременно один и тот же указатель текущей " +"позиции. Дескрипторы, созданные различными системными вызовами _open_, имеют " +"различные указатели текущей позиции. В файлах могут присутствовать _дыры_. " +"Дыры представляют собой пустые пространства в теле файла, в которые никаких " +"данных не записывалось. Процесс может создать такие дыры, перемещая " +"указатель за текущий конец файла и производя запись. При чтении дыры " +"интерпретируются системой как заполненные нулевыми байтами." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:668 +msgid "" +"Earlier UNIX systems had a limit of 14 characters per filename component. " +"This limitation was often a problem. For example, in addition to the " +"natural desire of users to give files long descriptive names, a common way " +"of forming filenames is as `basename.extension`, where the extension " +"(indicating the kind of file, such as `.c` for C source or `.o` for " +"intermediate binary object) is one to three characters, leaving 10 to 12 " +"characters for the basename. Source-code-control systems and editors " +"usually take up another two characters, either as a prefix or a suffix, for " +"their purposes, leaving eight to 10 characters. It is easy to use 10 or 12 " +"characters in a single English word as a basename (e.g., `multiplexer`)." +msgstr "" +"Ранние версии UNIX имели ограничение в 14 символов на имя файла. Это " +"ограничение зачастую вызывало проблемы. Например, кроме естественного " +"желания пользователей давать файлам длинные описательные имена, " +"распространенным способом формировать имена файлов является использование " +"формата [.filename]#basename.extension#, где расширение (указывающее на тип " +"файла, скажем, `.c` для исходного года на языке C или `.o` для " +"промежуточного двоичного объекта) имеет длину от одного до трех символов, " +"оставляя от 10 до 12 символов на имя файла. Системы управления исходным " +"кодом и редакторы обычно используют дополнительно два символа для своих " +"целей, для префикса или суффикса имени файла, при этом остается от восьми до " +"10 символов. В качестве имени файла легко использовать от 10 до 12 символов " +"одного английского слова (например, `multiplexer`)." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:673 +msgid "" +"It is possible to keep within these limits, but it is inconvenient or even " +"dangerous, because other UNIX systems accept strings longer than the limit " +"when creating files, but then _truncate_ to the limit. A C language source " +"file named `multiplexer.c` (already 13 characters) might have a source-code-" +"control file with `s.` prepended, producing a filename `s.multiplexer` that " +"is indistinguishable from the source-code-control file for `multiplexer.ms`, " +"a file containing `troff` source for documentation for the C program. The " +"contents of the two original files could easily get confused with no warning " +"from the source-code-control system. Careful coding can detect this " +"problem, but the long filenames first introduced in 4.2BSD practically " +"eliminate it." +msgstr "" +"Можно смириться с этими ограничениями, но это непоследовательно и даже " +"опасно, потому что другие системы UNIX могут работать со строками, " +"превышающими этот лимит, при создании файлов, но затем имя будет _обрезано_. " +"Исходный файл с именем [.filename]#multiplexer.c#, содержащий исходный код " +"на языке C, (уже 13 символов) может иметь соответствующий файл из системы " +"управления исходным кодом с префиксом `s.`, при этом получается имя файла " +"[.filename]#s.multiplexer#, которое не будет отличаться от файла системы " +"управления исходным кодом для файла [.filename]#multiplexer.ms#, содержащего " +"исходный код `troff` для документации программы на языке C. Содержимое двух " +"оригинальных файлов может оказаться перепутанным без каких-либо " +"предупреждений от системы управления исходным кодом. При тщательном " +"кодировании эту проблему можно обнаружить, но поддержка длинных имен файлов, " +"впервые появившаяся в 4.2BSD, практически полностью ликвидировала эту " +"проблему." + +#. type: Title === +#: documentation/content/en/books/design-44bsd/_index.adoc:675 +#, no-wrap +msgid "Filestores" +msgstr "Размещение файлов" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:680 +msgid "" +"The operations defined for local filesystems are divided into two parts. " +"Common to all local filesystems are hierarchical naming, locking, quotas, " +"attribute management, and protection. These features are independent of how " +"the data will be stored. 4.4BSD has a single implementation to provide these " +"semantics." +msgstr "" +"Операции, определенные для локальных файловых систем, делятся на две " +"категории. Общими для всех локальных систем являются иерархический принцип " +"именования, блокировка, квоты, управление атрибутами и защита. Эти механизмы " +"не зависят от того, как хранятся данные. В 4.4BSD имеется единая реализация " +"для предоставления этих сервисов." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:683 +msgid "" +"The other part of the local filesystem is the organization and management of " +"the data on the storage media. Laying out the contents of files on the " +"storage media is the responsibility of the filestore. 4.4BSD supports three " +"different filestore layouts:" +msgstr "" +"Другой частью локальной файловой системы является организация и управление " +"данными на носителях информации. Размещение содержимого файлов на носителях " +"является вопросом хранилища файлов. В 4.4BSD поддерживает три различных типа " +"хранилищ файлов:" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:685 +msgid "The traditional Berkeley Fast Filesystem" +msgstr "Традиционная файловая система Berkeley Fast Filesystem" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:687 +msgid "" +"The log-structured filesystem, based on the Sprite operating-system design " +"crossref:design-44bsd[biblio-rosenblum, [Rosenblum & Ousterhout, 1992]]" +msgstr "" +"Журналируемая файловая система, основанная на архитектуре операционной " +"системы Sprite crossref:design-44bsd[biblio-rosenblum, [Rosenblum & " +"Ousterhout, 1992]]" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:688 +msgid "A memory-based filesystem" +msgstr "Файловая система в памяти" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:690 +msgid "" +"Although the organizations of these filestores are completely different, " +"these differences are indistinguishable to the processes using the " +"filestores." +msgstr "" +"Хотя организация этих хранилищ совершенно различна, эти различия скрыты от " +"процессов, использующих файловые системы." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:695 +msgid "" +"The Fast Filesystem organizes data into cylinder groups. Files that are " +"likely to be accessed together, based on their locations in the filesystem " +"hierarchy, are stored in the same cylinder group. Files that are not " +"expected to accessed together are moved into different cylinder groups. " +"Thus, files written at the same time may be placed far apart on the disk." +msgstr "" +"В файловой системе Fast Filesystem организует данные в группы дорожек. " +"Файлы, к которым, скорее всего, будет осуществляться доступ одновременно (на " +"основе их расположения в иерархии файловой системы), хранятся на одной и той " +"же группе дорожек. Файлы, к которым не предполагается одновременный доступ, " +"перемещаются на разные группы дорожек. Таким образом, файлы, записываемые в " +"одно и то же время, могут располагаться в абсолютно разных областях диска." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:700 +msgid "" +"The log-structured filesystem organizes data as a log. All data being " +"written at any point in time are gathered together, and are written at the " +"same disk location. Data are never overwritten; instead, a new copy of the " +"file is written that replaces the old one. The old files are reclaimed by a " +"garbage-collection process that runs when the filesystem becomes full and " +"additional free space is needed." +msgstr "" +"Файловая система с журнальной организацией организует данные в виде журнала. " +"Все данные, записываемые в некоторый момент времени, собираются вместе и " +"записываются в одно и то же место диска. Данные никогда не перезаписываются; " +"вместо этого записывается новая копия файла, которая заменяет старую. Старые " +"файлы уничтожаются процессом-сборщиком мусора, который запускается, когда " +"файловая система переполняется и появляется необходимость в свободном " +"пространстве." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:704 +msgid "" +"The memory-based filesystem is designed to store data in virtual memory. It " +"is used for filesystems that need to support fast but temporary data, such " +"as `/tmp`. The goal of the memory-based filesystem is to keep the storage " +"packed as compactly as possible to minimize the usage of virtual-memory " +"resources." +msgstr "" +"Файловая система в памяти предназначена для хранения данных в виртуальной " +"памяти. Она используется для файловых систем, в которых должны храниться " +"временные данные с обеспечением быстрого доступа к ним, к примеру, " +"[.filename]#/tmp#. При организации файловой системы в памяти преследуется " +"цель организовать максимально компактное хранение данных для минимизации " +"использования ресурсов виртуальной памяти." + +#. type: Title === +#: documentation/content/en/books/design-44bsd/_index.adoc:706 +#, no-wrap +msgid "Network Filesystem" +msgstr "Сетевая файловая система" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:712 +msgid "" +"Initially, networking was used to transfer data from one machine to " +"another. Later, it evolved to allowing users to log in remotely to another " +"machine. The next logical step was to bring the data to the user, instead " +"of having the user go to the data -- and network filesystems were born. " +"Users working locally do not experience the network delays on each " +"keystroke, so they have a more responsive environment." +msgstr "" +"Изначально сетевые возможности использовались для передачи данных от одной " +"машины к другой. Позже это получило свое развитие в обеспечении подключения " +"пользователей удаленно к другим машинам. Следующим логическим шагом было " +"предоставление данных пользователю, а не приближение пользователя к данным - " +"так родились сетевые файловые системы. Пользователи, работающие локально, не " +"ощущают сетевых задержек при каждом нажатии клавиши, так что они получают " +"более удобное рабочее окружение." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:718 +msgid "" +"Bringing the filesystem to a local machine was among the first of the major " +"client-server applications. The _server_ is the remote machine that exports " +"one or more of its filesystems. The _client_ is the local machine that " +"imports those filesystems. From the local client's point of view, a " +"remotely mounted filesystem appears in the file-tree name space just like " +"any other locally mounted filesystem. Local clients can change into " +"directories on the remote filesystem, and can read, write, and execute " +"binaries within that remote filesystem identically to the way that they can " +"do these operations on a local filesystem." +msgstr "" +"Подключение файловой системы к локальной машине было одним из первых " +"основных клиент-серверных приложений. _Сервер_ является удаленной машиной, " +"которая экспортирует одну или более своих файловых систем. _Клиентом_ " +"является локальная машина, которая импортирует эти файловые системы. С точки " +"зрения локального клиента, смонтированные удаленные файловые системы " +"появляются в пространстве имен дерева файлов, как любая другая локально " +"смонтированная файловая система. Локальные клиенты могут перемещаться в " +"каталоги на удаленной файловой системе, и могут осуществлять чтение, запись " +"и выполнение двоичных файлов на удаленной файловой системе точно так же, как " +"они выполняют эти операции на локальной файловой системе." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:723 +msgid "" +"When the local client does an operation on a remote filesystem, the request " +"is packaged and is sent to the server. The server does the requested " +"operation and returns either the requested information or an error " +"indicating why the request was denied. To get reasonable performance, the " +"client must cache frequently accessed data. The complexity of remote " +"filesystems lies in maintaining cache consistency between the server and its " +"many clients." +msgstr "" +"Когда локальный клиент выполняет операцию на удаленной файловой системе, " +"оформляется и посылается запрос к серверу. Сервер выполняет запрошенную " +"операцию и возвращает либо запрошенную информацию, либо ошибку, почему " +"запрос был отклонен. Для получения удовлетворительной производительности, " +"клиент должен кэшировать данные, к которым доступ осуществляется часто. " +"Сложность удаленных файловых систем отражается на поддержке соответствия " +"между сервером и множеством его клиентов." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:729 +msgid "" +"Although many remote-filesystem protocols have been developed over the " +"years, the most pervasive one in use among UNIX systems is the Network " +"Filesystem (NFS), whose protocol and most widely used implementation were " +"done by Sun Microsystems. The 4.4BSD kernel supports the NFS protocol, " +"although the implementation was done independently from the protocol " +"specification crossref:design-44bsd[biblio-macklem, [Macklem, 1994]]. The " +"NFS protocol is described in Chapter 9." +msgstr "" +"Хотя за эти годы было разработано множество протоколов работы с удаленными " +"файловыми системами, самой распространенной на системах UNIX является " +"сетевая файловая система Network Filesystem (NFS), которая была " +"спроектирована и реализована в Sun Microsystems. Ядро 4.4BSD поддерживает " +"протокол NFS, хотя его реализация была выполнена независимо от спецификаций " +"протокола crossref:design-44bsd[biblio-macklem, [Macklem, 1994]]. Протокол " +"NFS описан в Главе 9." + +#. type: Title === +#: documentation/content/en/books/design-44bsd/_index.adoc:731 +#, no-wrap +msgid "Terminals" +msgstr "Терминалы" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:736 +msgid "" +"Terminals support the standard system I/O operations, as well as a " +"collection of terminal-specific operations to control input-character " +"editing and output delays. At the lowest level are the terminal device " +"drivers that control the hardware terminal ports. Terminal input is handled " +"according to the underlying communication characteristics, such as baud " +"rate, and according to a set of software-controllable parameters, such as " +"parity checking." +msgstr "" +"Терминалы поддерживают стандартные системные операции ввода/вывода, а также " +"набор операций, специфичных для терминалов, для управления редактированием " +"входных символов и задержек вывода. На самом нижнем уровне находятся " +"драйверы терминальных устройств, которые управляют портами аппаратных " +"терминалов. Терминальный ввод обрабатывается согласно низлежащим " +"характеристикам связи, таким, как скорость передачи, и согласно набору " +"программно контролируемых параметров, таких, как контроль четности." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:740 +msgid "" +"Layered above the terminal device drivers are line disciplines that provide " +"various degrees of character processing. The default line discipline is " +"selected when a port is being used for an interactive login. The line " +"discipline is run in _canonical mode_; input is processed to provide " +"standard line-oriented editing functions, and input is presented to a " +"process on a line-by-line basis." +msgstr "" +"Выше уровня драйверов терминальных устройств находятся режимы каналов, " +"которые обеспечивают различные уровни обработки символов. По умолчанию режим " +"работы канала выбирается, когда порт используется для интерактивного входа в " +"систему. Режим работы канала устанавливается в _канонический_; входной поток " +"обрабатывается так, что обеспечиваются стандартные функции, ориентированные " +"на редактирование строк, и он представляется процессу в виде целых строк." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:744 +msgid "" +"Screen editors and programs that communicate with other computers generally " +"run in _noncanonical mode_ (also commonly referred to as _raw mode_ or " +"_character-at-a-time mode_). In this mode, input is passed through to the " +"reading process immediately and without interpretation. All special-" +"character input processing is disabled, no erase or other line editing " +"processing is done, and all characters are passed to the program that is " +"reading from the terminal." +msgstr "" +"Экранные редакторы и программы, которые взаимодействуют с другими машинами, " +"обычно работают в _неканоническом режиме_ (часто называемом _raw-режимом_ " +"или _посимвольным режимом_). В этом режиме входной поток передается в " +"читающий процесс сразу же и без всякой обработки. Выключается вся обработка " +"специальных символов, не выполняется удаление символов и другое " +"редактирование строк, все символы передаются программе, которая выполняет " +"чтение с терминала." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:747 +msgid "" +"It is possible to configure the terminal in thousands of combinations " +"between these two extremes. For example, a screen editor that wanted to " +"receive user interrupts asynchronously might enable the special characters " +"that generate signals and enable output flow control, but otherwise run in " +"noncanonical mode; all other characters would be passed through to the " +"process uninterpreted." +msgstr "" +"Терминал может быть настроен тысячами различных способов, промежуточных " +"между этими двумя. Например, экранный редактор, которому необходимо получать " +"прерывания от пользователя асинхронно, может разрешить использование " +"специальных символов, которые генерируют сигналы и разрешить управление " +"выходным потоком, в противном случае работать в неканоническом режиме; все " +"остальные символы будут передаваться в процесс необработанными." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:749 +msgid "" +"On output, the terminal handler provides simple formatting services, " +"including" +msgstr "" +"Что касается выходного потока, то терминальный обработчик предоставляет " +"простые службы по его форматированию, включая" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:751 +msgid "" +"Converting the line-feed character to the two-character carriage-return-line-" +"feed sequence" +msgstr "" +"Преобразование символа перевода строки на двухсимвольную последовательность " +"из символов возврата каретки и перевода строки" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:752 +msgid "Inserting delays after certain standard control characters" +msgstr "Выдерживание пауз после некоторых стандартных управляющих символов" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:753 +msgid "Expanding tabs" +msgstr "Замещение символов табуляции" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:754 +msgid "" +"Displaying echoed nongraphic ASCII characters as a two-character sequence of " +"the form `^C` (i.e., the ASCII caret character followed by the ASCII " +"character that is the character's value offset from the ASCII `@` character)." +msgstr "" +"Вывод неграфических символов ASCII в виде двухсимвольных последовательностей " +"вида `^C` (другими словами, вывод знака вставки, за которым следует символ, " +"который находится по смещению от символа `@`, соответствующему значению " +"этого символа)." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:756 +msgid "" +"Each of these formatting services can be disabled individually by a process " +"through control requests." +msgstr "" +"Каждый из этих сервисов преобразования может быть независимо выключен " +"процессом при помощи управляющих запросов." + +#. type: Title === +#: documentation/content/en/books/design-44bsd/_index.adoc:758 +#, no-wrap +msgid "Interprocess Communication" +msgstr "Межпроцессное взаимодействие" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:762 +msgid "" +"Interprocess communication in 4.4BSD is organized in _communication " +"domains_. Domains currently supported include the _local domain_, for " +"communication between processes executing on the same machine; the _internet " +"domain_, for communication between processes using the TCP/IP protocol suite " +"(perhaps within the Internet); the ISO/OSI protocol family for communication " +"between sites required to run them; and the _XNS domain_, for communication " +"between processes using the XEROX Network Systems (XNS) protocols." +msgstr "" +"Межпроцессные коммуникации в 4.4BSD организованы в _коммуникационные " +"домены_. К поддерживаемым на данный момент доменам относятся _локальный " +"домен_ для взаимодействия между процессами, выполняющимися на одной и той же " +"машине; _межсетевой домен_ для связи между процессами посредством набора " +"протоколов TCP/IP (возможно, в сети Интернет); семейство протоколов ISO/OSI " +"для взаимодействия между сайтами, которым нужна именно такая связь, и _домен " +"XNS_ для коммуникаций между процессами при помощи протоколов XEROX Network " +"Systems (XNS)." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:766 +msgid "" +"Within a domain, communication takes place between communication endpoints " +"known as _sockets_. As mentioned in Section 2.6, the _socket_ system call " +"creates a socket and returns a descriptor; other IPC system calls are " +"described in Chapter 11. Each socket has a type that defines its " +"communications semantics; these semantics include properties such as " +"reliability, ordering, and prevention of duplication of messages." +msgstr "" +"В пределах домена соединения имеют место между конечными точками связи, " +"также называемыми _сокетами_. Как отмечено в Разделе 2.6, системный вызов " +"_socket_ создает сокет и возвращает дескриптор; другие системные вызовы IPC " +"описаны в Главе 11. Каждый сокет имеет тип, определяющий его " +"коммуникационные свойства; к ним относятся такие характеристики, как " +"надежность, сохранение последовательности передаваемой информации и " +"предупреждение дублирования сообщений." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:770 +msgid "" +"Each socket has associated with it a _communication protocol_. This " +"protocol provides the semantics required by the socket according to the " +"latter's type. Applications may request a specific protocol when creating a " +"socket, or may allow the system to select a protocol that is appropriate for " +"the type of socket being created." +msgstr "" +"с каждым сокетом связан некоторый _коммуникационный протокол_. Этот протокол " +"обеспечивает выполнение операций, требуемых сокету, согласно его типу. " +"Приложения могут задавать нужный протокол при создании сокета или могут " +"разрешить системе выбрать протокол, который соответствует типу создаваемого " +"сокета." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:774 +msgid "" +"Sockets may have addresses bound to them. The form and meaning of socket " +"addresses are dependent on the communication domain in which the socket is " +"created. Binding a name to a socket in the local domain causes a file to be " +"created in the filesystem." +msgstr "" +"Сокеты могут иметь адреса, связанные с ними. Формат и смысл адресов сокетов " +"зависят от коммуникационного домена, в котором был создан сокет. Привязка " +"имени к сокету в локальном домене приводит к созданию файла в файловой " +"системе." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:779 +msgid "" +"Normal data transmitted and received through sockets are untyped. Data-" +"representation issues are the responsibility of libraries built on top of " +"the interprocess-communication facilities. In addition to transporting " +"normal data, communication domains may support the transmission and " +"reception of specially typed data, termed _access rights_. The local " +"domain, for example, uses this facility to pass descriptors between " +"processes." +msgstr "" +"Обычные данные, передаваемые и получаемые при помощи сокетов, не имеют типа. " +"Вопросы представления данных зависят от библиотек, которые находятся на " +"верху коммуникационной подсистемы. Вдобавок к передаче обычных данных, " +"коммуникационные домены могут поддерживать передачу и прием специальных " +"типов данных, которые называются _правами доступа_. Например, локальный " +"домен использует эту возможность для передачи дескрипторов между процессами." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:785 +msgid "" +"Networking implementations on UNIX before 4.2BSD usually worked by " +"overloading the character-device interfaces. One goal of the socket " +"interface was for naive programs to be able to work without change on stream-" +"style connections. Such programs can work only if the _read_ and _write_ " +"systems calls are unchanged. Consequently, the original interfaces were " +"left intact, and were made to work on stream-type sockets. A new interface " +"was added for more complicated sockets, such as those used to send " +"datagrams, with which a destination address must be presented with each " +"_send_ call." +msgstr "" +"До 4.2BSD сетевые реализации в UNIX обычно работали через интерфейсы " +"символьных устройств. Одной из целей создания интерфейса сокетов было " +"обеспечение работы простеньким программам без изменения на потоковых " +"соединениях. Такие программы могут работать, если только не меняются " +"системные вызовы _read_ и _write_. Соответственно, оригинальные интерфейсы " +"не трогались, но были исправлены для работы с потоковыми сокетами. Для более " +"сложных сокетов, таких, как те, что используются для посылки датаграмм и в " +"которых при каждом вызове _send_ должен указываться адрес назначения, был " +"добавлен новый интерфейс." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:790 +msgid "" +"Another benefit is that the new interface is highly portable. Shortly after " +"a test release was available from Berkeley, the socket interface had been " +"ported to System III by a UNIX vendor (although AT&T did not support the " +"socket interface until the release of System V Release 4, deciding instead " +"to use the Eighth Edition stream mechanism). The socket interface was also " +"ported to run in many Ethernet boards by vendors, such as Excelan and " +"Interlan, that were selling into the PC market, where the machines were too " +"small to run networking in the main processor. More recently, the socket " +"interface was used as the basis for Microsoft's Winsock networking interface " +"for Windows." +msgstr "" +"Другим достоинством является то, что новый интерфейс легко переносим. Вскоре " +"после тестового релиза, полученного из Беркли, интерфейс сокетов был " +"перенесен в System III поставщиком UNIX (хотя AT&T не поддерживала интерфейс " +"сокетов до выхода System V Release 4, решив использовать вместо него " +"механизм потоков из Eighth Edition). Интерфейс сокетов был также перенесен " +"для работы на многих адаптерах Ethernet поставщиками, такими, как Excelan и " +"Interlan, который продавался на рынке PC, где компьютеры были слишком " +"слабыми, чтобы обрабатывать сетевой код на основном процессоре. Сравнительно " +"недавно интерфейс сокетов был использован в качестве основы для сетевого " +"интерфейса Winsock от Microsoft для Windows." + +#. type: Title === +#: documentation/content/en/books/design-44bsd/_index.adoc:792 +#, no-wrap +msgid "Network Communication" +msgstr "Сетевые коммуникации" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:797 +msgid "" +"Some of the communication domains supported by the _socket_ IPC mechanism " +"provide access to network protocols. These protocols are implemented as a " +"separate software layer logically below the socket software in the kernel. " +"The kernel provides many ancillary services, such as buffer management, " +"message routing, standardized interfaces to the protocols, and interfaces to " +"the network interface drivers for the use of the various network protocols." +msgstr "" +"Некоторые из коммуникационных доменов, поддерживаемых IPC-механизмом " +"_сокетов_ дают доступ к сетевым протоколам. Эти протоколы реализованы как " +"отдельный программный слой, логически находящийся ниже программного " +"обеспечения сокетов в ядре. Ядро предоставляет много вспомогательных " +"сервисов, таких, как управление буферами, маршрутизация сообщений, " +"стандартные интерфейсы к протоколам и интерфейсы к драйверам сетевых " +"интерфейсов для использования в различных сетевых протоколах." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:806 +msgid "" +"At the time that 4.2BSD was being implemented, there were many networking " +"protocols in use or under development, each with its own strengths and " +"weaknesses. There was no clearly superior protocol or protocol suite. By " +"supporting multiple protocols, 4.2BSD could provide interoperability and " +"resource sharing among the diverse set of machines that was available in the " +"Berkeley environment. Multiple-protocol support also provides for future " +"changes. Today's protocols designed for 10- to 100-Mbit-per-second " +"Ethernets are likely to be inadequate for tomorrow's 1- to 10-Gbit-per-" +"second fiber-optic networks. Consequently, the network-communication layer " +"is designed to support multiple protocols. New protocols are added to the " +"kernel without the support for older protocols being affected. Older " +"applications can continue to operate using the old protocol over the same " +"physical network as is used by newer applications running with a newer " +"network protocol." +msgstr "" +"В те времена, когда разрабатывалась 4.2BSD, использовалось или " +"разрабатывалось много сетевых протоколов, каждый со своими сильными и " +"слабыми сторонами. Не существует единственного подходящего на все случаи " +"жизни протокола или набора протоколов. Поддерживая много протоколов, 4.2BSD " +"может обеспечить взаимодействие и обмен ресурсами между различными машинами, " +"которые были доступны в Беркли. Поддержка многих протоколов необходим также " +"для изменений в будущем. Современные протоколы, разработанные для Ethernet " +"со скоростями работы 10 и 100 Mbit в секунду, вряд ли будут соответствовать " +"для завтрашних оптических сетей пропускной способностью 1 и 10 Gbit в " +"секунду. Поэтому уровень сетевых коммуникаций разработан с учетом поддержки " +"многих протоколов. Новые протоколы добавляются к ядру, не затрагивая " +"поддержку старых протоколов. Старые приложения могут продолжать работать с " +"использованием старых протоколов в той же самой физической сети, что " +"использовалась для новых приложений, работающих с новым сетевым протоколом." + +#. type: Title === +#: documentation/content/en/books/design-44bsd/_index.adoc:808 +#, no-wrap +msgid "Network Implementation" +msgstr "Сетевая реализация" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:815 +msgid "" +"The first protocol suite implemented in 4.2BSD was DARPA's Transmission " +"Control Protocol/Internet Protocol (TCP/IP). The CSRG chose TCP/IP as the " +"first network to incorporate into the socket IPC framework, because a 4.1BSD-" +"based implementation was publicly available from a DARPA-sponsored project " +"at Bolt, Beranek, and Newman (BBN). That was an influential choice: The " +"4.2BSD implementation is the main reason for the extremely widespread use of " +"this protocol suite. Later performance and capability improvements to the " +"TCP/IP implementation have also been widely adopted. The TCP/IP " +"implementation is described in detail in Chapter 13." +msgstr "" +"Первым набором протоколов, реализованным в 4.2BSD, был Transmission Control " +"Protocol/Internet Protocol (TCP/IP) от DARPA. CSRG выбрала TCP/IP в качестве " +"первого для включения в набор протоколов IPC, потому что реализация на " +"основе 4.1 была всем доступна из проекта, спонсируемого DARPA, в Bolt, " +"Beranek и Newman (BBN). Это был выбор, повлиявший на многое: Реализация в " +"4.2BSD стала основной причиной очень широкой распространенности и " +"использования этого набора протоколов. Более поздние усовершенствования " +"производительности и возможностей TCP/IP были также широко приняты. " +"Реализация TCP/IP подробно описана в Главе 13." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:818 +msgid "" +"The release of 4.3BSD added the Xerox Network Systems (XNS) protocol suite, " +"partly building on work done at the University of Maryland and at Cornell " +"University. This suite was needed to connect isolated machines that could " +"not communicate using TCP/IP." +msgstr "" +"В релизе 4.3BSD появился набор протоколов Xerox Network Systems (XNS), " +"частично основанный на работе, выполненной в Университете Мэрилэнда и " +"Университете Корнелла. Этот набор был нужен для объединения отдельных машин, " +"которые не могли работать с протоколом TCP/IP." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:824 +msgid "" +"The release of 4.4BSD added the ISO protocol suite because of the latter's " +"increasing visibility both within and outside the United States. Because of " +"the somewhat different semantics defined for the ISO protocols, some minor " +"changes were required in the socket interface to accommodate these " +"semantics. The changes were made such that they were invisible to clients " +"of other existing protocols. The ISO protocols also required extensive " +"addition to the two-level routing tables provided by the kernel in 4.3BSD. " +"The greatly expanded routing capabilities of 4.4BSD include arbitrary levels " +"of routing with variable-length addresses and network masks." +msgstr "" +"В релиз 4.4BSD был добавлен набор протоколов ISO из-за его все большей " +"распространенности как внутри, так и во вне США. По причине использования в " +"протоколах ISO несколько другого подхода к сети, в интерфейсе сокетов " +"потребовалось сделать некоторые небольшие изменения для реализации этого " +"подхода. Изменения были сделаны так, что они были незаметны для клиентов " +"других существующих протоколов. Протоколы ISO требуют также большой работы с " +"двухуровневыми таблицами маршрутизации, имеющимися в 4.3BSD. К значительно " +"расширенным возможностям по маршрутизации в 4.4BSD относятся раздельные " +"уровни маршрутизации с адресами переменной длины и сетевыми масками." + +#. type: Title === +#: documentation/content/en/books/design-44bsd/_index.adoc:826 +#, no-wrap +msgid "System Operation" +msgstr "Работа системы" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:834 +msgid "" +"Bootstrapping mechanisms are used to start the system running. First, the " +"4.4BSD kernel must be loaded into the main memory of the processor. Once " +"loaded, it must go through an initialization phase to set the hardware into " +"a known state. Next, the kernel must do autoconfiguration, a process that " +"finds and configures the peripherals that are attached to the processor. " +"The system begins running in single-user mode while a start-up script does " +"disk checks and starts the accounting and quota checking. Finally, the " +"start-up script starts the general system services and brings up the system " +"to full multiuser operation." +msgstr "" +"Механизмы начальной загрузки используются для запуска системы. Сначала ядро " +"4.4BSD должно быть загружено в основную память процессора. После загрузки " +"оно должно пройти через фазу инициализации для установки аппаратуры в " +"известное состояние. Затем ядро должно выполнить автоконфигурацию, в " +"процессе которой распознаются и настраиваются периферийные устройства, " +"подключенные к процессору. Система начинает работу в однопользовательском " +"режиме, пока начальный скрипт выполняет проверку дисков и включает подсчет " +"статистики и использования квот. Наконец, начальный скрипт запускает " +"общесистемные службы и переводит систему в полностью многопользовательский " +"режим." + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:838 +msgid "" +"During multiuser operation, processes wait for login requests on the " +"terminal lines and network ports that have been configured for user access. " +"When a login request is detected, a login process is spawned and user " +"validation is done. When the login validation is successful, a login shell " +"is created from which the user can run additional processes." +msgstr "" +"При работе в многопользовательском режиме процессы ждут запросов на вход в " +"систему с терминальных линий и сетевых портов, которые были настроены на " +"вход пользователей. После обнаружения запроса на вход, вызывается процесс " +"входа в систему и выполняется аутентификация пользователя. Если она прошла " +"успешно, запускается начальная оболочка, из которой пользователь может " +"запускать дополнительные процессы." + +#. type: Title == +#: documentation/content/en/books/design-44bsd/_index.adoc:843 +#, no-wrap +msgid "References" +msgstr "Список литературы" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:846 +msgid "" +"[[biblio-accetta]] Accetta et al, 1986 Mach: A New Kernel Foundation for " +"UNIX Development\" M.Accetta R.Baron W.Bolosky D.Golub R.Rashid A.Tevanian " +"M.Young 93-113 USENIX Association Conference Proceedings USENIX Association " +"June 1986" +msgstr "" +"[[biblio-accetta]] Accetta et al, 1986 Mach: A New Kernel Foundation for " +"UNIX Development\" M.Accetta R.Baron W.Bolosky D.Golub R.Rashid A.Tevanian " +"M.Young 93-113 USENIX Association Conference Proceedings USENIX Association " +"June 1986" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:848 +msgid "" +"[[biblio-cheriton]] Cheriton, 1988 The V Distributed System D. R.Cheriton " +"314-333 Comm ACM, 31, 3 March 1988" +msgstr "" +"[[biblio-cheriton]] Cheriton, 1988 The V Distributed System D. R.Cheriton " +"314-333 Comm ACM, 31, 3 March 1988" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:850 +msgid "" +"[[biblio-ewens]] Ewens et al, 1985 Tunis: A Distributed Multiprocessor " +"Operating System P.Ewens D. R.Blythe M.Funkenhauser R. C.Holt 247-254 USENIX " +"Assocation Conference Proceedings USENIX Association June 1985" +msgstr "" +"[[biblio-ewens]] Ewens et al, 1985 Tunis: A Distributed Multiprocessor " +"Operating System P.Ewens D. R.Blythe M.Funkenhauser R. C.Holt 247-254 USENIX " +"Assocation Conference Proceedings USENIX Association June 1985" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:852 +msgid "" +"[[biblio-gingell]] Gingell et al, 1987 Virtual Memory Architecture in SunOS " +"R.Gingell J.Moran W.Shannon 81-94 USENIX Association Conference Proceedings " +"USENIX Association June 1987" +msgstr "" +"[[biblio-gingell]] Gingell et al, 1987 Virtual Memory Architecture in SunOS " +"R.Gingell J.Moran W.Shannon 81-94 USENIX Association Conference Proceedings " +"USENIX Association June 1987" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:854 +msgid "" +"[[biblio-kernighan]] Kernighan & Pike, 1984 The UNIX Programming Environment " +"B. W.Kernighan R.Pike Prentice-Hall Englewood Cliffs NJ 1984" +msgstr "" +"[[biblio-kernighan]] Kernighan & Pike, 1984 The UNIX Programming Environment " +"B. W.Kernighan R.Pike Prentice-Hall Englewood Cliffs NJ 1984" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:856 +msgid "" +"[[biblio-macklem]] Macklem, 1994 The 4.4BSD NFS Implementation R.Macklem " +"6:1-14 4.4BSD System Manager's Manual O'Reilly & Associates, Inc. Sebastopol " +"CA 1994" +msgstr "" +"[[biblio-macklem]] Macklem, 1994 The 4.4BSD NFS Implementation R.Macklem " +"6:1-14 4.4BSD System Manager's Manual O'Reilly & Associates, Inc. Sebastopol " +"CA 1994" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:858 +msgid "" +"[[biblio-mckusick-2]] McKusick & Karels, 1988 Design of a General Purpose " +"Memory Allocator for the 4.3BSD UNIX Kernel M. K.McKusick M. J.Karels " +"295-304 USENIX Assocation Conference Proceedings USENIX Assocation June 1998" +msgstr "" +"[[biblio-mckusick-2]] McKusick & Karels, 1988 Design of a General Purpose " +"Memory Allocator for the 4.3BSD UNIX Kernel M. K.McKusick M. J.Karels " +"295-304 USENIX Assocation Conference Proceedings USENIX Assocation June 1998" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:860 +msgid "" +"[[biblio-mckusick-1]] McKusick et al, 1994 Berkeley Software Architecture " +"Manual, 4.4BSD Edition M. K.McKusick M. J.Karels S. J.Leffler W. N.Joy R. " +"S.Faber 5:1-42 4.4BSD Programmer's Supplementary Documents O'Reilly & " +"Associates, Inc. Sebastopol CA 1994" +msgstr "" +"[[biblio-mckusick-1]] McKusick et al, 1994 Berkeley Software Architecture " +"Manual, 4.4BSD Edition M. K.McKusick M. J.Karels S. J.Leffler W. N.Joy R. " +"S.Faber 5:1-42 4.4BSD Programmer's Supplementary Documents O'Reilly & " +"Associates, Inc. Sebastopol CA 1994" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:862 +msgid "" +"[[biblio-ritchie]] Ritchie, 1988 Early Kernel Design private communication " +"D. M.Ritchie March 1988" +msgstr "" +"[[biblio-ritchie]] Ritchie, 1988 Early Kernel Design private communication " +"D. M.Ritchie March 1988" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:864 +msgid "" +"[[biblio-rosenblum]] Rosenblum & Ousterhout, 1992 The Design and " +"Implementation of a Log-Structured File System M.Rosenblum K.Ousterhout " +"26-52 ACM Transactions on Computer Systems, 10, 1 Association for Computing " +"Machinery February 1992" +msgstr "" +"[[biblio-rosenblum]] Rosenblum & Ousterhout, 1992 The Design and " +"Implementation of a Log-Structured File System M.Rosenblum K.Ousterhout " +"26-52 ACM Transactions on Computer Systems, 10, 1 Association for Computing " +"Machinery February 1992" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:866 +msgid "" +"[[biblio-rozier]] Rozier et al, 1988 Chorus Distributed Operating Systems " +"M.Rozier V.Abrossimov F.Armand I.Boule M.Gien M.Guillemont F.Herrmann " +"C.Kaiser S.Langlois P.Leonard W.Neuhauser 305-370 USENIX Computing Systems, " +"1, 4 Fall 1988" +msgstr "" +"[[biblio-rozier]] Rozier et al, 1988 Chorus Distributed Operating Systems " +"M.Rozier V.Abrossimov F.Armand I.Boule M.Gien M.Guillemont F.Herrmann " +"C.Kaiser S.Langlois P.Leonard W.Neuhauser 305-370 USENIX Computing Systems, " +"1, 4 Fall 1988" + +#. type: Plain text +#: documentation/content/en/books/design-44bsd/_index.adoc:867 +msgid "" +"[[biblio-tevanian]] Tevanian, 1987 Architecture-Independent Virtual Memory " +"Management for Parallel and Distributed Environments: The Mach Approach " +"Technical Report CMU-CS-88-106, A.Tevanian Department of Computer Science, " +"Carnegie-Mellon University Pittsburgh PA December 1987" +msgstr "" +"[[biblio-tevanian]] Tevanian, 1987 Architecture-Independent Virtual Memory " +"Management for Parallel and Distributed Environments: The Mach Approach " +"Technical Report CMU-CS-88-106, A.Tevanian Department of Computer Science, " +"Carnegie-Mellon University Pittsburgh PA December 1987" |