GNU/Linux >> Linux の 問題 >  >> Linux

なぜ Linux は `/dev/cdrom` と `/media/cdrom` の両方を持つ必要があるのですか?

/media/cdrom マウントポイントの規則です 、 /dev/cdrom の間 前者に装着できる特別な装置です。

目的が異なるため、両方が必要です。ほとんどのアプリケーションは特別なデバイスから直接読み取るのではなく、ファイルシステム (マウントされているもの) から読み取ることができます


(私の質問に対する多くの回答をありがとう。しばらくウェブを検索した後、私自身の理解を共有したいと思います。)

ここによると:

<ブロック引用>

Unix ライクなオペレーティング システムでは、デバイス ファイルまたは特殊ファイルはデバイス ドライバのインターフェースです。 あたかも通常のファイルであるかのようにファイル システムに表示されます。

ここによると:

<ブロック引用>

マウント コマンドは、ファイル システムを接続する役割を果たします 大きなファイル ツリーにあるデバイスで見つかりました。

したがって、ここには 2 つの異なるレベルのソフトウェア抽象化があると思います:

  • /dev/cdrom デバイススペシャルファイルです。 CD-ROM ハードウェアをブロック IO デバイスとして抽象化します。この抽象化は、デバイス ドライバーによって提供されます。

  • /media/cdrom ファイルシステムのマウントポイントです。そのため、CD-ROM ハードウェアのより高いレベルの抽象化、つまりファイル システムを提供します。 ISO-9660 ファイル システムなど。そして、この抽象化はファイル システム ドライバーによって提供されます。

したがって、基本的に、2 つの異なる抽象化レベルに対して 2 つの異なるファイルの場所があります。また、さまざまなシナリオでは、別のシナリオが必要になる場合があります。 Windows などの他の OS も、Linux が単一のファイル階層に統合するだけで、さまざまなオプションを提供していると思います。

(たぶん、Linux で /dev/cdrom と相互作用する C コードを書いて、実験を行うべきだと思います。 そして /media/cdrom .そして、すべてがどのように進行するかを見てください。)

(私は学び続け、必要に応じて理解を深めます。)


/dev/cdrom の両方があるのはなぜですか と /media/cdrom ?

/dev/sda2 の両方があるのはなぜですか と /home ?

基本的には /dev/cdrom ファイルです .アクセスすると、CD 上の個々のビットとバイトにアクセスします (存在する場合)。一方、/media/cdrom フォルダです .アクセスすると、ファイルにアクセスします

同様に、/dev/sda2 最初のハードドライブの 2 番目のパーティションの生の内容を表します。たとえば、パーティションをフォーマットしたい場合は、これに直接書き込みます。 (mkfs プログラムは文字通り /dev/sda2 を開きます または何でも、それに特定のビットパターンを書き込みます。)次にマウントします。 /dev/sda2 たとえば、/home 、実際のファイルにアクセスできるようになりました .マウント ポイントを介してファイルにアクセスすると、ファイル システム ドライバーは基になるデバイス ファイルの読み取りと書き込みを行います。

これはまさに Unix のやり方です。


Linux
  1. Linux:/ dev / console、/ dev / tty、/ dev / tty0の違いは?

  2. / dev / stdin、/ dev / stdout、および/ dev / stderrはどの程度移植可能ですか?

  3. Linux – Linuxは、物理的にインストールしたメモリよりも多くのメモリと少ないメモリの両方を表示するのはなぜですか?

  1. Linux – `/ dev/ptmx`と`/dev / pts / ptmx`がデバイスファイルではないのはなぜですか?

  2. コマンド`tty`の出力とファイル`/dev / tty`はどちらも、現在のBashプロセスの制御端末を参照していますか?

  3. Linux で .so.1 ファイルが必要なのはなぜですか?

  1. Linuxサーバーとは何ですか?なぜあなたのビジネスにはLinuxサーバーが必要なのですか?

  2. Linux の /dev/zero および /dev/null ファイルとは

  3. /lib と /lib64 があるのに /bin しかないのはなぜですか?