Qual è stato il primo file system?
SoftwareEngineering.SE ha una domanda sul primo file system gerarchico storicamente (anche una domanda locale simile ), ma qual è stato il primo sistema operativo con un file system in generale?
Ovvero, quale sistema operativo è stato il primo ad astrarre l'archiviazione esterna dai volumi fisici a livello di sistema operativo, anche mediante blocchi di dimensioni fisse pre-allocati, introducendo la nozione di "volume virtuale personale" o simile, in base ai metadati mantenuti dal sistema operativo?
Risposte
La mia seconda ipotesi è CTSS. Era operativo nel 1961, ma a quel tempo aveva solo nastri per l'archiviazione dei file degli utenti. Suppongo che i record del nome del nastro non costituiscano "metadati" nel senso richiesto da questa domanda.
Un disco è stato aggiunto da qualche parte tra il 1962 e il 1963. La CTSS Programmer's Guide del 1963 menziona
- l'installazione del file disco IBM 1301; e 5) la progettazione e la programmazione di una subroutine di controllo del disco principale (memo CC-196) e un programma di editor del disco associato (memo CC-208)
Non ho trovato CC-196 online, ma CC-208 descrive la Master File Directory (MFD), le directory dei file utente (UFD). Ciascuna voce UFD contiene il numero di traccia iniziale e il numero di tracce per il file; Deduco che i file siano contigui.
(Pagina 1 se vuoi cercarlo; non taglia e incolla bene)
Quindi, questo si qualifica sicuramente come un file system entro i requisiti della domanda. Dimostra anche una piacevole relazione ancestrale con il successivo documento sul filesystem gerarchico. Se CTSS sia stato il "primo" dipende dal fatto che qualcun altro qui possa trovare qualcosa prima.
(Questa risposta è stata ora determinata per non soddisfare i requisiti ora chiariti della domanda. Tuttavia, la discussione sembra utile, anche se solo nella mia mente, quindi la lascerò qui. Ma vedi l'altra mia risposta su CTSS.)
Immagino che qui si applichi la risposta standard per "primo": Atlas Supervisor .
La sezione 6 del documento collegato parla della gestione dei dati.
L'elevata velocità di elaborazione di Atlas e l'uso di più apparecchiature periferiche di input e output consentono al computer di gestire una grande quantità e varietà di problemi. Questi andranno da piccoli lavori per i quali non ci sono dati al di fuori del programma stesso, a lavori di grandi dimensioni che richiedono diversi batch di dati, che possono arrivare su supporti diversi. Altre voci di input possono consistere in modifiche ai programmi o richieste di eseguire programmi già forniti. Diversi di questi elementi possono essere presentati insieme su un mazzo di carte o un pezzo di nastro perforato. Tutto deve essere correttamente identificato per il computer.
Per sistematizzare questo compito di identificazione, è stato introdotto il concetto di documento. Un documento è una sezione autonoma di informazioni di input, presentate al computer consecutivamente attraverso un canale di input. Ogni documento contiene adeguate informazioni di identificazione (vedere di seguito) e il supervisore conserva nell'archivio principale un elenco dei documenti man mano che vengono accettati nell'archivio dalle routine di input e un elenco di lavori per i quali sono attesi ulteriori documenti.
Questo è forse più dinamico di quanto avevi in mente; il supervisore conserva solo le informazioni di identificazione / posizione per i file "attivi". Tuttavia, penso che questo non sia molto diverso dai sistemi che utilizzano l'archiviazione su disco intercambiabile; il sistema operativo spesso conosce solo il contenuto di ciò che è attualmente montato online, a meno che, ovviamente, non abbia il design che mantiene un unico catalogo per tutti i volumi.
La caratteristica importante che rende questa una risposta valida è che l'utente assegna un nome al documento, il programma richiede il documento per nome e il supervisore usa il nome per abbinare la richiesta del programma all'hardware su cui risiede il documento (che potrebbe, in modo trasparente, essere su magtape se viene utilizzato lo spooling dell'input).