Sistemas operativos modernos
El enfoque opuesto es hacer que el programador primero seleccione el programa grep (sin ar gumentos) y que éste se anuncie diciendo: “Hola, soy grep. Busco patrones en archivos. Por favor, teclee su patrón”. Después de recibir el patrón, grep solicita un nombre de archivo. Lue go pregunta si hay más nombres de archivos. Por último, presenta una sinopsis de lo que hará y pregunta si es correcto. Aunque este tipo de interfaz de usuario podría ser adecuada para no vatos, irrita sobremanera a los programadores experimentados. Lo que ellos quieren es un sir viente, no una niñera. 10.2.2 Interfaces con UNIX Un sistema UNIX puede verse como una especie de pirámide, lo cual se ilustra en la figura lO-l. En la base está el hardware, que consiste en la CPU, memoria, discos, terminales y otros dispositivos. El sistema operativo UNIX se ejecuta sobre el hardware desnudo. Su función es controlar el hardware y proporcionar a todos los programas una interfaz de llamadas al siste ma. Esas llamadas permiten a los programas de usuario crear y administrar procesos, archivos y otros recursos. Interfaz de usuario Interfaz de biblioteca Interfaz de llamadas al sistema Usuarios Programas utilitarios estándar (Shell, editores, compiladores, etc.) Biblioteca estándar {open, close, read, write, fork, etc.) Modo de usuario Sistema operativo UNIX (administración de procesos, administración de memoria, sistema de archivos, E/S, etc.) Modo de kernel Hardware (CPU, memoria, discos, terminales, etc.) Figura 10-1. Capas de un sistema UNIX. Los programas emiten llamadas al sistema colocando los argumentos en registros (o, a ve ces, en la pila) y emitiendo instrucciones de interrupción de sistema (trap) para cambiar del modo de usuario al modo de kernel e iniciar UNIX. Puesto que no hay manera de escribir una instrucción de interrupción de sistema en C, se proporciona una biblioteca, con un procedi miento para cada llamada al sistema. Estos procedimientos se escriben en lenguaje ensambla dor, pero pueden invocarse desde C. Cada uno primero coloca sus argumentos en el lugar apropiado y luego ejecuta la instrucción de interrupción de sistema. Así, para ejecutar la llama da al sistema read, un programa en C puede invocar el procedimiento de biblioteca read. Por cierto, es la interfaz de biblioteca, y no la interfaz de llamadas al sistema, la que especifica PO SIX. En otras palabras, POSIX indica los procedimientos de biblioteca que debe proporcionar
RkJQdWJsaXNoZXIy MjI4NDcx