--- title: Руководство FreeBSD для разработчиков authors: - author: The FreeBSD Documentation Project copyright: 1995-2020 The FreeBSD Documentation Project trademarks: ["freebsd", "apple", "ibm", "ieee", "intel", "linux", "microsoft", "opengroup", "sun", "general"] isIndex: true --- = Руководство FreeBSD для разработчиков :doctype: book :toc: macro :toclevels: 2 :icons: font :sectnums: :sectnumlevels: 6 :partnums: :source-highlighter: rouge :experimental: :book: true :pdf: false :images-path: books/developers-handbook/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :chapters-path: content/{{% lang %}}/books/developers-handbook/ endif::[] ifdef::backend-pdf,backend-epub3[] :chapters-path: include::../../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] :chapters-path: include::../../../../../shared/asciidoctor.adoc[] endif::[] [.abstract-title] Аннотация Добро пожаловать в руководство FreeBSD для разработчиков. ''' toc::[] [[introduction]] = Введение [[developmentplatform]] == Разработка во FreeBSD Здесь необходимо будет обсудить FreeBSD в качестве платформы для разработки, подход к этому BSD, обзор архитектуры, структура /usr/src, история и так далее. Спасибо вам за выбор FreeBSD в качестве платформы разработки! Надеемся, что она вас не подведет. [[bsdvision]] == Парадигма BSD [[archoverview]] == Обзор архитектуры [[sourcelayout]] == Структура /usr/src Полный исходный код FreeBSD имеется на нашем общедоступном хранилище CVS. Как правило, исходный код устанавливается в каталог [.filename]#/usr/src#, содержащий следующие подкаталоги. [.informaltable] [cols="1,1", frame="none", options="header"] |=== | Каталог | Описание |[.filename]#bin/# |Исходный код файлов из [.filename]#/bin# |[.filename]#contrib/# |Исходный код файлов программного обеспечения, которое предоставлено третьими лицами. |[.filename]#crypto/# |Исходный код DES |[.filename]#etc/# |Исходный код файлов из [.filename]#/etc# |[.filename]#games/# |Исходный код файлов из [.filename]#/usr/games# |[.filename]#gnu/# |Утилиты, подпадающие под условия GNU Public License |[.filename]#include/# |Исходный код файлов из [.filename]#/usr/include# |[.filename]#kerberosIV/# |Исходный код Kerbereros версии IV |[.filename]#kerberos5/# |Исходный код Kerbereros версии 5 |[.filename]#lib/# |Исходный код файлов из [.filename]#/usr/lib# |[.filename]#libexec/# |Исходный код файлов из [.filename]#/usr/libexec# |[.filename]#release/# |Файлы, необходимые для выпуска релиза FreeBSD |[.filename]#sbin/# |Исходный код файлов из [.filename]#/sbin# |[.filename]#secure/# |Исходный код FreeSec |[.filename]#share/# |Исходный код файлов из [.filename]#/sbin# |[.filename]#sys/# |Исходные тексты ядра |[.filename]#tools/# |Инструментальные средства, использемые для обслуживания и тестирования FreeBSD |[.filename]#usr.bin/# |Исходный код файлов из [.filename]#/usr/bin# |[.filename]#usr.sbin/# |Исходный код файлов из [.filename]#/usr/sbin# |=== [[Basics]] = Основы include::{chapters-path}secure/chapter.adoc[leveloffset=+1] [[kernel]] = Ядро [[kernelhistory]] == История ядра Unix Немного истории о ядре Unix/BSD, системных вызовах, как работают процессы, блокировке, планировке задач, нити (ядра), переключение контекста, сигналы, прерывания, модули и так далее. [[memory]] = Память и виртуальная память [[virtualmemory]] == Виртуальная память VM, постраничная подкачка и свопирование, выделение памяти, тестирование ошибок утечки памяти, mmap, vnode и так далее. [[iosystem]] = Система ввода/вывода [[ufs]] == UFS UFS, FFS, Ext2FS, JFS, inodes, buffer cache, labeling, locking, metadata, soft-updates, LFS, portalfs, procfs, vnodes, memory sharing, memory objects, TLBs, caching [[ipc]] = Межпроцессное взаимодействие [[signals]] == Сигналы Сигналы, конвейеры, семафоры, очереди сообщений, совместно используемая память, сокеты, двери [[networking]] = Работа в сети [[sockets]] == Сокеты Сокеты, bpf, IP, TCP, UDP, ICMP, OSI, bridging, firewalling, NAT, коммутация и так далее [[networkfs]] = Сетевые файловые системы [[afs]] == AFS AFS, NFS, SANs etc] [[terminal]] = Работа с терминалами [[syscons]] == Системные консоли Syscons, tty, PCVT, последовательная консоль, хранители экрана и так далее [[sound]] = Звук [[oss]] == OSS OSS, waveforms, etc [[devicedrivers]] = Драйверы устройств [[usb]] == Устройства USB Эта глава расскажет о механизмах, используемых во FreeBSD для написания драйверов для устройств на шине USB. [[newbus]] == NewBus Эта глава расскажет об архитектуре NewBus во FreeBSD. [[architectures]] = Аппаратные платформы [[ia32]] == IA-32 Рассказ об архитектурных особенностях FreeBSD/x86. [[alpha]] == Alpha Рассказ об архитектурных особенностях FreeBSD/alpha. Описание ошибок выравнивания, как их исправлять и как игнорировать. Пример ассемблерного кода для FreeBSD/alpha. [[ia64]] == IA-64 Рассказ об архитектурных особенностях FreeBSD/ia64. [[debuggingpart]] = Отладка [[truss]] == Truss Различные описания того, как отлаживать отдельные компоненты системы при помощи утилит truss, ktrace, gdb, kgdb, etc [[compatibility]] = Обеспечение совместимости [[linux]] == Linux Linux, SVR4 и так далее // Appendices [[appendices]] [bibliography] = Приложения [[COD,1]] [1] Dave A Patterson and John L Hennessy. Copyright(R) 1998 Morgan Kaufmann Publishers, Inc. 1-55860-428-6. Morgan Kaufmann Publishers, Inc. Computer Organization and Design. The Hardware / Software Interface. 1-2. [[APUE, 2]] [2] W. Richard Stevens. Copyright(R) 1993 Addison Wesley Longman, Inc. 0-201-56317-7. Addison Wesley Longman, Inc. Advanced Programming in the Unix Environment. 1-2. [[DIFOS, 3]] [3] Marshall Kirk McKusick and George Neville-Neil. Copyright(R) 2004 Addison-Wesley. 0-201-70245-2. Addison-Wesley. The Design and Implementation of the FreeBSD Operating System. 1-2. [[Phrack, 4]] [4] Aleph One. Phrack 49; "Smashing the Stack for Fun and Profit". [[StackGuard, 5]] [5] Chrispin Cowan, Calton Pu, and Dave Maier. StackGuard; Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks. [[OpenBSD, 6]] [6] Todd Miller and Theo de Raadt. strlcpy and strlcat -- consistent, safe string copy and concatenation.