Llamadas al sistema

Solo disponible en BuenasTareas
  • Páginas : 8 (1880 palabras )
  • Descarga(s) : 0
  • Publicado : 9 de febrero de 2011
Leer documento completo
Vista previa del texto
Llamadas al Sistema para la Manipulación de Procesos
Es el mecanismo usado por una aplicación para solicitar un servicio al sistema operativo. Las llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa que el procesador transfiera el control a un código privilegiado, previamente especificado por el mismo código. Esto permite al código privilegiado especificar donde va aser conectado así como el estado del procesador.
Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB, para poder continuar ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones de código de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, seretorna al proceso original, y continúa su ejecución. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecución de la llamada al sistema y del algoritmo de planificación de CPU.
Generalmente, los sistemas operativos proveen bibliotecas que relacionan los programas de usuario y el resto del sistema operativo, usualmente una biblioteca C como glibc o el runtimede Microsoft C. Esta biblioteca maneja los detalles de bajo nivel para transferir información al kernel y conmutar a modo supervisor, así como cualquier procesamiento de datos o tareas que deba ser realizada en modo supervisor. Idealmente, esto reduce la dependencia entre el sistema operativo y la aplicación, e incrementa su portabilidad.
En los sistemas operativos bajo norma POSIX o similares,algunas llamadas al sistema muy usadas son open, read, write, close, wait, exec, fork, exit y kill. Los sistemas operativos actuales tienen cientos de llamadas, por ejemplo Linux 2.x y FreeBSD tienen más de 300.

Llamadas al sistema Fork
La llamada fork es la única forma de crear un nuevo proceso. Se crea un duplicado exacto del proceso original. Después del fork, el proceso original y la copia(padre e hijo ) siguen caminos independientes. Todas las variables tienen el mismo valor cuando se termina de hacer el fork, pero los sucesivos cambios en los datos de uno de ellos no afectan a los del otro. El código, como no se modifica, es compartido entre el hijo y el padre. La llamada exec permite al proceso hijo ejecutar el comando especificado. En muchos casos, después del fork, el procesohijo necesitará ejecutar diferente código que el padre. Consideremos el caso del shell: se lee un comando del terminal, haciendo uso del fork se crea un proceso hijo y se espera por el hijo para ejecutar el comando y cuando el hijo termina se lee el siguiente comando. Para esperar que el hijo termine, el padre ejecuta waitpid ( otra llamada del sistema ), que indica cuando un proceso hijo haterminado. La ejecución del comando por parte del hijo se hace usando exec. En las siguientes líneas lo vemos de una forma muy simplificada:
while ( TRUE ){
read_command(comando,parametros); /* lee entrada del termianl */
if ( fork() != 0 ){ /* fork del proceso padre */
/* codigo del padre */
waitpid(-1,&status,0); /* espera por la finalizacion del hijo */
}
else{
/* codigo del hijo */execve( comando,parametros,0); /* ejecuta el comando */
}
}
Los procesos de un sistema UNIX tienen una estructura jerárquica, de manera que un proceso (proceso padre) puede crear un nuevo proceso (proceso hijo) y así sucesivamente. Para la realización de aplicaciones con varios procesos, el sistema operativo UNIX proporciona la llamada al sistema1 fork().

Cabecera:
#include
int fork(void);Comportamiento de la llamada:

fork() crea un nuevo proceso exactamente igual (mismo código) al proceso que invoca la función. Ambos procesos continúan su ejecución tras la llamada fork(). En caso de error, la función devuelve el valor -1 y no se crea el proceso hijo. Si no hubo ningún error, el proceso padre (que realizó la llamada) recibe como resultado el pid del proceso hijo que acaba de...
tracking img