Sistemas operativos modernos

flujo crudo de caracteres del controlador de la terminal, procesándolo y produciendo lo que se conoce como flujo cocinado de caracteres. En el flujo cocinado ya se ha efectuado una edi­ ción local de la líneas (es decir, se han borrado caracteres y eliminado líneas), los retornos de carro se han hecho corresponder con saltos de línea, y se ha efectuado otro procesamiento es­ pecial. El flujo cocinado se pasa al proceso. Sin embargo, si dicho proceso quiere interactuar cada vez que llega un carácter, puede colocar la línea en modo crudo, con lo que se pasará por alto la disciplina de líneas. La salida funciona de forma similar, expandiendo tabulaciones a espacios, convirtiendo saltos de línea en retornos de carro + saltos de línea, añadiendo caracteres de relleno después de los retornos de carro en las terminales mecánicas lentas, etc. Al igual que las entradas, las salidas pueden pasar por la disciplina de líneas (modo cocinado) o evitarla (modo crudo). El modo crudo es útil sobre todo para enviar datos binarios a otras computadoras por una línea en serie, y para las GUIs. En estos casos no se necesitan las conversiones. La solución de System V, flujos (streams), ideada por Dennis Ritchie, es más general y se muestra en la figura 10-23. (System V también tiene un caché de búfer para los archivos espe­ ciales de bloques, pero dado que es casi idéntico al de BSD no lo mostramos aquí.) La idea bá­ sica de un flujo es que puede conectar un proceso de usuario con un controlador y también insertar módulos de procesamiento en el flujo de forma dinámica, durante la ejecución. En cier­ ta medida, un flujo es el análogo en el kemel de las canalizaciones en el espacio de usuario. Computadora Modo de usuario< Modo de kernels Figura 10-23. Ejemplo de flujos en System V.

RkJQdWJsaXNoZXIy MjI4NDcx