I'm very pleased to announce the release of our new website and documentation using the new toolchain with Hugo and AsciiDoctor. To get more information about the new toolchain please read the FreeBSD Documentation Project Primer[1], Hugo docs[2] and AsciiDoctor docs[3]. Acknowledgment: Benedict Reuschling <bcr@> Glen Barber <gjb@> Hiroki Sato <hrs@> Li-Wen Hsu <lwhsu@> Sean Chittenden <seanc@> The FreeBSD Foundation [1] https://docs.FreeBSD.org/en/books/fdp-primer/ [2] https://gohugo.io/documentation/ [3] https://docs.asciidoctor.org/home/ Approved by: doceng, core
290 lines
8.9 KiB
Text
290 lines
8.9 KiB
Text
---
|
||
title: Руководство FreeBSD для разработчиков
|
||
authors:
|
||
- author: The FreeBSD Documentation Project
|
||
copyright: 1995-2020 The FreeBSD Documentation Project
|
||
releaseinfo: "$FreeBSD$"
|
||
trademarks: ["freebsd", "apple", "ibm", "ieee", "intel", "linux", "microsoft", "opengroup", "sun", "general"]
|
||
---
|
||
|
||
= Руководство FreeBSD для разработчиков
|
||
:doctype: book
|
||
:toc: macro
|
||
:toclevels: 2
|
||
:icons: font
|
||
:xrefstyle: basic
|
||
:relfileprefix: ../
|
||
:outfilesuffix:
|
||
:sectnums:
|
||
:sectnumlevels: 6
|
||
:partnums:
|
||
:source-highlighter: rouge
|
||
:experimental:
|
||
:skip-front-matter:
|
||
:toc-title: Содержание
|
||
:table-caption: Таблица
|
||
:figure-caption: Рисунок
|
||
:example-caption: Пример
|
||
|
||
ifeval::["{backend}" == "html5"]
|
||
include::shared/mirrors.adoc[]
|
||
include::shared/authors.adoc[]
|
||
include::shared/releases.adoc[]
|
||
include::shared/ru/mailing-lists.adoc[]
|
||
include::shared/ru/teams.adoc[]
|
||
include::shared/ru/urls.adoc[]
|
||
:imagesdir: ../../images/books/developers-handbook/
|
||
:chapters-path: content/ru/books/developers-handbook/
|
||
endif::[]
|
||
|
||
ifeval::["{backend}" == "pdf"]
|
||
include::../../../../shared/mirrors.adoc[]
|
||
include::../../../../shared/authors.adoc[]
|
||
include::../../../../shared/releases.adoc[]
|
||
include::../../../../shared/ru/mailing-lists.adoc[]
|
||
include::../../../../shared/ru/teams.adoc[]
|
||
include::../../../../shared/ru/urls.adoc[]
|
||
:imagesdir: ../../../static/images/books/developers-handbook/
|
||
:chapters-path:
|
||
endif::[]
|
||
|
||
ifeval::["{backend}" == "epub3"]
|
||
include::../../../../shared/mirrors.adoc[]
|
||
include::../../../../shared/authors.adoc[]
|
||
include::../../../../shared/releases.adoc[]
|
||
include::../../../../shared/ru/mailing-lists.adoc[]
|
||
include::../../../../shared/ru/teams.adoc[]
|
||
include::../../../../shared/ru/urls.adoc[]
|
||
:imagesdir: ../../../static/images/books/developers-handbook/
|
||
:chapters-path:
|
||
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.
|