File System History

In early computers, mass storage was extremely expensive and limited, and computer programming was largely focused on working with plain text, human-readable data, which heavily influenced early file system design. While programs consisted of binary machine instructions with a word size determined by the processor architecture, text data was often stored in 6-bit encodings–enough for the 26 letters of the alphabet, 10 digits and 28 additional punctuation and control characters, which was plenty for early computing needs. Instruction data also tends to be accessed in a read-only mode with a largely linear pattern, while text data is often accessed in a read-write mode with random access characteristics. The different word sizes and access characteristics led to a natural division between “program” and “data” storage, which was reflected at all levels–storage, memory, and CPU cache. Although this division has disappeared over time, modern processor caches are still divided into instruction (iCache) and data (dCache) at the lowest levels, due to the differences in access access characteristics.

Due to the limited storage available at the time, early systems tended to implement non-hierarchical file systems with all files arranged in a single location with globally unique names. Related files would be stored on removable media, which was organized physically, rather than digitally. Over time, file system development was heavily influenced by the increased availability of storage space, the proliferation of different file formats, and the advent of the multi-user environment. Each of these led to a need for increased organizational capabilities, meta-data storage, and access control, which were first implemented in the Multics file system in the mid 1960s.