a device node
Linux famously treats almost everything as a file, including hardware. But a disk is not really a file on a disk — so how do you open() it? A device node is a special entry in the filesystem, usually under /dev, that looks like a file but is really a handle to a device. Opening it does not read any bytes off the filesystem; instead it connects your file descriptor to a driver in the kernel.
A device node is created by a system call (mknod, or automatically by the device manager) and stores three things in its inode: whether it is a character or block device, and the major and minor numbers. It holds no data of its own. When a program calls open("/dev/mychar", ...), the kernel sees this inode is a device node, reads the major number to find the right driver, reads the minor to pick the device, and wires the resulting file descriptor to that driver's file_operations. From then on, read() and write() on the descriptor go straight to the driver's handlers. On modern systems you rarely make nodes by hand: a userspace daemon (udev) watches the kernel and creates the nodes in /dev automatically as devices appear, often via a temporary filesystem (devtmpfs).
Device nodes matter because they are the bridge that lets ordinary file APIs and ordinary permission bits control hardware: chmod and chown on a node decide who may use the device. A clarifying point: the node is just a name plus a (type, major, minor) triple — it contains no driver code and stores no device data. Deleting the node does not unload the driver, and creating one for a major no driver has claimed gives you a node that fails to open.
$ sudo mknod /dev/mychar c 240 0 # type c, major 240, minor 0 $ ls -l /dev/mychar crw-r--r-- 1 root root 240, 0 ... /dev/mychar # now open("/dev/mychar") reaches the driver that claimed major 240
mknod creates a node carrying a (type, major, minor) triple; opening it routes to whichever driver claimed that major.
A device node stores no data and no code — only a (type, major, minor) triple. On modern systems udev/devtmpfs create nodes automatically; hand-made nodes for an unclaimed major simply fail to open.