Introduzione ai File e al File System in Windows

Il File System e il terminale sono due componenti fondamentali di un sistema operativo. Il File System è il componente che si occupa di gestire i file e le cartelle, mentre il terminale è il componente che permette di interagire con il sistema operativo tramite comandi.

Queste due entità sono le prime con cui uno sviluppatore di sistema incontra quando inizia a programmare. In questa lezione introdurremo alcuni concetti di base riguardanti il File System e i file in Windows.

Il File System di Windows

Prima ancora di essere un sistema operativo grafico, ossia dotato di un'interfaccia grafica, Windows è un sistema operativo a riga di comando, ossia dotato di un'interfaccia testuale. Questo significa che Windows è in grado di funzionare anche senza un'interfaccia grafica, ma solo tramite comandi testuali.

Questa sua funzionalità ha le sue radici nel sistema operativo da cui Windows deriva, ossia MS-DOS. MS-DOS è un sistema operativo a riga di comando, e Windows fu inizialmente creato come interfaccia grafica per MS-DOS.

Nativamente, Windows supporta quattro tipi di file system diversi sui dispositivi ad esso collegati, siano essi dischi fissi, dischi esterni, chiavette USB, schede SD, etc. Questi file system sono:

  • File Allocation Table: spesso chiamato FAT o FAT32.

    Si tratta del file system più vecchio e più semplice. Originariamente, infatti, fu sviluppato per MS-DOS e Windows 3.1. Questi due sistemi supportavano il file system FAT16, ossia a 16 bit. Successivamente, FAT fu esteso per supportare file e dimensioni di dischi più grandi dando origine, così, al FAT32. È supportato da tutti i sistemi operativi, ma ha alcune limitazioni, come la dimensione massima di un file, che non può superare i 4GB. Questo file system è utilizzato principalmente per dispositivi di piccole dimensioni, come chiavette USB e schede SD. Da qui in poi useremo in maniera intercambiabile i termini FAT e FAT32.

  • New Technology File System: abbreviato in NTFS.

    Si tratta del file system più recente e più avanzato. È stato sviluppato da Microsoft per sostituire FAT, e fu introdotto per la prima volta in Windows NT 3.1. È il file system più utilizzato su Windows, e supporta file e dimensioni di dischi molto grandi, cioè di dimensione superiore ai 4GB. È il file system utilizzato di default da Windows, e viene utilizzato per dischi fissi e dischi esterni di grandi dimensioni. Ha molte funzionalità avanzate come ad esempio la compressione dei file, la crittografia dei file, e la gestione dei permessi di accesso ai file.

  • CDFS: CD-ROM File System.

    Si tratta del file system utilizzato dai CD-ROM. È un file system molto semplice, e non supporta alcune funzionalità avanzate, come la compressione dei file. È utilizzato solo per i CD-ROM, e non è possibile formattare un disco fisso con questo file system. Inoltre, questo file system è compatibile con lo standard ISO 9660, che è lo standard utilizzato per i CD-ROM.

  • Universal Disk Format: abbreviato in UDF.

    Si tratta del file system utilizzato dai DVD. Viene utilizzato esclusivamente per i DVD, e non è possibile formattare un disco fisso con questo file system.

Oltre a questi file system, Windows supporta anche altri file system distribuiti. Questi file system sono utilizzati per la condivisione di file e cartelle in una rete locale:

  • Network File System: abbreviato in NFS.

    Si tratta di un file system distribuito utilizzato principalmente nei sistemi operativi Unix e Unix-like. È utilizzato per condividere file e cartelle in una rete locale.

  • Common Internet File System: abbreviato in CIFS.

    Si tratta di un file system distribuito utilizzato principalmente nei sistemi operativi Windows. Anch'esso è utilizzato per condividere file e cartelle in una rete locale.

Sebbene Windows supporti tutti questi file system, attraverso le API di sistema è possibile accedere in maniera trasparente a tutti i file system supportati da Windows. Questo significa che, per un programma, non c'è alcuna differenza tra un file system e l'altro. Questo è possibile grazie al File System Manager di Windows, che si occupa di gestire tutti i file system supportati da Windows.

File e Nomi dei File in Windows

Windows, come la stragrande maggioranza dei sistemi operativi, organizza i file in una struttura ad albero o struttura gerarchica. Tuttavia, a differenza di altri sistemi operativi, Windows non ha un unico file system radice, ma ne ha uno per ogni disco fisso o disco esterno collegato al computer. Questo significa che, per ogni disco fisso o disco esterno collegato al computer, Windows ha una struttura ad albero separata.

Infatti, tipicamente, il percorso completo di un file in Windows è composto da tre parti:

  • Nome del disco fisso o disco esterno: è il nome del disco fisso o disco esterno su cui si trova il file. Questo nome è seguito da due punti :. Ad esempio, C: è il nome del disco fisso principale di Windows. Questo nome è seguito da una barra rovesciata \.

    Per convenzione, il disco fisso principale su cui è installato Windows è chiamato C:. Le unità A: e B: sono riservate, per motivi storici, alle unità floppy disk. Le unità D: e successive sono riservate alle unità ottiche, come i CD-ROM e i DVD. Ciò non toglie che sia possibile rimappare i nomi delle unità attraverso l'utility di sistema Gestione Disco.

Utility Windows Gestione Disco
Figura 1: Utility Windows Gestione Disco
  • Percorso della cartella: è il percorso della cartella in cui si trova il file. Questo percorso è composto da una o più cartelle, separate da una barra rovesciata \. Ad esempio, il programma notepad.exe si trova nella cartella Windows che, a sua volta, si trova sull'unità C:. Il percorso completo della cartella Windows è quindi C:\Windows.

  • Nome del file: il nome del file è composto, nella maggior parte dei casi, da un nome seguito da un'estensione. Il nome del file e l'estensione sono separati da un punto .. Ad esempio, il nome del file notepad.exe è notepad, mentre l'estensione è exe. L'estensione viene utilizzata per identificare il tipo di file. Ad esempio, i file con estensione .exe sono file eseguibili, mentre i file con estensione .txt sono file di testo.

Ricapitolando:

Definizione

Struttura di un percorso completo di un file in Windows

In Windows un percorso completo di un file è composto in questo modo:

<Nome del disco fisso o disco esterno>:\<Percorso della cartella>\<Nome del file>.<Estensione>

Ad esempio:

C:\Windows\notepad.exe

Peculiarità dei Nomi dei File in Windows

Sopra abbiamo visto le regole generali per i nomi dei file in Windows. Adesso vediamo alcune regole particolari che distinguono il modo in cui Windows gestisce i nomi dei file rispetto ad altri sistemi operativi come Linux, Unix e macOS.

  • Case Insensitive: i nomi dei file in Windows sono case insensitive, ossia non fanno distinzione tra lettere maiuscole e lettere minuscole. Ad esempio, i nomi notepad.exe, Notepad.exe, NOTEPAD.EXE e NoTePaD.eXe sono tutti equivalenti.

  • Case Retentive: i nomi dei file in Windows sono case retentive, ossia Windows memorizza i nomi dei file con la stessa capitalizzazione con cui sono stati creati. Ad esempio, se si crea un file con il nome Esempio.TXT ad esso si può accedere comunque con il nome esempio.txt, ma Windows memorizzerà il nome del file con la capitalizzazione originale, ossia Esempio.TXT.

  • Separatore: il separatore utilizzato per separare i nomi di cartelle e file è la barra rovesciata \, in inglese backslash. Questo è il separatore utilizzato da Windows, mentre altri sistemi operativi utilizzano la barra normale /, in inglese slash. Tuttavia, quando si programma in C, C++ o C#, è possibile utilizzare la barra normale / come separatore poiché le API di Windows accettano entrambi i separatori.

  • Caratteri riservati: Windows non permette di utilizzare alcuni caratteri nei nomi dei file. Questi caratteri sono:

    • \ (backslash)
    • / (slash)
    • : (due punti)
    • * (asterisco)
    • ? (punto interrogativo)
    • " (virgolette)
    • < (minore)
    • > (maggiore)
    • | (pipe)

    Inoltre, Windows non permette di utilizzare i caratteri di controllo, ossia i caratteri ASCII con valore compreso tra 0 e 31, e i caratteri riservati per il sistema, ossia i caratteri ASCII con valore compreso tra 127 e 159.

  • Lunghezza: il path, o percorso completo di un file in Windows, non può superare i 260 caratteri. Questo limite è stato introdotto con Windows 95 ed è dovuto al fatto che Windows utilizza un buffer di 260 caratteri per memorizzare i path dei file. Questo limite è stato rimosso con Windows 10 versione 1607, ma è ancora presente in alcune API di sistema. In generale, esiste la macro C MAX_PATH che restituisce il numero massimo di caratteri che un path può contenere.

In Sintesi

In questa lezione abbiamo visto alcuni concetti di base riguardanti il File System e i file in Windows. In particolare, abbiamo visto che:

  • Windows supporta quattro file system nativi: FAT, NTFS, CDFS e UDF.
  • Windows supporta due file system distribuiti: NFS e CIFS.
  • Windows organizza i file in una struttura ad albero.
  • Windows ha un file system radice per ogni disco fisso o disco esterno collegato al computer.
  • Un percorso completo di un file in Windows è composto da tre parti: il nome del disco fisso o disco esterno, il percorso della cartella e il nome del file.
  • I nomi dei file in Windows sono case insensitive e case retentive.
  • Il separatore utilizzato per separare i nomi di cartelle e file è la barra rovesciata \.
  • Windows non permette di utilizzare alcuni caratteri nei nomi dei file.
  • Il path completo di un file in Windows non può superare i 260 caratteri.

Adesso che abbiamo visto alcuni concetti di base riguardanti il File System e i file in Windows, nella prossima lezione vedremo come creare un file in Windows.