22

SoftwareEngineering.SE has a question about the historically first hierarchical file system (also a similar local question), but what was the first OS with a file system in general?

That is, what OS was the first to abstract the external storage away from physical volumes at the OS level, even by pre-allocated fixed-size chunks, by introducing the notion of a "personal virtual volume" or similar, according to metadata maintained by the OS?

  • 3
    Your question is rather general: Does "external storage" mean random access external storage? or would you consider tape-based and card-based "file" systems? or how about some weird beast like an IBM data cell drive? Must a "personal virtual volume" (PVV) have a name that distinguishes it from other PVVs? Do you require that a program be able to "open" a PVV by name? or is it enough just to be given the already-open "volume" by some JCL command? – Solomon Slow Sep 3 at 19:47
  • 2
    Perhaps you are thinking of the first "use a name to abstract away the underlying media"? – Thorbjørn Ravn Andersen Sep 3 at 20:19
  • 2
    Maybe I misunderstand the question, but why do you require the OS "to abstract the external storage away from physical volumes"? MS-DOS and the versions of Windows built upon it still very much used physical volumes ("disk in drive A:", "hard drive C:", rather than, say "/mnt/fdd"), and yet FAT is undeniably a file system. – Michael Graf Sep 3 at 20:39
  • 1
    I think "metadata maintained by the OS" is the sole difference between a file and a file system. Anything that reduces the burden on the operator. A volume ID should qualify, or even just an end-of-file marker, if the OS explicitly put it there. – snips-n-snails Sep 4 at 14:33
  • 1
    @Chenmunka A user process does not care about the architectural details. All functionality provided by it via system calls is the OS functionality. – Leo B. Sep 4 at 17:54
17

My second guess is CTSS. It was operational in 1961, but at that time had only tapes for user file storage. I suppose that tape name records don't constitute 'metadata' in the sense required by this question.

A disk was added somewhere around 1962 to 1963. The CTSS Programmer's Guide from 1963 mentions

  1. the installation of the IBM 1301 disk file; and 5) the design and programming of a master disk control subroutine (memo CC-196) and an associated disk editor program (memo CC-208)

I have not found CC-196 online, but CC-208 describes the Master File Directory (MFD), User File Directories (UFDs). Each UFD entry contains the starting track number and number of tracks for the file; I infer files are contiguous.

(Page 1 if you want to look it up; it doesn't cut and paste well)

So, this definitely qualifies as a file system within the requirements of the question. It also demonstrates a pleasing ancestral relationship to the subsequent hierarchical filesystem paper. Whether CTSS was 'first' depends on whether anyone else here can find anything earlier.

| improve this answer | |
  • Thank you! That's a very plausible guess, given that CTSS was "one of the first" time-sharing systems, where virtualizing storage makes perfect sense. Let's see if anyone comes up with anything earlier. – Leo B. Sep 4 at 3:09
  • 1
    @LeoB. You almost got me thinking, "Of course! What good would a time shared system be without files?" but then I remembered my first computing experience: Dial-up to a time shared system running BASIC. Maybe it had support for files, but if so, then my school's login privileges were not sufficient to create any. If we wanted to save a program we'd typed in, our only option was to LIST it, and capture the listing on paper tape. – Solomon Slow Sep 4 at 15:07
  • 1
    Dartmouth Basic definitely had files, and possibly right from the beginning, as far as I can tell. But it appeared in 1964, after CTSS already had its full file system. – RETRAC Sep 4 at 15:25
  • 1
    The IBM 305 offered a computer with a hard drive in 1956. I don't know whether it came with a file system. IBM 305 RAMAC – Walter Mitty Sep 5 at 11:03
  • 1
    @WalterMitty - no operating system, no assembler, so very likely no file system either :-) Programming manual – another-dave Sep 5 at 16:33
11

(This answer has now been determined not to satisfy the now-clarified requirements of the question. Nevertheless, the discussion seems useful, if only in my own mind, so I will leave it here. But see my other answer about CTSS.)

I will guess that the standard answer for 'first' applies here: the Atlas Supervisor.

Section 6 of the linked document talks about data handling.

The fast computing speed of Atlas and the use of multiple input and output peripheral equipments enable the computer to handle a large quantity and variety of problems. These will range from small jobs for which there is no data outside the program itself, to large jobs requiring several batches of data, possibly arriving on different media. Other input items may consist of amendments to programs, or requests to execute programs already supplied. Several such items may be submitted together on one deck of cards or length of punched tape. All must be properly identified for the computer.

To systematise this identification task, the concept of a document has been introduced. A document is a self-contained section of input information, presented to the computer consecutively through one input channel. Each document carries suitable identifying information (see below) and supervisor keeps in the main store a list of the documents as they are accepted into the store by the input routines, and a list of jobs for which further documents are awaited.

This is perhaps more dynamic than you had in mind; the supervisor only maintains identification/location information for 'active' files. However, I think this is not so very different to systems using exchangeable disc storage; the OS often only knows the content of what's currently mounted online - unless of course it has the design that maintains a single catalogue for all volumes.

The important feature that makes this a valid answer is that the user assigns a name to the document, the program asks for the document by name, and the supervisor uses the name to match the program request to the hardware on which the document lives (which might, transparently, be on magtape if input spooling is being used).

| improve this answer | |
  • 2
    Another first for the Atlas ;-). – Stephen Kitt Sep 3 at 20:58
  • 4
    There are only two answers needed in this entire forum: 'Atlas' and 'IBM Stretch' :-) – another-dave Sep 3 at 21:00
  • 1
    That would be a good answer to the question "which OS first had the notion of a file", but my question was about a file system. Note that in your case there is no metadata maintained by the OS. – Leo B. Sep 3 at 21:15
  • 4
    Document-name-to-device mapping sounds like metadata to me. (Not sure whether they spooled to drum; I think probably not). – another-dave Sep 3 at 21:26
  • 1
    But what do you imply by 'file system'? Does it have to be magnetic media? Rewriteable? Random access? Directory-structured? Would a DECtape (or its predecessor the LINCtape) fit the requirements? – another-dave Sep 3 at 21:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.