All the files in /proc
are provided by the proc
file system, which is described thus in its manpage:
The proc
filesystem is a pseudo-filesystem which provides an interface to kernel data structures.
This is a special file system provided by the kernel to provide access to the data it stores, e.g. about the CPU (cpuinfo
), about processes (in the numeric directories in /proc
, corresponding to each process identifier)... The files inside it aren’t device files, they are effectively endpoints for function calls into the kernel to retrieve information from it.
Other special file systems include devtmpfs
and sysfs
.
So no, all “virtual” files aren’t device files. Arguably, device files aren’t virtual at all, since device nodes exist as real files; the way they act is not the same as what most people think of as files, but they are files nevertheless.
These questions might help you understand all this better: