Un blocco di controllo file (FCB), chiamato anche descrittore di file, è un tipo di struttura dati che viene temporaneamente allocata da un sistema operativo del computer per mantenere lo stato di un file di dati che viene creato o altrimenti manipolato. Nella maggior parte dei casi, un blocco di controllo file viene utilizzato per memorizzare informazioni di base su un file, come nome, estensione e posizione su un’unità logica, nonché informazioni dinamiche come l’indirizzo corrente all’interno del file che viene letto. In origine, un blocco di controllo file era una struttura molto ben definita in determinati sistemi operativi, ma da allora è diventato un termine più generico per la struttura utilizzata per tenere traccia delle informazioni su un file gestito attivamente.
Uno scopo importante di un blocco di controllo file è aiutare il file system a tenere traccia dello stato in cui si trova il file per impedire a diverse operazioni di tentare di modificare il file in modi conflittuali, come la lettura da un’area del file che è attualmente in fase di scritto a. La struttura non viene utilizzata solo per i file di dati, ma può anche essere utilizzata per tenere traccia delle informazioni sulle directory, sebbene la struttura dei dati venga solitamente abbreviata per rimuovere i campi non necessari, poiché una directory non può contenere dati.
Due sistemi operativi, in particolare Microsoft® Disk Operating System (MS-DOS) e Control Program for Microprocessors (CP/M), sono stati i primi sistemi operativi a utilizzare uno schema a blocchi per gestire i file. Questi sistemi utilizzavano strutture molto simili per aiutare a gestire i file a cui si accedeva. Con lo sviluppo di altri sistemi operativi e file system, il concetto di blocco è rimasto, ma l’implementazione è cambiata e la struttura dei dati variava notevolmente da un sistema all’altro. La maggior parte dei sistemi operativi per computer in uso nel 2011 utilizza una qualche forma di blocco di controllo dei file, specialmente quando si utilizzano file system personalizzati per hardware rimovibile, sebbene la struttura dei dati utilizzata non sia compatibile con le versioni precedenti senza emulazione e generalmente sia più grande e nascosta alla maggior parte applicazioni di programmazione di alto livello.
In linea di massima, un blocco di controllo file contiene informazioni che possono essere modificate durante l’utilizzo di un file da parte del sistema operativo. A parte il nome e la posizione, vengono mantenuti i puntatori di memoria a punti diversi all’interno del file stesso. Ciò consente la lettura e la scrittura sequenziali, nonché la lettura e la scrittura ad accesso casuale se abbinate a una variabile nell’FCB che memorizza la dimensione di un record di accesso casuale. Vengono monitorati anche i permessi dei file, come lo stato di sola lettura o dell’eseguibile. L’uso di un FCB fornisce anche un meccanismo per impedire a due o più processi di operare sullo stesso file in modo imprevedibile, come il tentativo di aggiungere informazioni alla fine di un file mentre lo stesso file viene copiato in un’altra posizione.