製品、トピックスやコンテンツ・タイプでフィルターをかける

(0 製品)

(85 トピック)

(0 インダストリー)

(3 種類)

1 - 71 件のうちの 71 件
概要の表示 | 概要の非表示
結果の表示
タイトル none 種類 none 日付 none
次世代 Linux ファイルシステム: NiLFS(2) と exofs
ファイルシステムの分野で革新を続ける Linux は、オペレーティング・システムを問わずに多種多様なファイルシステムをサポートしているだけでなく、最先端のファイルシステム技術を提供しています。そんな Linux に新たに登場してきた 2 つのファイルシステムが、NiLFS(2) というログ構造化ファイルシステムと exofs というオブジェクト・ベースのストレージ・システムです。この記事では、この 2 つの新しいファイルシステムが目指しているもの、そしてそれぞれのファイルシステムがもたらす利点を説明します。
記事 2009/10/31
オープンソースのロボット・ツールキット
ロボットを作るためには、組み込みのファームウェアやハードウェア設計、センサーの選択、コントロール・システムの設計、そして機械設計など、様々な分野でのスキルが必要です。しかしシミュレーション環境を利用すれば、開発に高いコスト (そして時間) をかけなくても、テストや測定、ロボット・アルゴリズムの視覚化などのための仮想的な場を作ることができます。この記事では、Linux 用のオープンソースのロボット技術ツールキットをいくつか紹介し、それらの機能を実際に使ってみながら、皆さんが最適なものを選ぶ際の参考にしたいと思います。
記事 2006/9/05
Linux ハイパーバイザーの徹底調査
最近 Linux に対して行われた革新のなかで最も重要なものの 1 つとして挙げられるのは、Linux がハイパーバイザー (他のオペレーティング・システムのためのオペレーティング・システム) へ変身したことです。この革新により、Linux をコアに使用した多くのハイパーバイザー・ソリューションが登場しています。この記事では、ハイパーバイザーの背後にある概念と、Linux をプラットフォームとして使用する具体的なハイパーバイザーとして KVM と Lguest の 2 つを探ります。
記事 2009/5/31
オペレーティング・システムでもあり、汎用プラットフォームでもある Linux についての考察
Linux はあらゆるところで使われています。小型のものであればスマートフォンから、インターネットの仮想バックボーン、そして大型のものであれば最強のスーパーコンピューターに至るまで、Linux が使われています。これらのプラットフォームに期待される機能の多様さを考えると、これほどまで広範に使われるようになるのは大変なことです。この記事では、Linux がいかに幅広く使用されており、小型機器や大型機器、そしてその中間のあらゆる機器をどれほどサポートしているかを説明します。
記事 2012/4/12
Twitter Storm でビッグ・データをリアルタイムに処理する
Storm は、オープンソースのビッグ・データ処理システムです。Storm はリアルタイム分散処理を対象としている点、そして言語に依存しないという点で、他のビッグ・データ処理システムとは異なります。Twitter の Storm とそのアーキテクチャー、そしてさまざまなバッチ処理ソリューションおよびストリーム・プロセッシング・ソリューションについて学んでください。
記事 2014/3/13
Linux 動的ライブラリーの徹底調査
動的にリンクされる共有ライブラリーは、GNU/Linux の重要な側面です。なぜなら、実行可能プログラムが実行時にこれらのライブラリーを使って動的に外部機能にアクセスすることによって、メモリーの全体的なフットプリントを縮小できるからです (つまり、必要に応じて機能を取り込むという手段です)。この記事では、動的ライブラリーの作成および使用プロセスを調査し、動的ライブラリーを利用する各種ツールの詳細を説明するとともに、これらのライブラリーが内部ではどのように機能しているのかを探ります。
記事 2008/8/20
Linux カーネルのなかに入り込む GCC
Linux カーネルは GCC (GNU Compiler Collection) スイートの特殊な機能を使用します。これらの機能は、ショートカットを提供したり単純化を実現したりするものから、コンパイラーに最適化のヒントを提供するものまでさまざまです。この記事では特殊な GCC 機能のいくつかを取り上げ、Linux カーネルでその機能をどのように活用するかを説明します。
記事 2008/11/18
Linux システム・コールを使用したカーネル・コマンド
Linux システム・コールは私たちが毎日使っているものですが、システム・コールはどのようにしてユーザー空間からカーネスに対して行われるかをご存知ですか。そこで、この記事では Linux システム・コール・インターフェース (SCI) の詳細を説明します。新しいシステム・コールを追加する方法 (そしてその代わりとなる手段)、そして SCI 関連のユーティリティーについて学んでください。[この記事は、カーネル 2.6.18 およびそれ以降に対応するようにコードの内容が変更されています (編集者より)]
記事 2010/2/10
Bochs によるプラットフォームのエミュレーション
Bochs は QEMU と同じようにポーティング可能なエミュレーターです。Bochs では、エミュレートされたプラットフォームを使用して、あるオペレーティング・システムを別のオペレーティング・システムのコンテキストで実行するための仮想化環境を提供します。Bochs はハイパーバイザーではなく、むしろ PC 対応のエミュレーターであり、レガシー・ソフトウェアの役に立ちます。この記事では、Bochs によるプラットフォームのエミュレーション、そしてハードウェア・エミュレーションの手法について説明します。
記事 2011/1/25
GCC 4 について学ぶ
この 2、3 年の間に、GCC (GNU Compiler Collection) は GCC バージョン 3 からバージョン 4 へと大きな変化を遂げました。GCC 4 には新しい最適化フレームワーク (そして新たな中間コード表現)、新しいターゲットおよび言語サポート、そして新しいさまざまな属性とオプションが備わっています。この記事を読んで、GCC 4 の新たな機能とそれぞれの利点について学んでください。
記事 2008/10/28
Linux ネットワーク・スタックの徹底調査
Linux オペレーティング・システムでとりわけ優れた特徴の 1 つとなっているのは、そのネットワーク・スタックです。当初、BSD スタックの派生的なものだったネットワーク・スタックは、今では明確な一連のインターフェースで整然と編成されています。インターフェースには、共通ソケット層インターフェースやデバイス層といったプロトコルに依存しないインターフェースから、それぞれのネットワーク・プロトコルに固有のインターフェースまであります。この記事では、層という観点から Linux ネットワーク・スタックの構造を説明するとともに、そこに含まれる主要な構造をいくつか取り上げます。
記事 2007/6/27
Linux ファイルシステムの徹底調査
ファイルシステムという点では、Linux はまさにスイス・アーミー・ナイフのようなオペレーティング・システムです。Linux がサポートするファイルシステムは、ジャーナリング・ファイルシステムからクラスター・ファイルシステム、さらには暗号化ファイルシステムに至るまで多数に及びます。そんな Linux は、標準ファイルシステムと非標準型ファイルシステムのどちらを使用するのにも素晴らしいプラットフォームであるだけでなく、ファイルシステムの開発プラットフォームとしてもうってつけです。この記事では、仮想ファイルシステム・スイッチとしても知られる Linux カーネルの仮想ファイルシステム (VFS: Virtual File System) の詳細を掘り下げ、複数のファイルシステムを 1 つに束ねる主要な構造体をいくつか紹介します。
記事 2007/10/30
Linux SCSI サブシステムの徹底調査
SCSI (Small Computer Systems Interface) は多数のデバイス (主にストレージ関連のデバイス) と通信するためのインターフェースおよびプロトコルを定義する標準の集合で、Linux では SCSI サブシステムを提供し、これらのデバイスとの通信を可能にしています。Linux はディスク、CD-ROM ドライバーなどの上位レベルのドライバーを、Fibre Channel や SAS (Serial Attached SCSI) などの物理インターフェースに結び付ける階層化アーキテクチャーの格好の例です。この記事では、Linux の SCSI サブシステムを紹介し、このサブシステムの将来について検討します。
記事 2007/11/14
カーネル・ロギング: API と実装
カーネルの開発では、私たちは深く考えずに printk を使用してロギングを行っていますが、カーネル・ロギングのプロセスと、その基礎となる実装について考えたことはありますか?この記事ではカーネル・ロギングについて、printk でログを作成してユーザー空間のログ・ファイルに挿入するまでのプロセス全体を探ります。
記事 2010/9/30
Sugar と XO ラップトップで、子供たち一人ずつに 1 台のラップトップを
One Laptop per Child (OLPC) は、世界中の子供たちにコンピューター技能を広めるために、ソフトウェアが付属した低コストのラップトップ (USD100) を開発するという使命を掲げた組織です。そのコンピューターの対象は子供たちであるため、今までにないユーザー・インターフェースとアプリケーションを提供して、子供が表現や学習用のツールを試せるようにしなければなりません。OLPC のオペレーティング・システムは Linux カーネルの移植版ですが、Sugar という独特なインターフェースを備えています。この記事では、Sugar ヒューマン・インターフェースの概要、標準的な PC でQEMU を使って OLPC ラップトップを仮想化する方法、そして Sugar と OLPC の機能を紹介します。
記事 2007/4/24
Linux と対称型マルチプロセッシング
代表的な中央演算処理装置 (CPU) ベンダーの数々を見ても明らかなように、マルチコア・プロセッサーがデスクトップ市場と組み込み市場を独占しようとしています。マルチプロセッシングによって確かにパフォーマンスは向上しますが、新たな問題も伴います。この記事ではマルチプロセッシングの背後にある概念、そして SMP を活用する Linux 対応アプリケーションを開発する方法を検討します。
記事 2007/3/14
Linux カーネル仮想マシンを探る
Linux と柔軟性は切り離せないものですが、仮想化のオプションにしてもそれは同じことです。しかし最近では、カーネル仮想マシン (KVM) の登場によって Linux 仮想化の全体像が変わってきています。KVM は主流の Linux カーネル (V2.6.20) に統合される初の仮想化ソリューションです。Linux ゲスト・オペレーティング・システムの仮想化をサポートする KVM は、Windows でさえも仮想化を認識するハードウェアでサポートします。この記事で、Linux KVM のアーキテクチャーについて、そして Linux KVM と Linux カーネルとの統合が Linux の使い方を変えるかもしれない理由について学んでください。
記事 2007/4/18
coLinux による仮想化
最近の仮想化には、VmWare、Xen、そして KVM (Kernel-based Virtual Machine) が盛んに使われていますが、Linux と Microsoft Windows を連携させて実行できることをご存知でしたか? この記事では Cooperative Linux (coLinux) に焦点を当て、仮想化の簡単な紹介から始めて、coLinux による仮想化の手法、そして Windows 上で coLinux を起動して動作させる方法を説明していきます。
記事 2007/3/31
仮想 Linux
仮想化の意味は、人によってさまざまです。目下、仮想化で大きな焦点となっているのは、サーバーの仮想化、つまり複数の独立したオペレーティング・システムを単一のホスト・コンピューターでホストすることです。この記事では、仮想化の背後にある意図を説明した後、仮想化を実装する方法をいくつか取り上げます。さらに、Linux でのオペレーティング・システムの仮想化など、世間に出回っている仮想化技術についても目を向けてみます。
記事 2006/12/29
アプリケーション仮想化の過去と未来
最近では、仮想マシン (VM) という言葉を聞くと、おそらく仮想化やハイパーバイザーを思い浮かべると思いますが、VM は比較的古い抽象化の概念の 1 つに過ぎません。抽象化とは、あるエンティティーから具体性を取り除いて一般的なエンティティーを作成する、よくある方法です。この記事では、最近の数ある新しいオープンソースの VM 技術のなかから、Dalvik (Android オペレーティング・システムの VM コア) と Parrot (動的言語を効率的に実行するためのオープンソース VM 技術) の 2 つについて詳しく探ります。
記事 2011/7/08
Virtual Machine Manager で VM を管理する
この記事では、virt-manager の使用方法、このツールが平均的なハードウェアで発揮する能力、そして実行中の VM のパフォーマンスを管理および監視する方法を詳しく探ります。
記事 2012/11/29
Linux 仮想ファイルシステム・スイッチの徹底調査
Linux が持つ柔軟性と拡張性は、まさに柔軟性と拡張性の定義そのものです。仮想ファイルシステム・スイッチ (VFS) を例に取っても、従来のディスクから USB フラッシュ・ドライブ、そしてメモリーやその他のストレージ・デバイスに至るまで、多種多様なデバイスでファイルシステムを作成することができます。さらに、ファイルシステムを別のファイルシステムのコンテキストに組み込むことさえ可能です。この記事を読んで、何が VFS をそれほど強力にしているのかを知り、その主要なインターフェースとプロセスについて学びましょう。
記事 2009/8/31
Linux と Hadoop による分散コンピューティング
人々は毎日、検索エンジンを使ってインターネット上にあるテラバイトをはるかに超えるデータの中から特定のコンテンツを見つけていますが、皆さんはこの検索が実際にどのように実行されているのかを考えたことがあるでしょうか。その検索を実行する 1 つの方法として、Apache の Hadoop を使用する方法があります。Hadoop は膨大な量のデータを分散操作することができるソフトウェア・フレームワークで、その 1 つの応用として、インターネットの Web ページの索引付けを並列処理するための使い方があります。Hadoop は Apache のプロジェクトであり、Yahoo!、Google、IBM などによってサポートされています。この記事では Hadoop フレームワークを紹介し、Hadoop が Linux ベースの最も重要な分散コンピューティング・フレームワークの 1 つである理由を説明します。
記事 2008/12/09
Hadoop による分散データ処理: 第 2 回 拡張編
この連載の第 1 回では、単一ノードのクラスターで Hadoop を使用する方法を説明しました。今回の記事で説明するのは、それよりも高度な、複数のノードを使って並列処理を行うためのセットアップです。この記事ではマルチノード・クラスターに必要な各種のノード・タイプについて説明した後、並列環境での MapReduce 機能について詳しく説明します。また、Hadoop の管理についても、コマンドラインによる管理と Web ベースの管理の両面で調べます。
記事 2010/6/03
Hadoop による分散データ処理: 第 1 回 導入編
Hadoop に焦点を当てるこの連載の第 1 回の記事では、Hadoop ファイルシステム (HDFS) などの基本要素やよく使われるノード・タイプを含め、Hadoop フレームワークの概要を説明します。さらに、単一ノードの Hadoop クラスターをインストールして構成する方法と、MapReduce アプリケーションの詳細についても見て行きます。そして最後に、Hadoop をそのコアとなる Web インターフェースを使用して監視および管理する方法について説明します。
記事 2010/5/18
Linux スラブ・アロケーターの徹底調査
オペレーティング・システムのパフォーマンスの良し悪しは、オペレーティング・システムがどれだけ効率的にリソースを管理できるかによってある程度決まります。かつてはヒープ・メモリー・マネージャーがメモリー管理の標準でしたが、フラグメント化、それにメモリーを再利用しなければならないということがパフォーマンスの弱点になっていました。現在 Linux カーネルで使用されているのは、メモリーをサイズに応じたオブジェクトとして割り当てるという方法です。元々この方法が生まれたのは Solaris でしたが、だいぶ前から組み込みシステムで使用されています。この記事ではそんなスラブ・アロケーターの背後にある概念を探り、スラブ・アロケーターのインターフェースとその使用方法を検討します。
記事 2007/5/15
Linux ジャーナリング・ファイルシステムの徹底調査
最近まで、ジャーナリング・ファイルシステムは特異なものであり、主にファイルシステムに関する研究という側面から考えられていました。しかし今では、そのジャーナリング・ファイルシステム (ext3) が Linux のデフォルトとなっています。この記事では、ジャーナリング・ファイルシステムの背後にある概念、そしてこのファイルシステムが電源断やシステムのクラッシュにもかかわらず整合性を維持する方法を説明します。現在使用されているさまざまなジャーナリング・ファイルシステムについて学ぶとともに、次世代のジャーナリング・ファイルシステムを覗いてみてください。
記事 2008/6/04
Hadoop による分散データ処理: 第 3 回 アプリケーション開発
xHadoop を単一ノードのアーキテクチャーと複数ノードのアーキテクチャーの両方で構成、インストール、そして使用する方法を習得できていれば、早速、Hadoop インフラストラクチャー内のアプリケーションを開発する作業に取り掛かれます。この連載の最後の記事では、Hadoop の API とデータ・フローについて詳しく探り、その使い方について、マッパー (mapper) とリデューサー (reducer) からなる単純なアプリケーションを例に説明します。
記事 2010/7/14
ext4 の徹底調査
第 4 世代拡張ファイルシステム、ext4 は、その前世代のファイルシステム ext3 との後方互換性を有する次世代のジャーナリング・ファイルシステムです。現時点ではまだ標準になっていませんが、ほとんどの Linux ディストリビューションでは、ext4 が次のデフォルト・ファイルシステムとなる予定です。この記事で ext4 について学び、なぜこれがユーザーお気に入りの新たなファイルシステムになるのかを理解してください。
記事 2009/2/17
Linux におけるソケット機能の向上
この記事では、ソケット API を使用してアプリケーションの機能を最大限に引き出し、GNU/Linux 環境を調整して最適な結果を得るための 4つの方法について見ていきます。この記事で紹介する 4つのヒントを実行すれば、最適なソケット・アプリケーションを最初から設計・開発することができます。
記事 2006/2/03
Linux フラッシュ・ファイルシステムの徹底調査
読者のみなさんは、JFFS (Journaling Flash File System) や YAFFS (Yet Another Flash File System) という言葉は耳にしたことがあると思いますが、ファイルシステムの基礎をフラッシュ・デバイスに置くということが何を意味するのかおわかりでしょうか?この記事では、Linux 向けフラッシュ・ファイルシステムの概要を説明し、基礎となる消耗デバイス (フラッシュ・メモリー) の管理をウェア・レベリングによって行う方法、そして利用できる各種のフラッシュ・ファイルシステムをその基本的設計と併せて紹介します。
記事 2008/5/20
リアルタイム Linux アーキテクチャーの徹底調査
Linux は遅いわけでも効率性に欠けるわけでもありませんが、速いだけでは十分でない場合もあります。速さの代わりに必要となるのは、特定の許容範囲内で所定のスケジュールを確実にこなす能力です。この記事を読んで、仮想化ソリューションによく似た初期のアーキテクチャーから標準 2.6 カーネルに現在用意されているオプションに至るまで、多様なリアルタイム Linux の手法とそれぞれがリアルタイムを実現する仕組みを理解してください。
記事 2008/4/15
Linux カーネルによるユーザー空間のメモリー・アクセス
カーネルとユーザー空間はそれぞれに異なる仮想アドレス空間に存在することから、この 2 つの間でデータを移動する際には特別な考慮が必要な事項があります。この記事では、仮想アドレス空間の背後にある概念、そしてユーザー空間との間でデータを移動するためのカーネル API の詳細を探るとともに、メモリーのマッピングに使用できるその他のマッピング手法についても学びます。
記事 2010/8/11
分散複製型ブロック・デバイス、DRBD による高可用性
Linux カーネル 2.6.33 で、DRBD (Distributed Replicated Block Device) と呼ばれる便利な新しいサービスが導入されました。実行中にネットワーク接続された別のホストにブロック・デバイス全体をミラーリングするこのサービスは、ブロック・データの高可用性クラスターの開発を可能にします。この記事を読んで、DRBD を支える概念と Linux カーネルでの DRBD 実装について学んでください。
記事 2010/8/04
Linux での仮想ネットワーク構築
プラットフォームの仮想化が爆発的に普及しつつあるなか、当然、エンタープライズ・エコシステムの他の部分の仮想化も進んでいます。最近、仮想化が進んできた領域の 1 つとして挙げられるのは、仮想ネットワーク構築の領域です。プラットフォーム仮想化の初期の実装は仮想 NIC を生み出しましたが、現在はさらに多くのネットワークの構成要素が仮想化されるようになっています。例えば、1 台のサーバーまたは複数のサーバーに分散された VM 間の通信をサポートするスイッチもその 1 つです。この記事では、NIC とスイッチの仮想化に焦点を当て、仮想ネットワーク構築の背後にある概念を探ります。
記事 2010/10/27
アプリケーションの並列化で Linux のブートをより高速に行う
Linux について特に開発者たちが持っている一番大きな不満の 1 つは、Linux がブートする際の速度です。Linux は、細かい設定をしなくてもデフォルトでクライアント・デスクトップまたはサーバーとしてすぐに機能する汎用オペレーティング・システムです。このような柔軟性を持つ Linux は幅広い用途に向いてはいるものの、特定の構成に対応するのに最適とは言えません。この記事では、初期化プロセスを並列化するための 2 つのオプションをはじめ、Linux のブート速度を向上するための方法を説明します。また、ブート・プロセスのパフォーマンスをグラフを使って視覚的に表示する方法についても紹介します。
記事 2007/3/06
Linux での同期方式の徹底調査
読者のみなさんは Linux の教育を受けるなかで並行性やクリティカル・セクション、そしてロックについて学んだことと思いますが、これらの概念をカーネル内でどのように使っていますか? この記事ではアトミック演算子、スピンロック、リーダー/ライター・ロック、カーネルのセマフォーを含め、2.6 カーネルで使用できる数々のロック機構について概要を説明します。さらに、安全かつ効率的なカーネルのコードを作成する上で、どこにそれぞれの機構を適用するのが最もふさわしいかを探ります。
記事 2007/10/31
Linux ローダブル・カーネル・モジュールの徹底調査
バージョン 1.2 のカーネルで導入された Linux ローダブル・カーネル・モジュールは、Linux カーネルで最も重要な革新技術の 1 つで、カーネルはローダブル・カーネル・モジュールによって拡張可能かつ動的になります。この記事を読んで、このローダブル・カーネル・モジュールの背後にある概念を知り、この独立したオブジェクトを動的に Linux カーネルに組み込む方法を学んでください。
記事 2008/7/16
進歩する Linux カーネル
人生において、死が訪れたり、税金の支払いをしたりするのが確実であるように、GNU/Linux オペレーティング・システムも確実に進歩しています。そして最近の 2 つのカーネル・リリースも、期待を裏切るものではありません。2.6.28 リリースと 2.6.29 リリースには驚くほど大量の新機能が含まれています (例えば、最先端のエンタープライズ・ストレージ・プロトコル、2 つの新しいファイルシステム、WiMAX ブロードバンド・ネットワークのサポート、ストレージ完全性のチェックなど)。なぜ今アップグレードする必要があるのかを学びましょう。
記事 2009/3/24
IBM BusyBox を使って組み込み Linux システムを単純化する
BusyBox は、多くの標準的な Linux® ユーティリティーを 1 つの実行可能プログラムとして実装したものです。BusyBox には、cat や echo のような単純なユーティリティーの他、grep や find、mount、telnet など、もっと大がかりで複雑なツールも含まれています (ただし、従来のバージョンよりもオプションは少なくなっています)。
記事 2006/8/15
Linux 初期 RAM ディスク (initrd) の概要
Linux® 初期 RAM ディスク (initrd) は、2 段階のブート・プロセスをサポートするためにシステムのブート中にマウントされる一時ルート・ファイル・システムです。initrd には、実際のルート・ファイル・システムをマウントするための各種実行可能ファイルとドライバーが含まれています。実際のルート・ファイル・システムがマウントされると、initrd RAM ディスクはアンマウントされ、そのメモリーが解放されます。
記事 2006/7/31
Linux 対応のデータ可視化ツール
Linux 上でデータをグラフィカルに表示するアプリケーションは、単純な二次元グラフから三次元曲面、そしてサイエンティフィック・グラフィックス・プログラミング、グラフィカル・シミュレーションまで多岐にわたります。幸いにも、可視化ツールには gnuplot、GNU Octave、Scilab、MayaVi、Maxima、OpenDX など、多数のオープン・ソースが揃っています。ツールのそれぞれには利点と欠点があり、対象となるアプリケーションも異なるため、さまざまなオープン・ソース・グラフィカル表示ツールを学んで、そのなかからご使用のアプリケーションに最適なものを選択できるようにしてください。[この記事は OpenDX を追加記載するために更新されています (編集者)。]
記事 2006/11/30
virtio: Linux の I/O 仮想化フレームワーク
Linux カーネルは多様な仮想化方式をサポートしています。このサポートの幅は、仮想化技術の進化、そして新しい仮想化方式の発見 (例えば lguest など) に伴って広がっていくはずです。では、こうした Linux 上で機能する仮想化方式では、どのようにしてベースとなる Linux カーネルを I/O 仮想化に利用しているのでしょうか?その答えは virtio です。すべての仮想化方式で使用されている virtio はハイパーバイザー、そして共通する一連の I/O 仮想化ドライバーを効率的に抽象化してくれます。この記事では virtio を紹介するとともに、近いうちに Linux がハイパーバイザーの選択肢として第一の存在になると思われる理由について説明します。
記事 2010/1/29
Linux プロセス管理の徹底調査
Linux でのユーザー空間プロセスの作成と管理には、UNIX と共通する原則が数多くありますが、それと同時に、Linux ならではの独特な最適化もいくつかあります。この記事では、Linux プロセスのライフサイクルに焦点を当て、ユーザー・プロセスの作成、メモリー管理、スケジューリング、そしてユーザー・プロセスの消滅といったカーネル内部での動作について詳しく説明します。
記事 2008/12/20
ネットワーク・ファイルシステムと Linux
NFS (Network File System) は 1984年から使用されていますが、その進化は今でも止まることなく、分散ファイルシステムの基礎となり続けています。現在 NFS は、(pNFS 拡張によって) ネットワーク全体に分散されたファイルに対するスケーラブルなアクセスを可能にするまでになりました。この記事では、分散ファイルシステムの背後にある概念、特に NFS での最近の進歩について詳しく探ります。
記事 2010/11/10
Guile によるスクリプティング
Scheme はプログラミング言語ですが、Scheme のインタープリターおよびライブラリーである Guile は Scheme を組み込みスクリプト言語に変身させます。そんな Guile は、静的アプリケーションに動的な新しい機能をもたらすには理想的な手段です。Guile の概要を紹介するこの記事で、拡張可能なアプリケーションを構築する Guile の強力な機能を学んでください。
記事 2009/1/20
Linux によるクラウド・コンピューティング
クラウド・コンピューティングとストレージは、物理リソース (プロセッサー、ストレージなど) をインターネットで拡張可能かつ共有可能なリソース (「サービス」としてのコンピューティングとストレージ) に変身させます。この物理リソースのサービスへの変換は、仮想化によって一段とスケーラブルかつ効率的になります。ここで言っている仮想化は新しい概念というわけではなく、サーバーを仮想化して物理システムを共有できるようにするということです。クラウド・コンピューティングでは、ユーザーは実際のリソースがどこにあるのか、そしてリソースがどのように構成されているのかを知らなくても、大量のコンピューティング・リソースやストレージ・リソースにアクセスすることができます。ここで大きな役割を果たすのは、ご想像のとおり Linux です。この記事を読んで、クラウド・コンピューティングについて、そして雲の向こうにどうしてペンギンがいるのか (インターネットの向こうになぜ Linux が必要なのか) を理解してくだい。
記事 2009/2/11
QEMU によるシステムのエミュレーション
QEMU は、PC システム全体を対象としたオープンソースのエミュレーターです。QEMU ではプロセッサーをエミュレートするだけでなく、必要なすべてのサブシステム (ネットワーク用ハードウェアやビデオ・ハードウェアなど) もエミュレートすることができます。さらに、対称型マルチプロセッシング・システム (最大 255 基の CPU) やその他のプロセッサー・アーキテクチャー (ARM、PowerPC など) といった高度なシステムをエミュレートすることも可能です。この記事では、QEMU とそのアーキテクチャーについて探り、Linux ホストでゲスト・オペレーティング・システムをエミュレートする方法を紹介します。
記事 2007/9/25
Linux カーネルの徹底調査
Linux カーネルは大規模で複雑なオペレーティング・システムのコアですが、その大きさのわりには、サブシステムおよび層構造に関してよく整理されています。この記事では Linux カーネルの一般的な構造を調べ、主要なサブシステムとコア・インターフェースを説明します。該当する箇所では、さらに詳しく掘り下げられるように、他の IBM の記事へのリンクも記載しています。
記事 2007/6/06
Linux ソケット・プログラミングの 5 つの落とし穴
Sockets API は、ネットワーキング・アプリケーション開発のためのデファクト・スタンダードな API です。この API はシンプルですが、開発初心者が共通して経験する問題がいくつかあります。この記事では、このような最も一般的な落とし穴を説明して、それらを克服する方法を示します。
記事 2005/9/20
Linux スケジューラーの内側
Linux 2.6 カーネルの最も重要な機能の 1 つが、Ingo Molnar によって実装されたスケジューラーです。このスケジューラーは、動的であり、ロード・バランシングをサポートし、また一定時間内の動作をします・・・つまり O(1) です。Linux 2.6 のスケジューラーの持つ特徴などについて解説します。
記事 2006/6/30
SCTPによるネットワーキングの向上
この記事では、Linux 2.6カーネルのSCTPの主な機能を学び、このプロトコルによるマルチストリーミング機能を実現するサーバーおよびクライアントのソース・コードを見てみます。
記事 2006/2/28
Linux のイントロスペクションと SystemTap
最近のオペレーティング・システムのカーネルには、イントロスペクションの手段が用意されています。イントロスペクションとは、動的にカーネル内部を探査してカーネルの振る舞いを把握する機能のことです。カーネルの振る舞いは、カーネル自体に存在する問題だけでなく、パフォーマンスのボトルネックを示唆する場合もあります。そのためカーネルの振る舞いがわかれば、カーネルを調整あるいは修正して障害が発生するような状況を回避することができます。この記事では、Linux カーネルの動的イントロスペクションを可能にするオープンソースのインフラストラクチャー、SystemTap について学びます。
記事 2009/11/09
Ruby での REST (REpresentational State Transfer) を理解する
REST (REpresentational State Transfer) は、クラウドで急速に共通語となりつつある、分散通信用のアーキテクチャーです。REST は単純ながらも、多数のクラウド・リソースと全体的な構成および管理を表すのに十分な表現力を備えています。Ruby を使用して単純な REST エージェントを一から開発する方法を学んで、その実装と使い方を理解してください。
記事 2012/9/13
Linux カーネル 3.3 と 3.4 の紹介
2012年 3月、Linux カーネルのバージョン 3.3 がリリースされました (続いて 5 月にバージョン 3.4 がリリースされました)。これらのリリースでは、ちょっとした機能の追加やバグ修正が大量に行われたことに加え、いくつかの重要な変更が行われています。例えば、Google Android プロジェクトがマージされたこと、Open vSwitch がマージされたこと、ネットワーク機能に関する何点かの改善がなされたこと (チーミング・ネットワーク・デバイスなど)、ファイルシステム、メモリー管理、仮想化に関してさまざまな更新が行われたことなどが挙げられます。この記事では、バージョン 3.3 と 3.4 で行われた数多くの重要な変更について探り、バージョン 3.5 で予定されている変更についてもチラッと覗いてみましょう。
記事 2012/7/19
演習: Apache Hadoop でログを処理する
監査からエラー管理までの機能をサポートするログは、あらゆるコンピューター・システムに不可欠です。(クラウド環境における場合のように) ログが膨大な大きさになり、ログのソースが増加している今、ログを効率的に処理するスケーラブルなシステムが必要となっています。この演習では、標準的な Linux システムから Apache Hadoop を使用してログを処理する方法を探ります。
記事 2012/6/28
SLURM を使用してスーパーコンピューターのリソース管理を最適化する
アーキテクチャーを進化させて他よりもさらに高い性能を絞り出していくスーパーコンピューター同士の激しい競争は、見ていて興味をそそられます。スーパーコンピューターに関して興味深い点は、いずれのスーパーコンピューターにしても、ある Linux のバージョンを実行していることです。Linux のオープンソース・ジョブ・スケジューラーである SLURM (Simple Linux Utility for Resource Managemen) を使用すれば、アーキテクチャーから最大限の能力を引き出すために、リソースの割り当ておよび監視を最適化することができます (SLURM は、中国のスーパーコンピューター「Tianhe-IA (天河一号A)」や近日完成予定の IBM Sequoia スーパーコンピューターでも使用されています)。この記事を読んで、SLURM の概要、そして SLURM がクラスター内のワークロードをどのように並列化するかを学んでください。
記事 2012/6/21
Apache Pig でデータを処理する
Apache Pig は、Hadoop および MapReduce プラットフォームを使用して大規模な半構造化データ・セットに対してクエリーを実行するための手続き型高級言語です。Pig では分散されたデータ・セットに対して SQL のようなクエリーを使用できるようにすることで、Hadoop を簡単に使用できるようになっています。この記事を読んで Pig の背後にある言語を探り、単純な Hadoop クラスターで Pig を使用する方法を学んでください。
記事 2012/3/29
Spark によるデータ分析とパフォーマンス
Spark は Hadoop に代わる興味深いツールであり、インメモリー・データ処理に重点が置かれています。この記事の演習では、Scala、Spark、そして Spark のチューニング可能なパラメーターを使用した場合のマルチスレッドおよびマルチノードでのパフォーマンスを探ります。
記事 2012/3/15
Hadoop のスケジューリング機能
この記事では、Hadoop のスケジューリング機能について説明し、今日利用できる 2 つのアルゴリズムである、フェア・スケジューリングとキャパシティー・スケジューリングについて詳しく探ります。また、これらのアルゴリズムの調整方法と、これらのアルゴリズムがどのようなシナリオに適しているのかについても説明します。
記事 2012/1/20
Linux におけるシェルの進化
コンピューターで行う日常的なタスクのほとんどには、ポイント・アンド・クリック式のインターフェースで十分ですが、他の環境に勝る Linux の強みをフルに活かすには、GUI の殻を破ってコマンドラインを利用することが結局必要となってきます。利用できるコマンド・シェルには、bash から Korn シェル、C シェル、そして各種の特異なシェルまで、さまざまにあります。この記事を読んでシェルについて学び、自分に最も適したシェルを見つけてください。[注: リスト 2 とリスト 3 に、マイナーな変更を加えました。]
記事 2012/1/20
Ceylon: 本物の進化なのか、それともありふれた新しい言語なのか
コンピューター・サイエンスにおいてプログラミング言語が歩んできた道には、「次なる大物」になるはずだったものの残骸が散らばっています。ある分野に特化した多くの言語がスクリプティング、あるいは専門のアプリケーションで採用されているのは確かですが、C 言語 (およびその派生言語) と Java 言語の代わりとなるのは至難の業です。その一方、Red Hat の Ceylon はこうしたさまざまな言語の特徴を興味深い形で組み合わせ、よく知られた C スタイルの構文を使用しながらも、関数型の有用な特徴とオブジェクト指向をサポートし、さらに簡潔さに重点を置いています。この記事では、Ceylon について詳しく説明するとともに、この未来の VM 言語がエンタープライズ・ソフトウェア開発のなかでその居場所を見つけることができるかどうかを探ります。更新情報: リスト 7 の fail ブロックについて明確にされました (編集者より)。
記事 2011/7/22
組み込みシステムの仮想化
最近の技術関連のニュースは、サーバーとデスクトップの仮想化に関する話題で溢れていますが、その他にも急速に成長している仮想化技術があります。それは、組み込み仮想化です。携帯電話やセキュリティー・カーネル、そして組み込み並列オペレーティング・システムをはじめ、組み込み分野には仮想化に適したアプリケーションがいくつもあります。この記事では、組み込み仮想化という領域について詳しく探り、組み込み仮想化が身近な組み込みシステムになりつつある理由を説明します。
記事 2011/4/19
Linux スケジューラーのシミュレーション
スケジューリングは、Linux カーネルの最も複雑で、最も興味深い側面の 1 つです。シングル・コアのマシンにも、クアッド・コアのサーバーにも適切な振る舞いを提供するスケジューラーを開発するのは簡単なことではありません。けれども幸いなことに、Linux スケジューラー・シミュレーターである LinSched は (スケジューラーのプロトタイプを作成するために) ユーザー空間で Linux スケジューラーをホストしながら、任意のハードウェア・ターゲットをモデル化して各種のトポロジーでスケジューラーを検証します。この記事を読んで、LinSched の概要、そして Linux のスケジューラーを試す方法を学んでください。
記事 2011/2/23
Linux とストレージ・エコシステム
Linux はスイス・アーミー・ナイフのように万能なファイルシステムというだけでなく、デスクトップ向けおよびサーバー向けの多種多様なストレージ技術を備えています。ファイルシステムに限らず、Linux には世界最高レベルの NAS および SAN 技術、データ保護、ストレージ管理、クラウドのサポート、SSD ストレージのサポートが統合されています。Linux ストレージ・エコシステムの概要、そしてサーバー市場で Linux が最も大きなシェアを占めている理由を学んでください。
記事 2011/3/29
Linux の仮想化と PCI パススルー
プロセッサーが進化し、仮想化環境のパフォーマンスが向上していますが、I/O のパフォーマンスはどうなのでしょう。この記事では、I/O パフォーマンスを向上させるための、デバイス (または PCI) パススルーと呼ばれる技術を調べてみましょう。この革新的な技術のおかげで、Intel (VT-d) または AMD (IOMMU) によるハードウェア・サポートを利用して PCI デバイスのパフォーマンスを向上させることができます。
記事 2009/10/13
libvirt 仮想化ライブラリーの徹底調査
libvirt ライブラリーは Linux の仮想化機能の Linux API です。このライブラリーは Xen や KVM などの多種多様なハイパーバイザーだけでなく、QEMU、そして Linux 以外のオペレーティング・システムを対象とした仮想化製品もサポートします。この記事では libvirt について説明するとともに、その使用方法とアーキテクチャーについても詳しく探ります。
記事 2010/1/05
Ceph: Linux のペタバイト規模の分散ファイルシステム
Linux は、スケーラブルなストレージを使ったシステムを始めとし、スケーラブルなコンピューティング分野への進出を続けています。最近では、Linux の優れたファイルシステムの選択肢に Ceph が追加されました。Ceph は、POSIX に準拠しながらも複製機能および耐障害性を統合している分散ファイルシステムです。この記事で Ceph のアーキテクチャーを探り、Ceph が耐障害性を実現し、大量のデータの管理を単純化する仕組みを学んでください。
記事 2010/5/04
Linux カーネル共有メモリーの徹底調査
ハイパーバイザーとしての Linux には数々の革新技術が盛り込まれていますが、なかでも 2.6.32 カーネルで特に興味深い変更内容の 1 つとなっているのが、カーネル共有メモリー (KSM: Kernel Shared Memory) です。KSM により、ハイパーバイザーは重複するメモリー・ページを 1 つに統合し、同時に稼働する仮想マシンの数を増やすことができます。この記事を読んで、KSM の背後にある概念 (ストレージの重複排除など)、その実装、そして KSM の管理方法を学んでください。
記事 2010/4/07
カーネル API: 第 1 回、ユーザー空間のアプリケーションをカーネルから呼び出す
Linux システム・コール・インターフェースでは、ユーザー空間のアプリケーションがカーネルの機能を呼び出すことはできますが、カーネルからユーザー空間のアプリケーションを呼び出すことはできるのでしょうか。この記事ではユーザー・モード・ヘルパー API の詳細を探り、カーネルからユーザー空間のアプリケーションを呼び出して、その出力を操作する方法を説明します。
記事 2010/2/16
Linux カーネル 2.6 Completely Fair Scheduler の内側
タスク・スケジューラーは、あらゆるオペレーティング・システムの中核です。この分野での進化と技術革新を続ける Linux は、カーネル 2.6.23 で CFS (Completely Fair Scheduler) を導入しました。このスケジューラーはランキューに依存する代わりに、赤黒木の実装を使用してタスクを管理します。CFS の背後にある概念とその実装、そして以前の O(1) スケジューラーに勝る利点を学んでください。
記事 2009/12/15
1 - 71 件のうちの 71 件
概要の表示 | 概要の非表示