Sistemas operativos modernos
Un flujo siempre tiene una cabeza de flujo en la parte alta y s* conecta con un controlador en la parte baja. Pueden insertarse en el flujo tantos módulos como se necesiten. El procesa miento puede ser bidireccional, por lo que cada módulo podría requerir una sección para leer (del controlador) y una para escribir (al controlador). Cuando un proceso de usuario escribe en un flujo, cierto código en la cabeza de flujo interpreta la llamada al sistema y empaca los da tos en búferes de flujo que se pasan de un módulo a otro en dirección descendente; cada mó dulo realiza las ü'ansformaciones que deba efectuar. Cada módulo mantiene una cola de lectura y una de escritura para que los búferes se procesen en el orden correcto. Los módulos tienen interfaces bien definidas por la infraestructura de flujos, lo cual permite enchufar juntos módu los sin relación entre sí. El ejemplo de la figura 10-23 muestra cómo se usan flujos al utilizar el protocolo TCP de Internet en dos tipos de redes locales distintas, Ethernet y Token Ring. En particular, se ilustra otra característica importante de los flujos: el multiplexaje. Un módulo multiplexor puede to mar un flujo y dividirlo en varios, o tomar varios flujos y fusionarlos en uno solo. En esta con figuración, el módulo IP hace ambas cosas. 10.6 EL SISTEMA DE ARCHIVOS DE UNIX La parte más visible de cualquier sistema operativo, incluido UNIX, es el sistema de archivos. En las secciones que siguen examinaremos las ideas básicas del sistema de archivos de UNIX, las llamadas al sistema y la forma en que se implementa. Algunas de estas ideas provienen de MULTICS, y muchas de ellas fueron copiadas por MS-DOS, Windows y otros sistemas, aun que algunas son exclusivas de UNIX. El diseño de UNIX tiene un interés especial porque ilus tra con claridad el principio de “Lo pequeño es mejor”. Con un mecanismo mínimo y un número muy limitado de llamadas al sistema, UNIX logra ofrecer un sistema de archivos po tente y elegante. 10.6.1 Conceptos fundamentales Un archivo en UNIX es una sucesión de Oo más bytes que contienen información arbitraria. No se hace distinción alguna entre archivos ASCII, archivos binarios o cualquier otro tipo. El sig nificado de los bits contenidos en un archivo es asunto exclusivo del dueño del archivo; al sis tema no le importa. Al principio los nombres de archivo estaban restringidos a 14 caracteres arbitrarios, pero Berkeley UNIX aumentó el límite a 255 caracteres, política que también han adoptado System V y casi todas las demás versiones. Se permiten todos los caracteres ASCII ex cepto NUL en los nombres de archivo, así que un nombre que consiste en tres retornos de carro es un nombre de archivo válido (aunque no muy conveniente). Por convención, muchos programas esperan que los nombres de archivo consistan en un nombre base y una extensión, separados por un punto (que cuenta como carácter). Así, prog.c por lo general es un programa en C, prog.f90 por lo regular es un programa en FORTRAN 90, y prog.o por lo general es un archivo objeto (la salida de un compilador). El sistema operativo
RkJQdWJsaXNoZXIy MjI4NDcx