The /proc filesystem contains a illusionary filesystem. It does not exist on a disk. Instead, the kernel creates it in memory. It is used to provide information about the system (originally about processes, hence the name). Some of the more important files and directories are explained below. The /proc filesystem is described in more detail in the proc manual page.
A directory with information about process number 1. Each process has a directory below /proc with the name being its process identification number.
Information about the processor, such as its type, make, model, and performance.
List of device drivers configured into the currently running kernel.
Shows which DMA channels are being used at the moment.
Filesystems configured into the kernel.
Shows which interrupts are in use, and how many of each there have been.
Which I/O ports are in use at the moment.
An image of the physical memory of the system. This is exactly the same size as your physical memory, but does not really take up that much memory; it is generated on the fly as programs access it. (Remember: unless you copy it elsewhere, nothing under /proc takes up any disk space at all.)
Messages output by the kernel. These are also routed to syslog.
Symbol table for the kernel.
The `load average' of the system; three meaningless indicators of how much work the system has to do at the moment.
Information about memory usage, both physical and swap.
Which kernel modules are loaded at the moment.
Status information about network protocols.
A symbolic link to the process directory of the program that is looking at /proc. When two processes look at /proc, they get different links. This is mainly a convenience to make it easier for programs to get at their process directory.
Various statistics about the system, such as the number of page faults since the system was booted.
The time the system has been up.
The kernel version.
Note that while the above files tend to be easily readable text files, they can sometimes be formatted in a way that is not easily digestible. There are many commands that do little more than read the above files and format them for easier understanding. For example, the freeprogram reads /proc/meminfo converts the amounts given in bytes to kilobytes (and adds a little more information, as well).