File Control Block

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

Details

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

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

Byte0001020304050607080910111213141516..3132333435
ElementDRF1F2F3F4F5F6F7F8T1T2T3EXS1S2RCD0..D15CRR0R1R2
ByteWertBeschreibung
DR0..16Laufwerk (DRive)
 0Standardlaufwerk
 1Laufwerk A:
 ......
 16Laufwerk P:
F1..F8A..ZDateiname (File) in Großbuchstaben
T1..T3A..ZDateierweiterung (Type) in Großbuchstaben. Bit 7 hat eine besondere Bedeutung
T1.71Datei nur-lesen
T2.71Systemdatei
EX0..31Nummer des aktuellen EXtents.
S10..255reserviert für interne Verwendung (System 1)
S20..255reserviert für interne Verwendung (System 2)
RC0..127Anzahl Records (Record Count) des aktuellen Extents
D0..D150..255Systembereich zur internen Verwendung
CR0..255Aktueller (Current) Record bei sequentiellem Dateizugriff.
R0..R10..65535Aktueller Record bei direktem Dateizugriff.
R20..1Reserviert 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.