A partition is labeled to host a certain kind of file system. Such a
file system could be the linux standard ext2 file system or linux swap
space, or even foreign file systems like (Microsoft) NTFS or (Sun)
UFS. There is a numerical code associated with each partition
type. For example, the code for ext2 is 0x83 and linux swap is 0x82.
Foreign Partition Types
The partition type codes have been
arbitrarily chosen (you can't figure out what they should be) and they
are particular to a given operating system. Therefore, it is
theoretically possible that if you use two operating systems with the
same hard drive, the same code might be used to designate two
different partition types.
OS/2 marks its partitions with a 0x07 type and so
does Windows NT's NTFS. MS-DOS allocates several type codes for its
various flavors of FAT file systems: 0x01, 0x04 and 0x06 are known.
DR-DOS used 0x81 to indicate protected FAT partitions, creating a type
clash with Linux/Minix at that time, but neither Linux/Minix nor
DR-DOS are widely used any more.
The number of partitions on an Intel-based system was limited
from the very beginning: The original partition table was
installed as part of the boot sector and held space for only
four partition entries. These partitions are now called primary
partitions.
One primary partition of a hard drive may be subpartitioned. These are
logical partitions. This effectively allows us to skirt the historical
four partition limitation.
The primary partition used to house the logical partitions is called
an extended partition and it has its own file system type (0x05).
Unlike primary partitions, logical partitions must be contiguous. Each
logical partition contains a pointer to the next logical partition,
which implies that the number of logical partitions is
unlimited. However, linux imposes limits on the total number of any
type of prtition on a drive, so this effectively limits the number of
logical partitions. This is at most 15 partitions total on an SCSI
disk and 63 total on an IDE disk.
Swap Partitions
Every process running on your computer is allocated a number of blocks
of RAM. These blocks (1k in linux) are called pages. The set of
in-memory pages which will be referenced by the processor in the very
near future is called a "working set." Linux tries to predict these
memory accesses (assuming that recently used pages will be used again
in the near future) and keeps these pages in RAM if possible.
If you have too many processes running on a machine, the kernel will
try to free up RAM by writing pages to disk. This is what swap space
is for. It effectively increases the amount of memory you have
available. However, disk I/O is very slow compared to reading from and
writing to RAM.
If memory becomes so scare that the kernel pages out from the working
set of one process in order to page in for another, the machine is
said to be thrashing. Expect performance to drop by approximately the
ratio between memory access speed and disk access speed. Swap space is
something you need to have, but it is no substitute for sufficient
RAM. See the discussion in Section 4 for tips on determining
the size of swap space you need.