目次
Linux デバイス ファイル (デバイス ファイル)
ホームページ 運用・保守 Linuxの運用と保守 Linuxデバイスファイルとは何ですか

Linuxデバイスファイルとは何ですか

Mar 24, 2022 pm 01:08 PM
linux

Linux では、デバイス ファイルはデバイス ドライバーへのインターフェイスであり、アプリケーションが標準入出力システム コールを通じてデバイス ドライバーを使用してデバイスと対話できるようにします。 Linux システムで一般的に使用されるデバイス ファイルには、キャラクタ スペシャル ファイルとブロック スペシャル ファイルの 2 つがあり、これらの違いは、オペレーティング システムとハードウェアによって読み書きされるデータ量にあります。

Linuxデバイスファイルとは何ですか

#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。

Linux デバイス ファイル (デバイス ファイル)

デバイス ファイルの概要

Unix 風の場合操作 システムでは、 デバイス ファイルまたは特殊ファイルはデバイス ドライバーへのインターフェイス であり、ファイル システム内では通常のファイルであるかのように表示されます。 MS-DOS、OS/2、および Microsoft Windows にも特殊なファイルがあります。 これらの特別なファイルにより、アプリケーションは、標準入出力システム コールを通じてデバイス ドライバーを使用してデバイスと対話できるようになります。 標準システム コールを使用すると、多くのプログラミング タスクが簡素化され、デバイスの機能に関係なく、一貫したユーザー空間 I/O メカニズムが有効になります。

デバイス ファイルは通常、標準デバイス (プリンターやシリアル ポートなど) への単純なインターフェイスを提供しますが、これらのデバイス上の特定の一意のリソース (ディスク パーティションなど) にアクセスするために使用することもできます。 。さらに、デバイス ファイルは、データ シンクや乱数ジェネレーターなど、実際のデバイスに関連付けられていないシステム リソースにアクセスするのに役立ちます。

Linuxデバイスファイルとは何ですか図 1 アプリケーション、ブロック ファイル、ドライバー、ハードウェアの関係

Unix 系オペレーティング システムでは、一般的に使用される 2 つのデバイスがあります。ファイルは、キャラクタ スペシャル ファイルおよびブロック スペシャル ファイルと呼ばれます。 これらの違いは、オペレーティング システムとハードウェアによって読み書きされるデータの量です。デバイス特殊ファイルと呼ばれる名前付きパイプとは異なり、名前付きパイプはデバイスに接続されていませんが、通常のファイルでもありません。

一部の Unix 系システムでは、ほとんどのデバイス ファイルは、伝統的に /dev にマウントされている仮想ファイル システムの一部として管理されており、ハードウェアの追加と削除を監視する制御デーモンに関連付けられている可能性があります。ランタイムを実行し、デバイス ファイル システムに対応する変更を加えます。デバイス ファイル システムへの変更がカーネルによって自動的に完了しない場合、制御デーモンは、特別なデバイス要件を処理するためにシステムまたはユーザー空間内のスクリプトを呼び出すことがあります。

FreeBSD および DragonFly BSD 実装では、仮想デバイス ファイル システムに devfs という名前が付けられ、関連するデーモンには devd という名前が付けられています。 Linux では主に udev と呼ばれるユーザー空間実装が使用されますが、さまざまなバリエーションがあります。 Darwin やそれに基づく macOS などのオペレーティング システムは、純粋にカーネル ベースのデバイス ファイル システムを備えています。

chroot プロセス分離をサポートする Solaris コンテナなどの Unix システムでは、通常、各 chroot 環境に独自の /dev が必要です。これらのマウント ポイントはグローバル ファイル システム ツリーに個別に配置されます。ノード上のホスト オペレーティング システム上。ハードウェアの分離は、デバイス ノードの数を /dev の chroot インスタンスに制限することで、chroot 環境によって強制できます (プログラムはハードウェアに接続できず、名前を参照したりアクセスしたりすることもできません。これは Unix ファイルよりも強力なアクセス制御です)システム権限フォーム)。

デバイス ノードは、オペレーティング システム カーネルによって割り当てられたリソースに対応します。 Unix は、これらのリソースをメジャー番号とマイナー番号によって識別し、両方ともノード構造の一部として保存されます。これらの番号の割り当ては、オペレーティング システムやコンピュータ プラットフォームごとに独自に行われます。通常、メジャー番号はデバイス ドライバーを識別し、マイナー番号はドライバーが (おそらく多くのデバイスにわたって) 制御する特定のデバイスを識別します。この場合、システムはマイナー番号をドライバーに渡すことがあります。ただし、動的に割り当てられる番号の場合、これは当てはまらない場合があります (例: FreeBSD 5 以降)。

他の特殊なファイル タイプと同様、コンピュータ システムは標準システム コールを使用してデバイス ノードにアクセスし、それらを通常のコンピュータ ファイルとして扱います。デバイス ファイルには 2 つの標準タイプがありますが、残念ながら、歴史的な理由により、それらの名前は直観に反しているため、2 つの違いを説明するのは間違っていることがよくあります。

#ブロック ファイルの分類

キャラクター デバイス (キャラクター デバイス)

##キャラクター特殊ファイルまたはキャラクター デバイスは、ハードウェア デバイスへのバッファなしの直接アクセスを提供します。これらは、必ずしもプログラムが一度に 1 文字の読み取りまたは書き込みを許可するわけではありません。これは、対象のデバイスによって異なります。たとえば、ハードディスクのキャラクタ デバイスでは、通常、すべての読み取りおよび書き込み操作がブロック境界に合わせて調整される必要があり、個々のバイト読み取りは決して許可されません。

キャラクタ デバイスは、ブロックベースのハードウェア上のキャラクタ デバイスが通常、位置合わせされたブロックの読み取りおよび書き込みを行うプログラムを必要とするという事実に関連する混乱を避けるために、raw デバイスと呼ばれることもあります。

ブロック デバイス (ブロック デバイス)

ブロック特殊ファイルまたはブロック デバイスは、ハードウェア デバイスへのバッファされたアクセスを提供します。いくつかの抽象的な詳細を提供します。キャラクタ デバイスとは異なり、ブロック デバイスでは、プログラマは常に、任意のサイズ (単一の文字/バイトを含む) および任意の配置のブロックの読み取りまたは書き込みを許可します。欠点は、ブロック デバイスはバッファリングされているため、書き込みデータがカーネルのバッファから実際のデバイスに渡されるまでにどれくらい時間がかかるか、あるいは実際に 2 つの別々の書き込みがどのような順序で物理デバイスに到着するかがプログラマには分からないことです。 ?さらに、同じハードウェアがキャラクタ デバイスとブロック デバイスを公開する場合、キャラクタ デバイスを使用するクライアントがブロック デバイスのバッファ内で行われた変更を認識しないため、データが破損するリスクがあります。

擬似デバイス擬似デバイス

Unix 系システム上のデバイス ノードは、必ずしも物理デバイスと同様に対応。この対応関係を持たないノードは、一連の疑似デバイスを形成します。これらは、オペレーティング システムによって処理されるさまざまな機能を提供します。最も一般的に使用される (キャラクターベースの) 擬似デバイスには次のものがあります。

/ dev / null - 接受并放弃所有输入; 不产生输出(总是在读取时返回文件结束指示)
/ dev / zero - 接受并放弃所有输入; 产生连续的NUL(零值)字节流
/ dev / full - 读取时会产生连续的NUL(零值)字节流,并在写入时返回“磁盘已满”消息
/ dev / random和/ dev / urandom - 它们产生一个可变长度的伪随机数字流。
ログイン後にコピー

ノードが作成されました

ノードが作成されましたmknod システムによって create を呼び出します。ノードの作成に使用されるコマンド ライン プログラムは、mknod とも呼ばれます。通常のファイル システム呼び出し (名前変更、リンク解除) とコマンド (mv、rm) により、ノードを移動または削除できます。デバイス ノードをコピーするときにオプション -R または -a を渡すと、cp -l コマンドは元のデバイス ノードと同じプロパティを持つ新しいデバイス ノードを作成します。

一部の Unix バージョンには、必要なすべてのデバイスをディレクトリ /dev に作成する makedev または MAKEDEV というスクリプトが含まれています。これは、デバイスにメジャー番号が静的に割り当てられているシステム (カーネル モジュールにハードコーディングするなど) でのみ意味を持ちます。

ブロック ファイルの命名規則

デバイスのタイプを識別するために、/dev 階層内の特定のデバイスの名前で次の接頭辞が使用されます。 :

lp:行式打印机(比较lp)
pt:伪终端(虚拟终端)
tty:终端
一些额外的前缀已经在一些操作系统中普遍使用:
 
fb:帧缓冲区
fd :(平台)软盘,尽管这个缩写也常用来指文件描述符
高清:(“经典”)IDE驱动程序(以前用于ATA硬盘驱动器,ATAPI光盘驱动器等)
hda:第一个ATA通道上的主设备(通常由主编号3和次编号0标识)
hdb:第一个ATA通道上的从属设备
hdc:第二个ATA通道上的主设备
hdc1:此磁盘上的第一个主分区(示例)
hdc5:扩展分区中的第一个逻辑驱动器(示例)
hdd:第二个ATA通道上的从属设备
parport,pp:并行端口
SCSI驱动程序,也被libATA(现代PATA / SATA驱动程序),USB,IEEE 1394等使用。
sd:大容量存储驱动程序
sda:首次注册的设备
sda4:此磁盘上的最后一个分区(示例)
sda6:扩展分区中的第二个逻辑驱动器(示例)
sdb,sdc等:第二,第三等注册设备
ses:机箱驱动程序
sg:通用SCSI层
sr:“ROM”驱动程序(面向数据的光盘驱动器; scd只是一个辅助别名)
st:磁带驱动器
tty:终端
ttyS :(平台)串口驱动程序
ttyUSB:USB串口转换器,调制解调器等
ログイン後にコピー

Linux で使用されるプレフィックスの正規リストは、Linux オペレーティング システムに割り当てられたデバイス番号と /dev ディレクトリ ノードの公式レジストリである Linux Device List にあります。

ほとんどのデバイスでは、このプレフィックスの後に、特定のデバイスを一意に識別する番号が続きます。ハードドライブの場合、文字はデバイスの識別に使用され、数字はパーティションの識別に使用されます。したがって、ファイル システムは /dev/sda3 を通じてディスク上の領域を見つけることができ、/dev/pts/14 をネットワーク化された端末セッションに関連付けます。

デバイス ファイルを操作するための関連コマンド

mknod

Everyone組み込みに興味がある場合は、このコマンドの使用方法を自分で確認してください。

関連する推奨事項: 「Linux ビデオ チュートリアル

以上がLinuxデバイスファイルとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CentosとUbuntuの違い CentosとUbuntuの違い Apr 14, 2025 pm 09:09 PM

Centosとubuntuの重要な違いは次のとおりです。起源(CentosはRed Hat、for Enterprises、UbuntuはDebianに由来します。個人用のDebianに由来します)、パッケージ管理(CentosはYumを使用し、安定性に焦点を当てます。チュートリアルとドキュメント)、使用(Centosはサーバーに偏っています。Ubuntuはサーバーやデスクトップに適しています)、その他の違いにはインストールのシンプルさが含まれます(Centos is Thin)

Centosをインストールする方法 Centosをインストールする方法 Apr 14, 2025 pm 09:03 PM

Centosのインストール手順:ISO画像をダウンロードし、起動可能なメディアを燃やします。起動してインストールソースを選択します。言語とキーボードのレイアウトを選択します。ネットワークを構成します。ハードディスクをパーティション化します。システムクロックを設定します。ルートユーザーを作成します。ソフトウェアパッケージを選択します。インストールを開始します。インストールが完了した後、ハードディスクから再起動して起動します。

メンテナンスを停止した後のCentosの選択 メンテナンスを停止した後のCentosの選択 Apr 14, 2025 pm 08:51 PM

Centosは廃止されました、代替品には次のものが含まれます。1。RockyLinux(最高の互換性)。 2。アルマリン(Centosと互換性); 3。Ubuntuサーバー(設定が必要); 4。RedHat Enterprise Linux(コマーシャルバージョン、有料ライセンス); 5。OracleLinux(CentosとRhelと互換性があります)。移行する場合、考慮事項は次のとおりです。互換性、可用性、サポート、コスト、およびコミュニティサポート。

Dockerデスクトップの使用方法 Dockerデスクトップの使用方法 Apr 15, 2025 am 11:45 AM

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

Dockerの原則の詳細な説明 Dockerの原則の詳細な説明 Apr 14, 2025 pm 11:57 PM

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

Centosがメンテナンスを停止した後の対処方法 Centosがメンテナンスを停止した後の対処方法 Apr 14, 2025 pm 08:48 PM

CentOSが停止した後、ユーザーは次の手段を採用して対処できます。Almalinux、Rocky Linux、Centosストリームなどの互換性のある分布を選択します。商業分布に移行する:Red Hat Enterprise Linux、Oracle Linuxなど。 Centos 9ストリームへのアップグレード:ローリングディストリビューション、最新のテクノロジーを提供します。 Ubuntu、Debianなど、他のLinuxディストリビューションを選択します。コンテナ、仮想マシン、クラウドプラットフォームなどの他のオプションを評価します。

Docker画像が失敗した場合はどうすればよいですか Docker画像が失敗した場合はどうすればよいですか Apr 15, 2025 am 11:21 AM

障害のあるDocker画像ビルドのトラブルシューティング手順:DockerFileの構文と依存関係バージョンを確認します。ビルドコンテキストに必要なソースコードと依存関係が含まれているかどうかを確認します。エラーの詳細については、ビルドログを表示します。 -targetオプションを使用して、階層フェーズを構築して障害点を識別します。 Dockerエンジンの最新バージョンを使用してください。 -t [image-name]:デバッグモードで画像を作成して、問題をデバッグします。ディスクスペースを確認し、十分であることを確認してください。 Selinuxを無効にして、ビルドプロセスへの干渉を防ぎます。コミュニティプラットフォームに助けを求め、DockerFilesを提供し、より具体的な提案のためにログの説明を作成します。

VSCODEに必要なコンピューター構成 VSCODEに必要なコンピューター構成 Apr 15, 2025 pm 09:48 PM

VSコードシステムの要件:オペレーティングシステム:オペレーティングシステム:Windows 10以降、MACOS 10.12以上、Linux Distributionプロセッサ:最小1.6 GHz、推奨2.0 GHz以上のメモリ:最小512 MB、推奨4 GB以上のストレージスペース:最低250 MB以上:その他の要件を推奨:安定ネットワーク接続、XORG/WAYLAND(Linux)

See all articles