Structure Reduces Complexity
Structure Reduces Complexity
Copyright(c) Management Analytics, 1995 - All Rights Reserved
Copyright(c), 1990, 1995 Dr. Frederick B. Cohen - All Rights Reserved
One of the most important steps toward effective control of a
complex system is the introduction of structure. By that I mean that a
completely unstructured UNIX environment; where each user
is treated differently, each terminal is treated differently, any kinds
of files are placed anywhere in the system, etc.; is completely
unmanageable. The complexity quickly becomes too high for humans to
manage. In a well structured environment, it is always easy to find
what you are looking for and put things where they belong.
UNIX file systems have historically been structured
according to standards created by the early users, and many of
these standards are now so deeply embedded into the UNIX
environment that they sometimes seem to be a part of the operating
system itself. The most obvious set of standards come from the names of
directories:
- / is for system critical files.
- /usr is for non-critical files.
- /bin is universally used to store binary executable programs. The
system areas are called `/bin' and `/usr/bin', while local versions and
commonly used local binaries are usually kept in `/usr/local/bin'. Each
user typically has a `bin' directory in their home directory, and
each package that is installed typically has `bin' areas used to store
its binary files.
- /lib is universally used for unlinked compiled binary images
incorporated into other binary executables. The `/lib' and `/usr/lib'
system areas, `/usr/local/lib', and the lib areas within user file areas
and package specific areas correspond to the case for `bin' directories.
- /include is universally used for `header' files which include
details about system specific parameters and structures that are
compiled into other programs.
- /src is universally used for source programs.