Ein File Control Block ist eine temporäre Datenstruktur zur Verwaltung von geöffneten Dateien bei bestimmten Betriebssystemen.

Das Betriebssystem speichert und verwaltet in einem FCB alle Informationen, die es über eine bestimmte geöffnete Datei zu deren Verwendung benötigt. Indem der FCB normalerweise im Speicher des Anwendungsprogramms und nicht im Betriebssystemeigenen Speicher liegt, kann ein Programm so viele Dateien gleichzeitig geöffnet halten, wie es will, vorausgesetzt es reserviert genug Speicherplatz für die dafür benötigten FCBs. In dieser flexiblen Speicherverwendung – ein Programm, das weniger Dateien benötigt, muss ja so auch weniger Platz für FCBs aufwenden und kann den Speicher stattdessen anderweitig nutzen – liegt der Hauptvorteil von FCBs. Ein wesentlicher Nachteil derselben ist aber, dass dem Anwendungsprogramm die Größe des FCBs bekannt sein muss, da es ja den dafür nötigen Speicher selbst bereitstellen muss; daher kann diese Größe in späteren Betriebssystem-Versionen nicht erhöht werden – etwa um zusätzliche vom Betriebssystem intern benötigte Informationen aufzunehmen –, ohne dass die Kompatibilität mit älteren Anwendungsprogrammen zerstört wird.

CP/M verwendet ausschließlich FCBs zur Dateiadressierung. MS-DOS benutzt ein anderes Dateisystem (FAT), verwendet aber in den Versionen 1.x trotzdem die hergebrachten FCBs zum Dateizugriff, auch um Drittanbietern von CP/M-basierter Software eine schnelle und einfache Portierung ihrer Programme zu erlauben.

MS-DOS Versionen ab 2.0 und neuere MS-DOS-kompatible Betriebssysteme stießen auf das oben beschriebene Größenproblem, da sich kein Platz im FCB fand zur Speicherung von Informationen, die zur Verwendung der neu eingeführten Unterverzeichnisse notwendig waren. Sie stellen FCBs nur mehr aus Kompatibilitätsgründen zur Verfügung, und sie verwenden Datei-Handles als Standardmethode für den Dateizugriff, wobei die eigentlichen Verwaltungsdaten zu einer Datei nun intern in einem dafür reservierten Betriebssystem-Speicherbereich verwaltet werden.

Die FCBs sind in diesen Betriebssystemen nur Dummys, die einen Verweis auf die eigentlichen, im Betriebssystemeigenen Speicher verwalteten Dateiinformationen enthalten. Die Zahl solcher Dummys ist beschränkt, normalerweise auf 4; zur Erhöhung kann man zur Bootzeit den FCBS= Parameter in der Datei CONFIG.SYS angeben, wobei jedoch pro möglichem FCB-Dummy eine gewisse Menge Speicher dauerhaft reserviert wird, der nicht anderweitig verwendbar ist. Dieser Parameter existiert sogar noch bei Windows 2000 oder Windows XP (nur 32-Bit-Version), ist aber nur beim Einsatz von bestimmten DOS-Programmen wie beispielsweise WordStar von Bedeutung.

Struktur eines FCB bei CP/M

Bearbeiten

Ein FCB besteht aus einer Folge von 33 oder 36 Bytes mit Laufwerk, Dateiname und anderen Informationen.

Byte 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16..31 32 33 34 35
Element DR F1 F2 F3 F4 F5 F6 F7 F8 T1 T2 T3 EX S1 S2 RC D0..D15 CR R0 R1 R2
Byte Wert Beschreibung
DR 0..16 Laufwerk (DRive)
  0 Standardlaufwerk
  1 Laufwerk A:
  ... ...
  16 Laufwerk P:
F1..F8 A..Z Dateiname (File) in Großbuchstaben
T1..T3 A..Z Dateierweiterung (Type) in Großbuchstaben. Bit 7 hat eine besondere Bedeutung
T1.7 1 Datei nur-lesen
T2.7 1 Systemdatei
EX 0..31 Nummer des aktuellen EXtents.
S1 0..255 reserviert für interne Verwendung (System 1)
S2 0..255 reserviert für interne Verwendung (System 2)
RC 0..127 Anzahl Records (Record Count) des aktuellen Extents
D0..D15 0..255 Systembereich zur internen Verwendung
CR 0..255 Aktueller (Current) Record bei sequentiellem Dateizugriff.
R0..R1 0..65535 Aktueller Record bei direktem Dateizugriff.
R2 0..1 Reserviert für direkten Dateizugriff.

CP/M stellt einen Standard-FCB an der Adresse 005CH bereit, mit dem genau eine Datei geöffnet werden kann. Weitere Dateien verwaltet die Anwendung über zusätzliche FCBs im eigenen Adressraum. FCBs werden im Verzeichnis-Bereich auf dem Speichermedium abgelegt, beim Öffnen einer Datei in den Arbeitsspeicher kopiert und beim Schließen wieder zurückgeschrieben.