Hallo Harald, Du hast am Montag gesagt, Theorie duerfe bis zum Tutorium abgegeben werden. Also hier noch ein Nachtrag, falls unsere Aufgabe 1 zu unvollstaendig war: /**************************************************************/ /* */ /* UNIX 1 / WS 92/93 Gruppe ux803 */ /* 5. Uebung - Aufgabe 1 */ /* */ /* Vorname Name Matrikelnr. */ /* --------- ------- ------------- */ /* Dietmar Dierks 125761 */ /* Roman Czyborra 127221 */ /* Torsten Buller 117894 */ /* Gerasimos Paliatsaras 140956 */ /* */ /**************************************************************/ a) user file descriptor table Hier gibt es keinen Reference Counter. Verweist auf die File Table. b) file table Hier ist ein Reference Counter enthalten. Er zaehlt die Verweise der user file desciptor tables auf diesen Eintrag in der file table. Immer, wenn ein neuer Zeiger aus der user file descriptor table auf die file table zeigt, muss der reference counter erhoeht werden. So wird z.B. beim fork()-Befehl der Reference Counter erhoeht, falls der er- zeugende Prozess offene Files hatte, die aus der u-area auf die file table zeigten. Diese Informationen werden an den Sohn-Prozess vererbt und somit zeigt aus der neuen u-area ebenfalls ein Verweis aus den open files in die file table. Eine weitere Moeglichkeit, den Reference Counter zu erhoehen, ist die Funktion dup(). c) inode table Hier ist ein Reference Counter enthalten. Er zaehlt die Verweise der File Table auf diesen Eintrag in der inode table. Immer, wenn ein neuer Zeiger aus der file table in die inode table zeigt, muss der Reference Counter erhoeht werden. So wird z.B. beim fork()-Befehl der Reference Counter fuer die cwd- und root directory-Verweise erhoeht. Ausserdem bewirkt jedes open () auf einen bereits von irgendwem geoeffneten File eine Inkrementierung. d) proc table Hier gibt es keinen Reference Counter. Die proc table enthaelt nur alle proc structures und es existieren keine Verweise, die einen Reference Counter "verursachen" wuerden. Es macht keinen Sinn, wenn es mehrere Zeiger auf einen Prozess geben wuerde. e) mount table Hier gibt es keinen Reference Counter. (enthaelt die device number, Zeiger auf root-inode, Zeiger auf mount-point (der in der inode table ist) und Zeiger auf den Superblock des Filesystems) :::::::::::::::::::::NACHTRAG Zur inode table waere genau genommen zu sagen, dass dort pro Eintrag zwei reference counters vorhanden sinds, wenn man nlinks noch mitzaehlt, das die Zahl der hard links auf das disk inode angibt und erhoeht wird, wenn ein neuer hard link eingerichtet wird, also speziell fuer ein directory auch dann, wenn ein subdirectory kreiert wird. Zur Frage, wann werden die counter modifiziert, waere natuerlich nicht nur zu beantworten, wann diese inkrementiert werden, sondern auch, wann sie dekrementiert werden: file table: wenn ein user das file schliesst inode table: wenn ein file table reference counter 0 erreicht nlinks: bei unlink(2)