# Руководство FreeBSD для разработчиков

The FreeBSD Documentation Project

                doc@FreeBSD.org

Август 2000
2000
The FreeBSD Documentation Project

&bookinfo.legalnotice;

Добро пожаловать в руководство FreeBSD для разработчиков.

## Введение

### Разработка во FreeBSD

Здесь необходимо будет обсудить FreeBSD в качестве платформы для разработки, подход к этому BSD, обзор архитектуры, структура /usr/src, история и так далее.

Спасибо вам за выбор FreeBSD в качестве платформы разработки! Надеемся, что она вас не подведет.

### Парадигма BSD

### Обзор архитектуры

### Структура /usr/src

Полный исходный код FreeBSD имеется на нашем общедоступном хранилище CVS. Как правило, исходный код устанавливается в каталог `/usr/src`, содержащий следующие подкаталоги.

Каталог | Описание
--- | ---
`bin/` | Исходный код файлов из `/bin`
`contrib/` | Исходный код файлов программного обеспечения, которое предоставлено третьими лицами.
`crypto/` | Исходный код DES
`etc/` | Исходный код файлов из `/etc`
`games/` | Исходный код файлов из `/usr/games`
`gnu/` | Утилиты, подпадающие под условия GNU Public License
`include/` | Исходный код файлов из `/usr/include`
`kerberosIV/` | Исходный код Kerbereros версии IV
`kerberos5/` | Исходный код Kerbereros версии 5
`lib/` | Исходный код файлов из `/usr/lib`
`libexec/` | Исходный код файлов из `/usr/libexec`
`release/` | Файлы, необходимые для выпуска релиза FreeBSD
`sbin/` | Исходный код файлов из `/sbin`
`secure/` | Исходный код FreeSec
`share/` | Исходный код файлов из `/sbin`
`sys/` | Исходные тексты ядра
`tools/` | Инструментальные средства, использемые для обслуживания и тестирования FreeBSD
`usr.bin/` | Исходный код файлов из `/usr/bin`
`usr.sbin/` | Исходный код файлов из `/usr/sbin`

## Основы

&chap.secure;

## Ядро

### История ядра Unix

Немного истории о ядре Unix/BSD, системных вызовах, как работают процессы, блокировке, планировке задач, нити (ядра), переключение контекста, сигналы, прерывания, модули и так далее.

&chap.locking;

## Память и виртуальная память

### Виртуальная память

VM, постраничная подкачка и свопирование, выделение памяти, тестирование ошибок утечки памяти, mmap, vnode и так далее.

## Система ввода/вывода

### UFS

UFS, FFS, Ext2FS, JFS, inodes, buffer cache, labeling, locking, metadata, soft-updates, LFS, portalfs, procfs, vnodes, memory sharing, memory objects, TLBs, caching

## Межпроцессное взаимодействие

### Сигналы

Сигналы, конвейеры, семафоры, очереди сообщений, совместно используемая память, сокеты, двери

## Работа в сети

### Сокеты

Сокеты, bpf, IP, TCP, UDP, ICMP, OSI, bridging, firewalling, NAT, коммутация и так далее

## Сетевые файловые системы

### AFS

AFS, NFS, SANs etc]

## Работа с терминалами

### Системные консоли

Syscons, tty, PCVT, последовательная консоль, хранители экрана и так далее

## Звук

### OSS

OSS, waveforms, etc

## Драйверы устройств

&chap.driverbasics; &chap.pci;

### Устройства USB

Эта глава расскажет о механизмах, используемых во FreeBSD для написания драйверов для устройств на шине USB.

### NewBus

Эта глава расскажет об архитектуре NewBus во FreeBSD.

## Аппаратные платформы

### IA-32

Рассказ об архитектурных особенностях FreeBSD/x86.

### Alpha

Рассказ об архитектурных особенностях FreeBSD/alpha.

Описание ошибок выравнивания, как их исправлять и как игнорировать.

Пример ассемблерного кода для FreeBSD/alpha.

### IA-64

Рассказ об архитектурных особенностях FreeBSD/ia64.

## Отладка

### Truss

Различные описания того, как отлаживать отдельные компоненты системы при помощи утилит truss, ktrace, gdb, kgdb, etc

## Обеспечение совместимости

### Linux

Linux, SVR4 и так далее

## Приложения

Dave
A
Patterson
John
L
Hennessy
1998
Morgan Kaufmann Publishers, Inc.
1-55860-428-6
Morgan Kaufmann Publishers, Inc.

#### Computer Organization and Design

The Hardware / Software Interface
1-2
W.
Richard
Stevens
1993
Addison Wesley Longman, Inc.
0-201-56317-7
Addison Wesley Longman, Inc.

#### Advanced Programming in the Unix Environment

1-2
Marshall
Kirk
McKusick
Keith
Bostic
Michael
J
Karels
John
S
Quarterman
1996
Addison-Wesley Publishing Company, Inc.
0-201-54979-4
Addison-Wesley Publishing Company, Inc.

#### The Design and Implementation of the 4.4 BSD Operating System

1-2
Aleph
One

#### Phrack 49; "Smashing the Stack for Fun and Profit"

Chrispin
Cowan
Calton
Pu
Dave
Maier

#### StackGuard; Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks

Todd
Miller
Theo
de Raadt

#### strlcpy and strlcat -- consistent, safe string copy and concatenation.