2011-08-28 14 views
6

"Linuxデバイスドライバ、第3版"と読んでいて、わかりません。第3.2章でどのように2つのデバイスが同じメジャーマイナーデバイス番号を共有していますか?

、著者は言った:

伝統的に、メジャー番号は、デバイスに関連付けられたドライバを識別する。 マイナー番号は、どのデバイスが参照されているかを正確に判断するためにカーネルが使用します。同じメジャーで

brw-rw---- 1 root disk  1, 1 2011-08-23 23:52 ram1 
brw-rw---- 1 root disk  1, 2 2011-08-23 23:52 ram2 
brw-rw---- 1 root disk  1, 3 2011-08-23 23:52 ram3 
brw-rw---- 1 root disk  1, 4 2011-08-23 23:52 ram4 
brw-rw---- 1 root disk  1, 5 2011-08-23 23:52 ram5 
... 
crw-r----- 1 root kmem  1, 1 2011-08-23 23:52 mem 
crw-r----- 1 root kmem  1, 4 2011-08-23 23:52 port 
crw-rw-rw- 1 root root  1, 3 2011-08-23 23:52 null 
crw-rw-rw- 1 root root  1, 5 2011-08-23 23:52 zero 

これらのデバイス(RAM1-RAM5)すべてのクローンを持っている、:

は、それから私は、私は珍しいいくつかのことを発見し、外観を持っているの "ls -l/devの" を試してみました - マイナーですが、名前とタイプは異なります。私は著者が「 のメジャー番号はデバイスクラスを意味し、マイナー番号はデバイスインデックスを意味する」と主張していたと思います。

私は混乱しています。どのように2つのデバイスが同じメジャーマイナーを共有することができますか?正確にデバイス番号は何ですか?

私が間違っていた場合は正解してください。事前に感謝します。 (cリストで始まるによって証明されるように)

答えて

8

memportnull、およびzeroはキャラクタデバイスです。 ramNデバイスはブロックデバイスです(したがってb)。ブロックデバイスのメジャー番号/マイナー番号は、キャラクタデバイスとは独立しています。また、その逆もあります。

+0

したがって、differntデバイスを関連付ける全く異なるファイルですか?私はLDD3でこれを見つけました」「現代のLinuxカーネルでは複数のドライバが大多数の番号を共有できますが、表示されるほとんどのデバイスは1つのメジャー1つのドライバの原則で編成されています**:カーネルはデバイスの正しいドライバをどのように選択できますか? – kumo

+1

@Shello、まず、これは時代遅れですが、最近は動的割り当てが一般的です。第二に、1つのメジャー・アンド・タイプのペア・ワン・ドライバー(つまり、そのタイプをメジャーの一部と見なすことができます) – bdonlan

関連する問題