elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  programacion en lenguaje C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: programacion en lenguaje C  (Leído 3,537 veces)
Navidad2

Desconectado Desconectado

Mensajes: 6


Ver Perfil
programacion en lenguaje C
« en: 3 Abril 2013, 01:38 am »

TAREA PROGRAMADA #1
El programa que hay que presentar constará de un único archivo fuente de nombre TareaPSos1.c. La correcta compilación de dicho programa, producirá un archivo ejecutable, cuyo nombre será obligatoriamente TareaPSos1. Respetar las mayúsculas/minúsculas de los nombres, si las hubiere. La ejecución del programa creará una serie de procesos que se transmitirán señales entre ellos. En concreto, el árbol de procesos que hay que crear es el siguiente:
Las relaciones paterno-filiales son las indicadas por las líneas sólidas. Una vez construido el arbol, el proceso padre muere y los demás permanecen vivos, bloqueados y sin consumir CPU. En este momento, habremos recuperado el control desde nuestra shell y enviaremos al procesoA una señal SIGTERM. La señal se va a ir transmitiendo a otros procesos según el esquema que se indicará más abajo.
Transcurridos tres segundos, el proceso A comprobará cuántos procesos siguen vivos, imprimirá un dibujo con la situación por la pantalla, ejecutará una orden ps -fu usuario que sirva de comprobación y acabará, no dejando ningún proceso vivo. En el siguiente dibujo, se observa cómo se propagan las señales:
Si un proceso recibe la señal SIGTERM y no es un proceso del final (no es ni G, ni H, ni I, ni J) puede hacer una de estas cuatro cosas:
1. No enviar la señal a ningún proceso.
2. Enviar la señal al proceso situado debajo a la izquierda.
3. Enviar la señal al proceso situado debajo a la derecha.
4. Enviar la señal a ambos procesos.
El que realice una u otra acción va a depender del reloj del sistema. Consultará los microsegundos marcados por el reloj del sistema mediante una llamada gettimeofday. Dividirá el valor entre cuatro y obtendrá el resto. Dependiendo del valor del resto de la división (0, 1, 2 ó 3) se realizará la acción correspondiente de la lista anterior.
Para que el proceso A sepa si siguen vivos E, H o I, puede usar la llamada al sistema waitpid en su versión no bloqueante. Para saber qué ha ocurrido con los procesos de la hilada B-D-G, se procederá así:
1. Si A no mandó la señal a B, sabe que los tres están en pie.
2. Si A mandó la señal a B, hará un wait bloqueante y B le dirá en su código de retorno cuántos nodos de la hilada B-D-G siguen en pie. Para que B sepa cuántos nodos quedan se hace lo mismo, pero ahora el papel de A lo ocupa B y el de B lo ocupa D.
En el caso de la hilada C-F-J, se procede de modo equivalente.
Restricciones
 Se deberán usar llamadas al sistema siempre que sea posible, a no ser que se especifique lo contrario.
 No está permitido usar la función de biblioteca system, salvo indicación explícita en el enunciado de la práctica.
 Se ha de lograr que al hacer un ps aparezca por la pantalla en lugar de TareaPSos1, el nombre de cada proceso: A, B, C, etc.
 No se puede suponer que los PIDs de los procesos de una hilada van a aparecer consecutivos. Puestos en plan exquisito, ni siquiera podemos suponer que estarán ordenados de menor a mayor (puede ocurrir que se agoten los PIDs y retome la cuenta partiendo de cero).
 No está permitido el uso de ficheros, tuberías u otro mecanismo externo para transmitir información entre los procesos.


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: programacion en lenguaje C
« Respuesta #1 en: 3 Abril 2013, 01:44 am »

Citar
Reglas del subforo:

    Este no es un subforo donde se soliciten tareas, sino un lugar donde resolver dudas.

¡Un saludo!


En línea

Regístrate en
85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: programacion en lenguaje C
« Respuesta #2 en: 4 Abril 2013, 03:04 am »

ya directamente nos tiran el problema sin saludar ni despedirse  :laugh:
En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Lenguaje de programacion
Scripting
Geormarsch 4 4,450 Último mensaje 26 Octubre 2011, 01:08 am
por Geormarsch
lenguaje de programacion
Programación General
kakashi20 1 2,968 Último mensaje 2 Enero 2013, 05:06 am
por nelson dias
lenguaje de programacion en español existira alguno ?
Foro Libre
Weeken 5 3,838 Último mensaje 25 Abril 2013, 22:00 pm
por WHK
Un lenguaje de programación independiente.
Programación General
on11ce 5 3,363 Último mensaje 14 Abril 2013, 23:41 pm
por Mitgus
Cunto tiempo te costo dominar una lenguaje programación « 1 2 »
Foro Libre
Blaster 10 6,617 Último mensaje 14 Junio 2013, 23:31 pm
por anonimo12121
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines