Sistemas operativos modernos
Cuando el shell se bifurca en p l, x está vacío al principio, así que p l tan sólo comienza a es cribir en la posición Odel archivo. Sin embargo, cuando p l termina, se necesita algún mecanis mo para asegurarse de que la posición inicial de archivo que p2 vea no sea O (como sería si la posición se guardara en la tabla de descriptores de archivo), sino el valor con el que terminó p¡. La forma como se logra esto se muestra en la figura 10-33. El truco consiste en introducir una nueva tabla, la tabla de descripción de archivo abierto entre la tabla de descriptores de archivo y la tabla de nodos-i, y colocar allí la posición de archivo (y el bit de lectura/escritura, RW). En la figura, el padre es el shell y el hijo primero es p l y luego es p2. Cuando el shell se bifurca en p l, su estructura de usuario (incluida la tabla de descriptores de archivo) es una co pia exacta de la del shell, así que éste y p l apuntan a la misma entrada de la tabla de descrip ción de archivo abierto. Cuando termina p l, el descriptor de archivo del shell sigue apuntando a la descripción de archivo abierto que contiene la posición de archivo de p l. Ahora, cuando el shell se bifurca en p 2 , el nuevo hijo hereda en forma automática la posición de archivo, sin que ni él ni el shell tengan que saber siquiera cuál es esa posición. Tabla de descriptores de archivo del padre Tabla de descriptores de archivo del hijo Tabla de descriptores de archivo de un proceso no relacionado Descripción de archivo abierto Posición en archivo FVW ^ Apuntador a nodo-i nodo*i Posición en archivo R/W / Apuntador a nodo-i Modo Cuenta de enlaces Uid Gid Tamaño archivo Tiempos Direcciones de primeros 10 bloques de disco / Indirecc. sencilla ... . ,, Indirecc. triple . Apuntadores a bloques de disco Bloque ^ ^ = de triple . indirección / Bloque de doble indirección Bloque de indirección sencilla Figura 10-33. Relación entre la tabla de descriptores de archivo, la tabla de descrip ción de archivo abierto y la tabla de nodos-i. Sin embargo, si un proceso no relacionado abre el archivo, obfiene su propia entrada de descripción de archivo abierto, con su propia posición en el archivo, que es justo lo que se ne-
RkJQdWJsaXNoZXIy MjI4NDcx