"Here, you see examples of four system calls - open, read, write
and close. Don't fret over the details of the syntax; that's not
important right now. The point is this: through these system calls
(and a few others) the Linux kernel provides the illusion of a
'file' - a sequence of bytes of data that has a name - and protects
you from the underlying details of tracks and sectors and heads and
free block lists that you'd have to get into if you wanted to talk
to the hardware directly. That's what we mean by an
abstraction.
"As you'll see from the picture above, the kernel has to work
hard to maintain this same abstraction when the filesystem itself
might be stored in any of several formats, on local storage devices
such as hard disks, CDs or USB memory sticks - or might even be on
a remote system and accessed through a network protocol such as NFS
or CIFS.
"There may even be an additional device mapper layer to support
logical volumes or RAID. The virtual filesystem layer within the
kernel enables it to present these underlying forms of storage as a
collection of files within a single hierarchical filesystem."