The device files interface with the kernel through the use of
major and minor device numbers. The kernel first looks up the
major number to discover which device or device type is being
refered to, and the minor numbers determine a sub-selection
within that category. For an example, lets look at the serial
ports:  legba:/proc# ls -l /dev/ttyS* crw-r-----    1 root
dialout    4,  64 Dec 26 11:46 /dev/ttyS0 crw-rw----    1 root
dialout    4,  65 Jul  6 03:44 /dev/ttyS1 crw-rw----    1 root
dialout    4,  66 Jul  6 03:44 /dev/ttyS2 crw-rw----    1 root
dialout    4,  67 Jul  6 03:44 /dev/ttyS3
^   ^                    ^                                     |
|                    |                                         |
| (Note that ttyS0 == COM1, ttyS1 == COM2 etc)  Here we can see
that all the serial ports have a major number of 4, which
indicates a terminal of some type, and minor numbers of 64 to
67, which determine which com port you