ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Procesos Linux - exec y fork


Enviado por   •  12 de Julio de 2014  •  Ensayos  •  913 Palabras (4 Páginas)  •  189 Visitas

Página 1 de 4

Procesos Linux - exec y fork

En esta entrada me gustaría hablar acerca de la creación de procesos con C cuando trabajamos con Linux. En mi caso trabajo con Debian. Debo dejar claro que hablamos de PROCESOS y no de hilos. Acerca de los hilos hablaré en entradas posteriores. En esta entrada hablaré acerca de como se crean nuevos procesos mediante código en C. De las dos posibilidades que existen. No me pararé en exceso a explicar en detalle qué es un proceso, cambios de contexto de procesos, la tabla de procesos, imagen de memoria, o el ciclo de vida de un proceso. Estos temas cabe mencionarlos, pero como ya he dicho no haré una explicación detallada acerca de ellos.

Para comenzar me gustaría hacer una explicación acerca de los procesos. Comenzando por la definición de un proceso: "Un proceso es un programa en ejecución". El proceso esta formado por el código del programa y el conjunto de datos asociados a la ejecución del programa. El proceso además posee una imagen de memoria, esto es el espacio de memoria en el que esta autorizado. La imagen de memoria puede estar referida en memoria virtual o memoria física. Además en cuanto al ciclo de vida hablaré acerca del que se tiene en cuenta en la planificación a corto plazo (ciclo de vida simple). Esta planificación es en la que se decide el siguiente proceso a ejecutar (FIFO, Round Robin, SJF). Este ciclo de vida posee 4 estados: Listo para ejecutarse, en ejecución, bloqueado y fin.

Imagen: Basada en diapositivas Sistemas Operativos UC3M. TEMA 2

Podemos tener en ejecución tantos procesos como procesadores tenga nuestro equipo. El fin de tiempo en ejecución lo decide el algoritmo de planificación que utilice nuestro sistema operativo. Este expulsión del procesador provoca un cambio de contexto. Ya vimos en una entrada anterior que nuestro código en ensamblador tiene mas instrucciones, por tanto un cambio de contexto se puede producir en mitad de una instrucción (por ejemplo una suma).

Una vez visto esto compredemos algo mejor el funcionamiento de los procesos en nuestro sistema. Aunque esta sea una imagen demasiado general y alejada siempre es conveniente tener una mínima idea acerca de esto (el tema del cambio de contexto es importante en la concurrencia). En esta entrada estamos hablando de procesos pesados (programa con un solo hilo de ejecución), pues en procesos ligeros la cosa cambia.

Los nuevos procesos obtienen los recursos directamente del sistema operativo o el proceso padre debe compartir recursos. Acerca de los nuevos procesos en Linux, debemos diferenciar entre: crear un nuevo proceso y ejecutar nuevos programas.

La llamada al sistema que empleamos para crear un nuevo proceso se denomina fork(). La llamada fork() crea una copia casi identica del proceso padre (se copia todo el código) y continúan ejecutandose en paralelo. El proceso padre recibe de fork() el pid del hijo, mientras que el hijo recibe un 0. El hijo además hereda recursos del padre (ficheros, abiertos, estado de las variables, etc...) , sin embargo hay

...

Descargar como (para miembros actualizados)  txt (5.5 Kb)  
Leer 3 páginas más »
Disponible sólo en Clubensayos.com