○シェアードバスのアーキテクチャ(4) 今回はDMAの続きを説明したい。さて、大量のデータを移動するにはどうすれば良いか? これには2つの発想の転換が必要だった。 CPUを使わない 従来のI/O命令を使う限り、高速アクセスを行う場合には十分なスピードを得る事が出来ない。前回の例で示したとおり、x86を例に取れば1回の転送あたり最低でも2命令(実際には3〜4命令になるだろう)を要することになるから、CPUを介さずにデータの転送を行わなければならない。 バースト転送 毎回、転送命令→データ転送→転送命令→データ転送→....を繰り返していたら、バスの転送効率はどんなに高くても50%程度ということになる。実際にはコマンドオーバーヘッドやら、転送リクエスト→データ転送開始までのオーバーヘッドなどもあるから、実質10%に満たない事も珍しくない。例えばPCIバスだと32bit/33MHzで、カタロ
BSD/OSのネットワークドライバ概説 Copyright (C) 1998 by Masahiko KIMOTO <kimoto@ohnolab.org> 第一版:1998年7月21日 [1.はじめに] 4.4BSD UNIXのネットワークドライバの構造について概説する。この資料では BSD/OS 3.1を例として用いる。以下とくに断りがない限りBSDという名称は BSD/OSを指すものとする。またネットワークドライバと言った場合、データリ ンク層のドライバを指すものとする。 BSDのネットワークドライバはデバイス依存部とデバイス非依存部に分けるこ とができる。前者はne2000や3c509など、ハードウェアごとに存在する。後者 はEthernetならEthernetで共有される。したがって、新しいEthernetボード用 のドライバを追加する場合は前者のみを実装すれば良い。また、あらた
このドキュメントは、私が daemon news [Dynamic Kernel Linker (KLD) Facility Programming Tutorial [Intro] (Andrew Reiter 氏著)]を学生時代に辞書片手に訳したものです。 誤訳や、そもそも間違って理解している部分が多分に含まれていると思われます。 参考にする場合には必ず原文を併せて読んでください。訳に責任は持ちません。 氏の文章は、私がFreeBSDのドライバの作りを学ぶ上で非常に参考になりました。 Thank you for Andrew Reiter and a precious document. Dynamic Kernel Linker (KLD) Facility Programming Tutorial [Intro] by Andrew Reiter <arr@watson.org>
This chapter provides a brief introduction to writing device drivers for FreeBSD. A device in this context is a term used mostly for hardware-related stuff that belongs to the system, like disks, printers, or a graphics display with its keyboard. A device driver is the software component of the operating system that controls a specific device. There are also so-called pseudo-devices where a device
これは、私が仕事でたまたまやることになった、最初で(多分最後の?)Linux によるデバイス・ドライバ開発の経験から、学んだことを抜粋しています。これを読んだからといってすぐさまドライバが書けるようになるとは思わないでください。ただ、この手の文書はあまり見たことがなかったので、少しはインパクトあるかなあ、ぐらいの軽い気持ちで書きました。 実際のコードや関数仕様書などはお見せできませんが、雰囲気くらいは分かると思います。 カーネルのソースを読む際の参考になれば幸いです。 前提 SCSIについて 開発の必要条件 入門 デバイスドライバに関する一般的な考慮事項 UNIXでのアプリケーション開発に関する一般的な考慮事項 UNIXでのデバイスドライバ開発に関する一般的な考慮事項 ドライバとカーネルのインターフェース プロセス・スケジューリング関連サービス タイマー機能 メモリ操作関連 リソース関連
この ハウツーでは、インテルの x86 プロセッサ上で走るプログラム上の、 ハードウェア I/O ポートのプログラミングと、Linux のユーザモードで短い時間 待ちをおこなうプログラム、などについて述べます。 Table of Contents1. Introduction2. C プログラムから I/O ポートを使う2.1. 普通の方法2.1.1. パーミッション2.1.2. ポートのアクセス2.2. I/O ポートアクセスをする別の方法:/dev/port3. 割り込み (IRQ) と DMA アクセス4. 高い精度のタイミング制御4.1. ディレイ4.1.1. スリープ:sleep() と usleep()4.1.2. nanosleep()4.1.3. ポートI/Oを使ったディレイ4.1.4. アセンブラ命令によるディレイ4.1.5. Pentiumのrdtscについて4.2.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く