---
title: "FreeBSD の先進的な技術について"
sidenav: about
---

= FreeBSD の先進的な技術について

== 先進的な機能を数多く提供する FreeBSD

使うアプリケーションがどんなものでも、 オペレーティングシステムは利用可能なすべての資源を利用すべきです。 FreeBSD の性能、ネットワーク、容易にシステム管理可能なストレージ、 および包括的な文書は、 いかなるコンピュータのポテンシャルをすべて引き出すことを可能にします。

=== 4.4BSD ベースの完全なオペレーティングシステム

FreeBSD は、 カリフォルニア大学バークレー校のコンピュータシステムリサーチグループから公開された *BSD* ソフトウェアに由来しています。 20 年以上にも渡る FreeBSD の開発により、 業界をリードするスケーラビリティ、 ネットワーク性能の改良、管理ツール、ファイルシステム、 およびセキュリティ機能が加えられました。 その結果、 FreeBSD はインターネット上のいたる所で利用されるようになりました。 コアルーター製品のオペレーティングシステム、 ルートネームサーバでの採用、メジャーなウェブサイトのホスティング、そして、 広く使われているデスクトップオペレーティングシステムの基盤としても採用されています。 これは、世界各国から集まった多様なボランティア開発者からなる FreeBSD プロジェクトだからこそ可能になったことです。

*FreeBSD 10.X* では、新しい機能が導入され、 古いツールの多くが新しいバージョンに置き換えられました。

* *bhyve*: 新しい BSD ライセンスの最新のハイパーバイザが FreeBSD のベースシステムにインポートされました。 現在のサポートされているすべての FreeBSD のバージョン、 また grub-bhyve port により OpenBSD および Linux を動作できます。
* *KMS および新しい drm2 ビデオドライバ*: 新しい drm2 ドライバは、Radeon HD 6000 シリーズまでの AMD GPU および Radeon HD 7000 ファミリへの部分的なサポートを提供します。 FreeBSD は、AMD および Intel GPU への Kernel Mode Setting に対応しています。
* *Capsicum がデフォルトで有効になりました。*: Capsicum は、デフォルトカーネルで有効に設定されるようになりました。 これにより、以下のような "ケーパビリティモード" で動作するプログラムのサンドブックス化が可能になりました。
** tcpdump
** dhclient
** hast
** rwhod
** kdump
* *新しいバイナリ Package システム*: FreeBSD は、package 管理システムを大きく改良した pkg を現在使用しています。 このシステムは、複数のリポジトリ、署名のある package、そして、 安全なアップグレードに対応しています。 この改良されたシステムは、 すべてのプラットフォームに対する頻繁に構築が行われている公式の package とともに、 ports ツリーの新しい安定ブランチ (より長い期間のサポートを目的としたブランチ) と結びついています。
* *Unmapped I/O*: 新しく実装された unmapped VMIO バッファのコンセプトは、 バッファを作成したり再利用するためのコストのかかる TLB のシャットダウンの必要性を排除し、 激しい I/O ロードが行われるような大きな SMP コンピュータにおいて、 システムの CPU 時間を最大 25-30% を減らすことができます。

*FreeBSD 9.X* では、 デスクトップおよびセキュリティのサポートに焦点が当てられ、 新しい機能やパフォーマンスの強化が行われました。

* *OpenZFS*: FreeBSD 9.2 から OpenZFS v5000 (Feature Flags) に対応しました。 これには以下の feature flag が含まれています。
** async_destroy
** empty_bpobj
** lz4_compress
+
これにより、バックグラウンドで ZFS destroy の実行が可能になったり、 スナップショットが消費するディスク容量を減らしたり、 より良い圧縮アルゴリズムを使ってデータセットを圧縮できるようになりました。
* *Capsicum ケーパビリティモード*: Capsicum は、 ケーパビリティモデルを用いるサンドボックス対応のための機能のセットです。 ここでケーパビリティはファイルディスクリプタです。 CAPABILITIES および CAPABILITY_MODE の 2 つの新しいカーネルオプションが、 GENERIC カーネルに追加されました。
* *Hhook*: (Helper Hook) および khelp(9) (Kernel Helpers) KPI が実装されました。 カーネルにおけるより一般的な使用に対する pfil(9) フレームワークのスーパーセットが用意されています。 hhook(9) KPI は、 カーネルサブシステムがフックポイントをエクスポートする方法を提供します。 このフックポイントで khelp(9) モジュールは、カーネルを拡張したり新しい機能をフックできます。 khelp(9) KPI は、khelp (9) モジュールを管理するフレームワークを提供します。 khelp(9) モジュールは、間接的に hhook(9) KPI を使って、 フック関数をカーネル内の目的のフックポイントに登録します。 これらにより、ABI を保存する形で、 実行時にカーネルを動的に拡張する構造化された方法を可能にします。
* *Accounting API* が実装されました。これにより、 プロセス毎、jail 毎、そして、 ログインクラス毎にリソース使用量の情報を保持できます。 この機能は、デフォルトでは構築もインストールもされません。 この機能を構築してインストールするには、 カーネルコンフィグレーションファイルで RACCT オプションを指定し、FreeBSD ハンドブックに記載されている方法で、 ベースシステムを再構築してください。
* *Resource-limiting API* が実装されました。 これは RACCT リソース使用量の実装と合わせて動作し、 ルールのセットおよび現在のリソースの使用量をベースにユーザが設定可能な action を定義します。 rctl(8) ユーティリティが追加され、 ユーザランドでルールを管理できます。 デフォルトでは、この機能の構築、インストールはされません。
* *USB* サブシステムは、USB パケットフィルタに対応しました。 これにより、各 USB ホストを経由するパケットをキャプチャできます。 パケットフィルタの構造は、bpf と類似しています。 ユーザランドプログラムの usbdump(8) が追加されました。
* *インフィニバンドへの対応*: OFED (OpenFabrics Enterprise Distribution) バージョン 1.5.3 がベースシステムにインポートされました。
* *TCP/IP network* スタックは、現在プラグイン可能な mod_cc(9) 輻輳制御フレームワークに対応しています。 これにより TCP 輻輳制御アルゴリズムを動的にロード可能なカーネルモジュールとして実装できます。 次のような多くのカーネルモジュールが利用可能です。 CAIA-Hamilton-Delay アルゴリズムのための cc_chd(4)、 CUBIC アルゴリズムのための cc_cubic(4)、 Hamilton-Delay アルゴリズムのための cc_hd(4)、 H-TCP アルゴリズムのための cc_htcp(4)、 NewReno アルゴリズムのための cc_newreno(4)、 そして Vegas アルゴリズムのための cc_vegas(4)。 デフォルトのアルゴリズムは、 新しい sysctl(8) 変数の net.inet.tcp.cc.algorithm で設定可能です。
* *SU+J*: FreeBSD の Fast File System は、 soft updates ジャーナル機能に対応しています。 soft updates を有効にしたファイルシステムにログを導入することで、 意図せずにシャットダウンした場合でも、 バックグラウンド fsck(8) の必要はなくなります。

FreeBSD は他にも素晴らしい機能を持っています。

* *Firewalls:* ベースシステムには、SMP のパフォーマンスが改善された改良版の PF とともに IPFW および IPFilter が用意されています。 IPFW には dummynet も実装されており、 ネットワーク管理者は、遅延、ジッタ、 パケットロスおよびバンド幅の制限といった、 条件の悪いネットワーク条件をシミュレートできます。
* *Jails* は軽量な仮想化の代替です。 プロセスがアクセスできるファイルシステムの名前空間を制限し、 その名前空間に割り当てられたネットワークアドレスに制限します。 Jails は階層構造が可能で、jail の中に jail を構成することが可能です。
* *Linux emulation* は、 Linux バイナリを変更なしに FreeBSD システム上で実行できるように、 システムコールの変換レイヤを提供します。
* *DTrace* は、カーネルおよびアプリケーションのパフォーマンスに関する問題を、 ロードされて実行中であっても、 トレースしてトラブルシューティングするための包括的なフレームワークを提供します。
* *Ports Collection* は、 FreeBSD に簡単にインストールして実行可能な、 23,000 を越えるサードパーティ製アプリケーションのセットです。 ports のアーキテクチャでは、 数多くのアプリケーションでコンパイル時オプションを簡単にカスタマイズできます。
* *Network Virtualization:* コンテナ ("vimage") が実装されました。 これは、FreeBSD カーネルを複数の独立したネットワーク状態を管理できるように拡張します。 Vimage では、 完全な仮想化されたネットワークトポロジを独立に作成することができ、 jail(8) は直接的に完全に仮想化されたネットワークスタックを利用できます。
