Before the advent of the hard drive, computers typically had two floppy disk drives, labeled A and B. When hard disks were invented, they were given the letter C
The concept of drive letters might have originated in the CP/M operating system, in imitation of the device prefixes in the RSX-11 and VMS operating systems. However, IBM's VM/CMS, an even earlier operating system, also had drive letters, identifying minidisks attached to a user session; a full pathname would be composed of a filename, filetype and disk letter called filemode.
Unlike the concept of mount points, where the user can create directories of arbitrary name and content in the root namespace, drive letter assignment implies that only letters are in this namespace, and they represent solely volumes. In other words, it is a process of naming the roots of the "forest" that represents the file system (with each volume being an independent tree therein).
Except for CP/M and early versions of MS-DOS, each of these operating systems assigns drive letters according to the following algorithm:
Assign the drive letter 'A' to the boot floppy, and 'B' to the secondary floppy.
Assign a drive letter, beginning with 'C' to the first active primary partition recognized upon the first physical hard disk.
Assign subsequent drive letters to the first primary partition upon each successive physical hard disk drive, if present within the system.
Assign subsequent drive letters to every recognized logical partition, beginning with the first hard drive and proceeding through successive physical hard disk drives, if present within the system.
Assign subsequent drive letters to any additional floppy, CD/DVD drives.