diff --git a/README.md b/README.md index 0ea29ae1..3de8d829 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,11 @@ Repositorio para el seguimiento y evaluación de la asignatura Programación de ## Contenidos -- [UA1 - Programación Multiproceso](https://github.com/Lope-de-Vega-Test/psp-22-23/tree/main/UA1) -- [UA2 - Programación Multihilo](https://github.com/Lope-de-Vega-Test/psp-22-23/tree/main/UA2) -- [UA3 - Programación de comunicaciones en red](https://github.com/Lope-de-Vega-Test/psp-22-23/tree/main/UA3) -- [UA4 - Desarrollo de Servicios en Red](https://github.com/Lope-de-Vega-Test/psp-22-23/tree/main/UA4) -- [UA5 - Técnicas de Programación segura](https://github.com/Lope-de-Vega-Test/psp-22-23/tree/main/UA5) +- [UA1 - Programación Multiproceso](https://github.com/i12vecaj/psp-24-25/tree/main/UA1) +- [UA2 - Programación Multihilo](https://github.com/i12vecaj/psp-24-25/tree/main/UA2) +- [UA3 - Programación de comunicaciones en red](https://github.com/i12vecaj/psp-24-25/tree/main/UA3) +- [UA4 - Desarrollo de Servicios en Red](https://github.com/i12vecaj/psp-24-25/tree/main/UA4) +- [UA5 - Técnicas de Programación segura](https://github.com/i12vecaj/psp-24-25/tree/main/UA5) ## Requerimientos Básicos diff --git a/UA1/README.md b/UA1/README.md index 311f9b6d..745633de 100644 --- a/UA1/README.md +++ b/UA1/README.md @@ -67,7 +67,7 @@ La evaluación de esta unidad didáctica estará basada en la entrega de las tar ### **T1 - Tarea 1 - Programación de Procesos en C** ##### **Criterios a), e), f), g), h)** ``` -Fecha de Entrega: 25/09/2024 - 14:00:00 +Fecha de Entrega: 01/10/2024 - 14:00:00 ``` PROCESOS. Crea un único programa en C que implemente las siguientes Funcionalidades Requeridas (FRs): * FR1: cree un proceso (existirán en realidad dos procesos, uno padre y el otro hijo) - 1 punto @@ -125,7 +125,7 @@ Crea un programa Java que implemente las siguientes Funcionalidades Requeridas ( ### **EX1 - Examen UA1 - Programación Multiproceso** ##### **Criterios a), b), c), d), e) f), g) y h)** ``` -Fecha de Examen: xx/10/2024 - 17:45:00 +Fecha de Examen: 16/10/2024 - 16:45:00 ``` El examen constará de dos partes: * Una primera parte de teoría, centrada sobre todo en los criterios de evaluación b), c) y d). Serán unas preguntas cortas, donde deberéis responder utilizando vuestras propias palabras. Para esta parte de teoría daremos un tiempo fijo y no permitiré el acceso a internet salvo para subir el resultado al repositorio. diff --git a/UA1/ejemplos/c/ejemWriteRead.c b/UA1/ejemplos/c/ejemWriteRead.c deleted file mode 100644 index a30bb37d..00000000 --- a/UA1/ejemplos/c/ejemWriteRead.c +++ /dev/null @@ -1,42 +0,0 @@ -#include -#include -#include -void main(void) -{ - char saludo[] = "Un saludo!!!\n"; - char buffer[10]; - int fd, bytesleidos; - - fd=open("texto.txt",1);//fichero se abre solo para escritura - if( fd == -1 ) - { - printf("ERROR AL ABRIR EL FICHERO...\n"); - exit(-1); - } - - printf("Escribo el saludo...\n"); - write(fd,saludo, strlen(saludo)); - close(fd); //cierro el fichero - - fd=open("texto.txt",0);//el fichero se abre solo para lectura - printf("Contenido del Fichero: \n"); - - //leo bytes de uno en uno y lo guardo en buffer - bytesleidos= read(fd, buffer, 1); - while (bytesleidos!=0){ - printf("%1c", buffer[0]); //pinto el byte leido - bytesleidos= read(fd, buffer, 1);//leo otro byte - } - close(fd); - -} -/* -administrador@ubuntu1:~$ gcc ejemWriteRead.c -o ejemWriteRead -administrador@ubuntu1:~$ ./ejemWriteRead -Escribo el saludo... -Contenido del Fichero: -Un saludo!!! -administrador@ubuntu1:~$ - -*/ - diff --git a/UA1/ejemplos/c/ejemplo1Fork.c b/UA1/ejemplos/c/ejemplo1Fork.c deleted file mode 100644 index 23460ff3..00000000 --- a/UA1/ejemplos/c/ejemplo1Fork.c +++ /dev/null @@ -1,41 +0,0 @@ -#include -#include -#include -void main() { - pid_t pid, Hijo_pid; - pid = fork(); - - if (pid == -1 ) //Ha ocurrido un error - { - printf("No se ha podido crear el proceso hijo..."); - exit(-1); - } - if (pid == 0 ) //Nos encontramos en Proceso hijo - { - printf("Soy el proceso hijo \n\t Mi PID es %d, El PID de mi padre es: %d.\n", - getpid(), getppid() ); - } - else //Nos encontramos en Proceso padre - { - Hijo_pid = wait(NULL); //espera la finalización del proceso hijo - printf("Soy el proceso padre:\n\t Mi PID es %d, El PID de mi padre es: %d.\n\t Mi hijo: %d terminó.\n", getpid(), getppid(), pid); - } - exit(0); -} - -/* -mj@mj-ubuntu12:~/Escritorio/ProgramasC$ gcc ejemplo1Fork.c -o ejemplo1Fork -mj@mj-ubuntu12:~/Escritorio/ProgramasC$ ./ejemplo1Fork -Soy el proceso hijo - Mi PID es 4037, El PID de mi padre es: 4036. -Soy el proceso padre: - Mi PID es 4036, El PID de mi padre es: 3586. - Mi hijo: 4037 terminó. -mj@mj-ubuntu12:~/Escritorio/ProgramasC$ ps - PID TTY TIME CMD - 3586 pts/2 00:00:01 bash - 4044 pts/2 00:00:00 ps -mj@mj-ubuntu12:~/Escritorio/ProgramasC$ - - -*/ diff --git a/UA1/ejemplos/c/ejemplo1_2Fork.c b/UA1/ejemplos/c/ejemplo1_2Fork.c deleted file mode 100644 index eb398eea..00000000 --- a/UA1/ejemplos/c/ejemplo1_2Fork.c +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include -#include -//ABUELO-HIJO-NIETO -void main() { - pid_t pid, Hijo_pid,pid2,Hijo2_pid; - - pid = fork(); //Soy el Abuelo, creo a Hijo - - if (pid == -1 ) //Ha ocurrido un error - { - printf("No se ha podido crear el proceso hijo..."); - exit(-1); - } - - if (pid == 0 ) //Nos encontramos en Proceso hijo { - { - pid2 = fork();//Soy el Hijo, creo a Nieto - switch(pid2) - { - case -1: // error - printf("No se ha podido crear el proceso hijo - en el HIJO..."); - exit(-1); - break; - case 0: // proceso hijo - printf("\t\tSoy el proceso NIETO %d; Mi padre es = %d \n", - getpid(), getppid()); - break; - default: // proceso padre - Hijo2_pid=wait(NULL); - printf("\tSoy el proceso HIJO %d, Mi padre es: %d.\n", - getpid(), getppid()); - printf("\tMi hijo: %d termin.\n", Hijo2_pid); - } - - } - - else //Nos encontramos en Proceso padre - { - Hijo_pid = wait(NULL); //espera la finalizacin del proceso hijo - printf("Soy el proceso ABUELO: %d, Mi HIJO: %d termin.\n", - getpid(), pid); - } - exit(0); -} diff --git a/UA1/ejemplos/c/ejemplo2Fork.c b/UA1/ejemplos/c/ejemplo2Fork.c deleted file mode 100644 index 80c93752..00000000 --- a/UA1/ejemplos/c/ejemplo2Fork.c +++ /dev/null @@ -1,34 +0,0 @@ -#include -#include -#include -#include - -int main(int argc, char *argv[]) -{ - pid_t pid; - int status; - - if ( (pid=fork()) == 0 ) - { /* hijo */ - printf("Soy el hijo (%d, hijo de %d)\n", getpid(),getppid()); - } - else - { /* padre */ - wait(&status); - printf("Soy el padre (%d, hijo de %d)\n", getpid(),getppid()); - } - - return 0; -} -/* -mj@ubuntu-mj:~$ gcc ejemplo2Fork.c -o ejemplo2Fork -mj@ubuntu-mj:~$ ./ejemplo2Fork -Soy el hijo (3112, hijo de 3111) -Soy el padre (3111, hijo de 1923) -mj@ubuntu-mj:~$ ps - PID TTY TIME CMD - 1923 pts/0 00:00:00 bash - 3113 pts/0 00:00:00 ps -mj@ubuntu-mj:~$ - -*/ diff --git a/UA1/ejemplos/c/ejemplo3Fork.c b/UA1/ejemplos/c/ejemplo3Fork.c deleted file mode 100644 index b49cc61f..00000000 --- a/UA1/ejemplos/c/ejemplo3Fork.c +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include -#include -#include - -void main(void) -{ - pid_t pid; - int status; - - pid = fork(); - switch(pid) - { - case -1: /* error del fork() */ - perror("fork"); - break; - case 0: /* proceso hijo */ - printf("Este es el Proceso Hijo %d; padre = %d \n", getpid(), getppid()); - break; - default: /* padre */ - wait(&status); - printf("Este es el Proceso Padre %d; Mi padre es = %d \n", getpid(), getppid()); - } -} -/* -mj@ubuntu-mj:~$ gcc ejemplo3Fork.c -o ejemplo3Fork -mj@ubuntu-mj:~$ ./ejemplo3Fork -Este es el Proceso Hijo 3130; padre = 3129 -Este es el Proceso Padre 3129; Mi padre es = 2920 -mj@ubuntu-mj:~$ sh -$ exit -mj@ubuntu-mj:~$ ps - PID TTY TIME CMD - 2920 pts/1 00:00:00 bash - 3132 pts/1 00:00:00 ps -mj@ubuntu-mj:~$ - -*/ diff --git a/UA1/ejemplos/c/ejemplo4Fork.c b/UA1/ejemplos/c/ejemplo4Fork.c deleted file mode 100644 index 61c3658c..00000000 --- a/UA1/ejemplos/c/ejemplo4Fork.c +++ /dev/null @@ -1,48 +0,0 @@ -#include -#include -#include - -int main(int argc, char *argv[]) -{ - pid_t pid1, pid2; - int status1, status2; - - if ( (pid1=fork()) == 0 ) - { /* hijo (1a generacion) = padre */ - if ( (pid2=fork()) == 0 ) - { /* hijo (2a generacion) = nieto */ - printf("Soy el nieto (%d, hijo de %d)\n", -getpid(), getppid()); - } - else - { /* padre (2a generacion) = padre */ - -wait(&status2); - printf("Soy el padre (%d, hijo de %d)\n", -getpid(), getppid()); - } - } - else - { /* padre (1a generacion) = abuelo */ - wait(&status1); - printf("Soy el abuelo (%d, hijo de %d)\n", getpid(), -getppid()); - } - - return 0; -} -/* -mj@ubuntu-mj:~$ gcc ejemplo4Fork.c -o ejemplo4Fork -mj@ubuntu-mj:~$ ./ejemplo4Fork -Soy el nieto (3161, hijo de 3160) -Soy el padre (3160, hijo de 3159) -Soy el abuelo (3159, hijo de 2920) -mj@ubuntu-mj:~$ ps - PID TTY TIME CMD - 2920 pts/1 00:00:00 bash - 3162 pts/1 00:00:00 ps -mj@ubuntu-mj:~$ - -*/ - - diff --git a/UA1/ejemplos/c/ejemploExec.c b/UA1/ejemplos/c/ejemploExec.c deleted file mode 100644 index dbdb77fe..00000000 --- a/UA1/ejemplos/c/ejemploExec.c +++ /dev/null @@ -1,9 +0,0 @@ -#include -#include -void main() -{ - printf("Ejemplo de uso de exec():"); - printf("Los archivos en el directorio son:\n"); - execl("/bin/ls", "ls", "-l",(char *)NULL); - printf(" Esto no se ejecuta !!!\n"); -} diff --git a/UA1/ejemplos/c/ejemploForkPipe.c b/UA1/ejemplos/c/ejemploForkPipe.c deleted file mode 100644 index 07b32bee..00000000 --- a/UA1/ejemplos/c/ejemploForkPipe.c +++ /dev/null @@ -1,103 +0,0 @@ -#include -#include -#include -#include -//ABUELO-HIJO-NIETO -void main() { - pid_t pid, Hijo_pid,pid2,Hijo2_pid; - - int fd1[2]; //padre-hijo - int fd2[2]; //hijo-padre - - char saludoAbuelo[]="Saludos del Abuelo.\0"; - char saludoPadre[]= "Saludos del Padre..\0"; - char saludoHijo[]= "Saludos del Hijo...\0"; - char saludoNieto[]= "Saludos del Nieto..\0"; - - char buffer[80]=""; - - pipe(fd1); //pipe para comunicacin de padre a hijo - pipe(fd2); //pipe para comunicacin de hijo a padre - - pid = fork(); //Soy el Abuelo, creo a Hijo - - if (pid == -1 ) //Ha ocurrido un error - { - printf("No se ha podido crear el proceso hijo..."); - exit(-1); - } - - if (pid == 0 ) //Nos encontramos en Proceso hijo { - { - pid2 = fork();//Soy el Hijo, creo a Nieto - switch(pid2) - { - case -1: // error - printf("No se ha podido crear el proceso hijo en el HIJO..."); - exit(-1); - break; - case 0: // proceso hijo - //NIETO RECIBE - close(fd2[1]);//cierra el descriptor de entrada - read(fd2[0], buffer, sizeof(buffer)); //leo el pipe - printf("\t\tNIETO RECIBE mensaje de su padre: %s\n",buffer); - - //NIETO ENVIA - printf("\t\tNIETO ENVIA MENSAJE a su padre...\n"); - close(fd1[0]); - write(fd1[1], saludoNieto, strlen(saludoNieto)); - - break; - default: // proceso padre - //HIJO RECIBE - close(fd1[1]);//cierra el descriptor de entrada - read(fd1[0], buffer, sizeof(buffer)); //leo el pipe - printf("\tHIJO recibe mensaje de ABUELO: %s\n",buffer); - - //HIJO ENVIA a su hijo - close(fd2[0]); - write(fd2[1], saludoPadre, strlen(saludoPadre));//escribo en pipe - Hijo2_pid=wait(NULL); //espero al hijo - - //RECIBE de su hijo - close(fd1[1]);//cierra el descriptor de entrada - read(fd1[0], buffer, sizeof(buffer)); //leo el pipe - printf("\tHIJO RECIBE mensaje de su hijo: %s\n",buffer); - - //HIJO ENVIA a su PADRE - printf("\tHIJO ENVIA MENSAJE a su padre...\n",buffer); - close(fd2[0]); - write(fd2[1], saludoHijo, strlen(saludoHijo));//escribo en pipe - - } - - } - - else //Nos encontramos en Proceso padre - { - //PADRE ENVIA - printf("ABUELO ENVIA MENSAJE AL HIJO...\n"); - close(fd1[0]); - write(fd1[1], saludoAbuelo, strlen(saludoAbuelo));//escribo en pipe - Hijo_pid = wait(NULL); //espera la finalizacin del proceso hijo - - //PADRE RECIBE - close(fd2[1]);//cierra el descriptor de entrada - read(fd2[0], buffer, sizeof(buffer)); //leo el pipe - printf("El ABUELO RECIBE MENSAJE del HIJO: %s\n", buffer); - - } - exit(0); -} -/* -administrador@ubuntu1:~$ gcc ejemploForkPipe.c -o ejemploForkPipe -administrador@ubuntu1:~$ ./ejemploForkPipe -ABUELO ENVIA MENSAJE AL HIJO... - HIJO recibe mensaje de ABUELO: Saludos del Abuelo. - NIETO RECIBE mensaje de su padre: Saludos del Padre.. - NIETO ENVIA MENSAJE a su padre... - HIJO RECIBE mensaje de su hijo: Saludos del Nieto.. - HIJO ENVIA MENSAJE a su padre... -El ABUELO RECIBE MENSAJE del HIJO: Saludos del Hijo... - -*/ diff --git a/UA1/ejemplos/c/ejemploPadres.c b/UA1/ejemplos/c/ejemploPadres.c deleted file mode 100644 index 500a58b3..00000000 --- a/UA1/ejemplos/c/ejemploPadres.c +++ /dev/null @@ -1,27 +0,0 @@ -//#include -#include -#include - -void main(void) -{ - pid_t id_proceso; - pid_t id_padre; - - id_proceso = getpid(); - id_padre = getppid(); - - printf("Identificador de este proceso: %d\n", id_proceso); - printf("Identificador del proceso padre: %d\n", id_padre); -} -/* -mj@ubuntu-mj:~$ gcc ejemploPadres.c -o ejemploPadres -mj@ubuntu-mj:~$ ./ejemploPadres -Identificador de este proceso: 2833 -Identificador del proceso padre: 1923 -mj@ubuntu-mj:~$ ps - PID TTY TIME CMD - 1923 pts/0 00:00:00 bash - 2834 pts/0 00:00:00 ps -mj@ubuntu-mj:~$ - -*/ diff --git a/UA1/ejemplos/c/ejemploPipe1.c b/UA1/ejemplos/c/ejemploPipe1.c deleted file mode 100644 index 74568048..00000000 --- a/UA1/ejemplos/c/ejemploPipe1.c +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include -#include -int main() -{ - int fd[2]; - char buffer[30]; - pid_t pid; - - pipe(fd); - - pid=fork(); - - switch(pid) { - case -1 : //ERROR - printf("NO SE HA PODIDO CREAR HIJO..."); - exit(-1); - break; - case 0 : //HIJO - printf("El HIJO escribe en el pipe...\n"); - write(fd[1], "Hola papi", 10); - break; - default : //PADRE - wait(NULL); - printf("El PADRE lee del pipe...\n"); - read(fd[0], buffer, 10); - printf("\tMensaje leido: %s\n",buffer); - break; - } -} -/* -//con wait(NULL) antes -administrador@ubuntu1:~$ gcc ejemploPipe1.c -o ejemploPipe1 -administrador@ubuntu1:~$ ./ejemploPipe1 -El HIJO escribe en el pipe... -El PADRE lee del pipe... - Mensaje leido: Hola papi -administrador@ubuntu1:~$ - -//con wait(NULL) al funal -administrador@ubuntu1:~$ gcc ejemploPipe1.c -o ejemploPipe1 -administrador@ubuntu1:~$ ./ejemploPipe1 -El PADRE lee del pipe... -El HIJO escribe en el pipe... - Mensaje leido: Hola papi - -*/ diff --git a/UA1/ejemplos/c/ejemploPipe2.c b/UA1/ejemplos/c/ejemploPipe2.c deleted file mode 100644 index 21e813e8..00000000 --- a/UA1/ejemplos/c/ejemploPipe2.c +++ /dev/null @@ -1,44 +0,0 @@ -#include -#include -#include -#include -int main() -{ - int descF[2]; - char buffer[30]; - pid_t pid; - - pipe(descF); - - pid=fork(); - - switch(pid) { - case -1 : //ERROR - printf("NO SE HA PODIDO CREAR HIJO..."); - exit(-1); - break; - case 0 : //HIJO - printf("El HIJO escribe en el pipe...\n"); - write(descF[1], "Hola papi", 10); - break; - default : //PADRE - wait(NULL); - printf("El PADRE lee del pipe...\n"); - read(descF[0], buffer, 10); - printf("\tMensaje leido: %s\n",buffer); - - break; - } -} -/* -//con wait(NULL) antes -administrador@ubuntu1:~$ gcc ejemploPipe1.c -o ejemploPipe1 -administrador@ubuntu1:~$ ./ejemploPipe1 -El HIJO escribe en el pipe... -El PADRE lee del pipe... - Mensaje leido: Hola papi -administrador@ubuntu1:~$ - - - -*/ diff --git a/UA1/ejemplos/c/ejemploPipe3-2.c b/UA1/ejemplos/c/ejemploPipe3-2.c deleted file mode 100644 index 83b43e73..00000000 --- a/UA1/ejemplos/c/ejemploPipe3-2.c +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include -#include -#include -int main(void) -{ -//informacion fluye de hijo a padre - int fd[2]; - pid_t pid; - - char saludoHijo[]="Hola papi.\0"; - char buffer[80]; - - pipe(fd); //creo pipe - pid=fork(); //creo proceso - - switch(pid) { - case -1 : //ERROR - printf("NO SE HA PODIDO CREAR HIJO..."); - exit(-1); - case 0 : //HIJO - //HIJO ENVIA - printf("\tEl HIJO envia algo al pipe.\n"); - close(fd[0]); - write(fd[1], saludoHijo, strlen(saludoHijo)); //escribo en pipe - break; - default : //PADRE - wait(NULL); //espero al proceso hijo - //PADRE RECIBE - close(fd[1]);//cierra el descriptor de salida - read(fd[0], buffer, sizeof(buffer));//leo el pipe - printf("El PADRE recibe algo del pipe: %s\n", buffer); - break; - } - return 0; -} -/* -administrador@ubuntu1:~$ gcc ejemploPipe3-2.c -o ejemploPipe3-2 -administrador@ubuntu1:~$ ./ejemploPipe3-2 - El HIJO envia algo al pipe. -El PADRE recibe algo del pipe: Hola papi. -administrador@ubuntu1:~$ - - - -*/ - diff --git a/UA1/ejemplos/c/ejemploPipe3.c b/UA1/ejemplos/c/ejemploPipe3.c deleted file mode 100644 index d6b40415..00000000 --- a/UA1/ejemplos/c/ejemploPipe3.c +++ /dev/null @@ -1,45 +0,0 @@ -#include -#include -#include -#include -//informacion de padre a hijo -int main(void) -{ - int fd[2]; - pid_t pid; - char saludoPadre[]="Buenos dias hijo.\0"; - char buffer[80]; - - pipe(fd); //creo pipe - pid=fork(); //creo proceso - - switch(pid) { - case -1 : //ERROR - printf("NO SE HA PODIDO CREAR HIJO..."); - exit(-1); - case 0 : //HIJO RECIBE - close(fd[1]);//cierra el descriptor de entrada - read(fd[0], buffer, sizeof(buffer)); //leo el pipe - printf("\tEl HIJO recibe algo del pipe: %s\n",buffer); - - break; - default ://PADRE ENVIA - close(fd[0]); - write(fd[1], saludoPadre, strlen(saludoPadre));//escribo en pipe - printf("El PADRE ENVIA MENSAJE AL HIJO...\n"); - wait(NULL); //espero al proceso hijo - break; - } - return 0; -} -/* -administrador@ubuntu1:~$ gcc ejemploPipe3.c -o ejemploPipe3 -administrador@ubuntu1:~$ ./ejemploPipe3 -El PADRE ENVIA MENSAJE AL HIJO... - El HIJO recibe algo del pipe: Buenos dias hijo. -administrador@ubuntu1:~$ - - - -*/ - diff --git a/UA1/ejemplos/c/ejemploSystem.c b/UA1/ejemplos/c/ejemploSystem.c deleted file mode 100644 index ae91fe04..00000000 --- a/UA1/ejemplos/c/ejemploSystem.c +++ /dev/null @@ -1,12 +0,0 @@ -#include -#include -void main() -{ - printf("Ejemplo de uso de system():"); - printf("\n\tListado del directorio actual y envio a un fichero:"); - printf("%d",system("ls > ficsalida")); - printf("\n\tAbrimos con el gedit el fichero..."); - printf("%d",system("gedit ficsalida")); - printf("\n\tEste comando es errneo: %d",system("ged")); - printf("\nFin de programa....\n"); -} diff --git a/UA1/ejemplos/c/fifocrea.c b/UA1/ejemplos/c/fifocrea.c deleted file mode 100644 index 721b99d6..00000000 --- a/UA1/ejemplos/c/fifocrea.c +++ /dev/null @@ -1,31 +0,0 @@ -//fifocrea.c -#include -#include -#include - -int main(void) -{ - int fp; - int p, bytesleidos; - char saludo[] = "Un saludo!!!\n", buffer[10]; - - p=mkfifo("FIFO2", S_IFIFO|0666);//permiso de lectura y escritura - - if (p==-1) { - printf("HA OCURRIDO UN ERROR...\n"); - exit(0); - } - - while(1) { - fp = open("FIFO2", 0); - bytesleidos= read(fp, buffer, 1); - printf("OBTENIENDO Información..."); - while (bytesleidos!=0){ - printf("%1c", buffer[0]); //leo un caracter - bytesleidos= read(fp, buffer, 1);//leo otro byte - } - close(fp); - } - return(0); -} - diff --git a/UA1/ejemplos/c/fifoescribe.c b/UA1/ejemplos/c/fifoescribe.c deleted file mode 100644 index 79540272..00000000 --- a/UA1/ejemplos/c/fifoescribe.c +++ /dev/null @@ -1,20 +0,0 @@ -//fifoescribe2.c -#include -#include -#include - -int main() -{ - int fp; - char saludo[] = "Un saludo!!!\n"; - fp = open("FIFO2", 1); - - if(fp == -1) { - printf("ERROR AL ABRIR EL FICHERO..."); - exit(1); - } - printf("Mandando información al FIFO...\n"); - write(fp,saludo, strlen(saludo)); - close(fp); - return 0; -} diff --git a/UA1/ejemplos/c/procesosActivos.c b/UA1/ejemplos/c/procesosActivos.c deleted file mode 100644 index eaa6875e..00000000 --- a/UA1/ejemplos/c/procesosActivos.c +++ /dev/null @@ -1,10 +0,0 @@ -#include -#include -#include -void main() { - printf ("Lista de procesos\n"); - if (execl ("/bin/ps", "ps", "-f", (char *)NULL) < 0) - printf("Error en exec %d\n", errno); - else - printf ("Fin de la lista de procesos\n"); -} diff --git a/UA1/ejemplos/c/sigkill.c b/UA1/ejemplos/c/sigkill.c deleted file mode 100644 index 63097837..00000000 --- a/UA1/ejemplos/c/sigkill.c +++ /dev/null @@ -1,79 +0,0 @@ -#include -#include -#include -#include -// To avoid WARNINGS -#include -#include -#include -#include - -int contador_padre = 0; -bool end = false; - -// Gestion de senyales en proceso padre -void gestion_padre (int segnal) -{ - contador_padre++; - switch(segnal) - { - case SIGUSR1: - printf ("\t...Padre recibe senyal SIGUSR1 (%d) (contador padre: %d)", segnal, contador_padre); - break; - - case SIGTERM: - printf ("\t...Padre recibe senyal SIGTERM (%d) (contador padre: %d)", segnal, contador_padre); - printf ("\n\n\t\t\tOh no! It's TIME TO DIE!\n\n"); - end=true; - break; - - default: // JIC - printf ("\tPadre recibe senyal ... %d (contador padre: %d) \n", segnal, contador_padre); - break; - } -} - - -int main () -{ - int iterations = 3; - int pid_padre, pid_hijo; - - pid_padre = getpid (); - pid_hijo = fork (); // Creamos el Proceso Hijo - - switch (pid_hijo) - { - case -1: - printf ("Error al crear el proceso hijo...\n"); - exit (-1); - - case 0: // Proceso Hijo - for(int i=0; i -#include -#include -#include -/*-------------------------------------------*/ -/* gestin de seales en proceso padre */ -void manejador( int segnal ) -{ - printf("Hijo recibe seal..%d\n", segnal); -} -/*-------------------------------------------*/ -int main() -{ - int pid_hijo; - pid_hijo = fork(); //creamos hijo - - switch(pid_hijo) - { - case -1: - printf( "Error al crear el proceso hijo...\n"); - exit( -1 ); - case 0: //HIJO - signal( SIGUSR1, manejador); //MANEJADOR DE SEAL EN HIJO - while(1) { - }; - break; - default: //PADRE envia 2 seales - sleep(1); - kill(pid_hijo, SIGUSR1);//ENVIA SEAL AL HIJO - sleep(1); - kill(pid_hijo, SIGUSR1);//ENVIA SEAL AL HIJO - sleep(1); - break; - } - return 0; -} diff --git a/UA1/ejemplos/c/sincronizar.c b/UA1/ejemplos/c/sincronizar.c deleted file mode 100644 index 135ed4df..00000000 --- a/UA1/ejemplos/c/sincronizar.c +++ /dev/null @@ -1,73 +0,0 @@ -#include -#include -#include -#include -// To avoid WARNINGS -#include -#include -#include - -int contador_padre = 0; -int contador_hijo = 0; - -// Gestion de senyales en proceso padre -void gestion_padre (int segnal) -{ - contador_padre++; - printf ("\t...Padre recibe senyal..%d (contador padre: %d) \n", segnal, contador_padre); -} - -// Gestion de senyales en proceso hijo */ -void gestion_hijo (int segnal) -{ - contador_hijo++; - printf ("\t...Hijo recibe senyal..%d (contador hijo: %d) \n", segnal, contador_hijo); -} - -int main () -{ - int iterations = 3; - int pid_padre, pid_hijo; - - pid_padre = getpid (); - pid_hijo = fork (); // Creamos el Proceso Hijo - - switch (pid_hijo) - { - case -1: - printf ("Error al crear el proceso hijo...\n"); - exit (-1); - - case 0: // Proceso Hijo - // tratamiento de la senyal en proceso hijo - signal (SIGUSR1, gestion_hijo); - while (contador_hijo < iterations) - { // bucle infinito - sleep(1); - kill (pid_padre, SIGUSR1); // Proceso Hijo enva senyal al Proceso Padre - printf ("Proceso Hijo esperando senyal ..."); - pause(); // Proceso Hijo espera hasta que llegue una senyal de respuesta - } - break; - - default: // Proceso Padre - // tratamiento de la senyal en proceso padre - signal (SIGUSR1, gestion_padre); - while (contador_padre < iterations) - { - printf ("Proceso Padre esperando senyal ... "); - pause(); // Proceso Padre espera hasta recibir una senyal del hijo - sleep(1); - kill (pid_hijo, SIGUSR1); // Proceso Padre enva senyal al Proceso Hijo - } - break; - } - - return 0; -} - - - - - - diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/hilos/HiloSimple1.java b/UA1/ejemplos/java/src/com/ceslopedevega/hilos/HiloSimple1.java deleted file mode 100644 index 49005257..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/hilos/HiloSimple1.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ceslopedevega.hilos; - -public class HiloSimple1 extends Thread { - private int id; - private int iter; - - public HiloSimple1 (int id, int iter) - { - this.id = id; - this.iter = iter; - } - - public void run() - { - for (int i = 0; i < iter; i++) - { - System.out.println("Iteracin " + i + " dentro del hilo " + id); - try - { - Thread.sleep(1000); - } - catch (InterruptedException e) - { - e.printStackTrace(); - } - } - - System.out.println("El hilo " + id + " ha terminado su ejecucin"); - } -} diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/hilos/HiloSimple2.java b/UA1/ejemplos/java/src/com/ceslopedevega/hilos/HiloSimple2.java deleted file mode 100644 index 6dd9528d..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/hilos/HiloSimple2.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.ceslopedevega.hilos; - -public class HiloSimple2 implements Runnable { - private int id; - private int iter; - - public HiloSimple2 (int id, int iter) - { - this.id = id; - this.iter = iter; - } - - public void run() - { - for (int i = 0; i < iter; i++) - { - System.out.println("Iteracin " + i + " dentro del hilo " + id); - try - { - Thread.sleep(1000); - } - catch (InterruptedException e) - { - e.printStackTrace(); - } - } - - System.out.println("El hilo " + id + " ha terminado su ejecucin"); - } -} diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/hilos/LanzaHiloSimple1.java b/UA1/ejemplos/java/src/com/ceslopedevega/hilos/LanzaHiloSimple1.java deleted file mode 100644 index f2a7026d..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/hilos/LanzaHiloSimple1.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.ceslopedevega.hilos; - -public class LanzaHiloSimple1 { - public static void main (String[] args) - { - HiloSimple1 hilo1 = new HiloSimple1(1, 10); - HiloSimple1 hilo2 = new HiloSimple1(2, 4); - HiloSimple1 hilo3 = new HiloSimple1(3, 5); - - // Se lanzan los hilos - hilo1.start(); - hilo2.start(); - hilo3.start(); - } -} diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/hilos/LanzaHiloSimple2.java b/UA1/ejemplos/java/src/com/ceslopedevega/hilos/LanzaHiloSimple2.java deleted file mode 100644 index 96d5aaf8..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/hilos/LanzaHiloSimple2.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ceslopedevega.hilos; - -public class LanzaHiloSimple2 { - public static void main (String[] args) - { - HiloSimple2 hilo1 = new HiloSimple2(1, 10); - HiloSimple2 hilo2 = new HiloSimple2(2, 4); - HiloSimple2 hilo3 = new HiloSimple2(3, 5); - - // Se crean los hilos (no extienden Thread directamente) - Thread t1 = new Thread(hilo1); - Thread t2 = new Thread(hilo2); - Thread t3 = new Thread(hilo3); - - // Se lanzan los hilos - t1.start(); - t2.start(); - t3.start(); - } -} diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo1.java b/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo1.java deleted file mode 100644 index a7cab8a8..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo1.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.ceslopedevega.procesos; -import java.io.IOException; - -public class Ejemplo1 { - public static void main(String[] args) throws IOException { - ProcessBuilder pb = new ProcessBuilder("EXPLORER.exe"); - for(int i=0; i<1;i++) - { - Process p = pb.start(); - } - } -}//Ejemplo1 - diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo2.java b/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo2.java deleted file mode 100644 index 30f102aa..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo2.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.ceslopedevega.procesos; -import java.io.*; - -public class Ejemplo2 { - public static void main(String[] args) throws IOException { - - Process p = new ProcessBuilder("CMD", "/C", "DIR").start(); - try { - - InputStream is = p.getInputStream(); - - // mostramos en pantalla caracter a caracter - int c; - while ((c = is.read()) != -1) - System.out.print((char) c); - is.close(); - - - } catch (Exception e) { - e.printStackTrace(); - } - - // COMPROBACION DE ERROR - 0 bien - 1 mal - int exitVal; - try { - exitVal = p.waitFor(); - System.out.println("Valor de Salida: " + exitVal); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } -}// Ejemplo2 diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo2Error.java b/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo2Error.java deleted file mode 100644 index 78739ca8..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo2Error.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.ceslopedevega.procesos; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; - -public class Ejemplo2Error { - public static void main(String[] args) throws IOException { - - Process p = new ProcessBuilder("CMD", "/C", "DIRR").start(); - try { - - InputStream is = p.getInputStream(); - - // mostramos en pantalla caracter a caracter - int c; - while ((c = is.read()) != -1) - System.out.print((char) c); - is.close(); - - - } catch (Exception e) { - e.printStackTrace(); - } - - // COMPROBACION DE ERROR - 0 bien - 1 mal - int exitVal; - try { - exitVal = p.waitFor(); - System.out.println("Valor de Salida: " + exitVal); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - try { - InputStream er = p.getErrorStream(); - BufferedReader brer = new BufferedReader(new InputStreamReader(er)); - String liner = null; - while ((liner = brer.readLine()) != null) - System.out.println("ERROR >" + liner); - } catch (IOException ioe) { - ioe.printStackTrace(); - } - - } - }// Ejemplo2 - diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo3.java b/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo3.java deleted file mode 100644 index bdfb389a..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo3.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.ceslopedevega.procesos; -import java.io.*; - -// Enviar datos al stream de entrada del proceso -public class Ejemplo3 { - public static void main(String[] args) throws IOException { - Process p = new ProcessBuilder("CMD", "/C", "DATE").start(); - - // escritura -- envia entrada a DATE - OutputStream os = p.getOutputStream(); - os.write("20-05-20".getBytes()); - os.flush(); // vaca el buffer de salida - - // lectura -- obtiene la salida de DATE - InputStream is = p.getInputStream(); - int c; - while ((c = is.read()) != -1) - System.out.print((char) c); - is.close(); - - // COMPROBACION DE ERROR - 0 bien - 1 mal - int exitVal; - try { - exitVal = p.waitFor(); - System.out.println("Valor de Salida: " + exitVal); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - -}//Ejemplo4 diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo4.java b/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo4.java deleted file mode 100644 index 010eb13d..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo4.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.ceslopedevega.procesos; -import java.io.*; - -public class Ejemplo4 { - - public static void main(String[] args) throws IOException { - final String dir = System.getProperty("user.dir"); - System.out.println("current dir = " + dir); - - File directorio = new File("bin"); - ProcessBuilder pb = new ProcessBuilder("java", "com.ceslopedevega.procesos.EjemploLectura"); - pb.directory(directorio); - - - - // se ejecuta el proceso - Process p = pb.start(); - - // escritura -- envia entrada - OutputStream os = p.getOutputStream(); - os.write("Hola Manuel\n".getBytes()); - os.flush(); // vacía el buffer de salida - - // lectura -- obtiene la salida - InputStream is = p.getInputStream(); - int c; - while ((c = is.read()) != -1) - System.out.print((char) c); - is.close(); - - // COMPROBACION DE ERROR - 0 bien - 1 mal - int exitVal; - try { - exitVal = p.waitFor(); - System.out.println("Valor de Salida: " + exitVal); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - try { - InputStream er = p.getErrorStream(); - BufferedReader brer = new BufferedReader(new InputStreamReader(er)); - String liner = null; - while ((liner = brer.readLine()) != null) - System.out.println("ERROR >" + liner); - } catch (IOException ioe) { - ioe.printStackTrace(); - } - } - -}// Ejemplo5 diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo5.java b/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo5.java deleted file mode 100644 index 39e50576..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo5.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.ceslopedevega.procesos; - -import java.io.*; -import java.util.*; - -public class Ejemplo5 { - public static void main(String args[]) throws IOException { - - File directorio = new File(".\\bin"); - - ProcessBuilder test = new ProcessBuilder(); - Map entorno = test.environment(); - System.out.println("Variables de entorno:"); - System.out.println(entorno); - - //test = new ProcessBuilder("java", "LeerNombre", "Luis"); - test = new ProcessBuilder("java", "com.ceslopedevega.procesos.LeerNombre", "Luis"); - - // devuelve el nombre del proceso y sus argumentos - List l = test.command(); - Iterator iter = l.iterator(); - System.out.println("\nArgumentos del comando:"); - while (iter.hasNext()) - System.out.println(iter.next()); - - - // Se lanza el proceso - ProcessBuilder pb = new ProcessBuilder("java", "com.ceslopedevega.procesos.LeerNombre", "Luis"); - pb.directory(directorio); - pb.redirectOutput(ProcessBuilder.Redirect.INHERIT); - - // se ejecuta el proceso - Process p = pb.start(); - - } -}// Ejemplo6 diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo6.java b/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo6.java deleted file mode 100644 index 85353d08..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo6.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ceslopedevega.procesos; -import java.io.File; -import java.io.IOException; - -public class Ejemplo6 { - public static void main(String args[]) throws IOException { - ProcessBuilder pb = new ProcessBuilder("CMD","/C" ,"DIRR"); - - File fOut = new File("salida.txt"); - File fErr = new File("error.txt"); - - pb.redirectOutput(fOut); - pb.redirectError(fErr); - pb.start(); - } -}// Ejemplo7 diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo7.java b/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo7.java deleted file mode 100644 index 46ebe140..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo7.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.ceslopedevega.procesos; -import java.io.File; -import java.io.IOException; - -public class Ejemplo7 { - public static void main(String args[]) throws IOException { - ProcessBuilder pb = new ProcessBuilder("CMD"); - - File fBat = new File("fichero.bat"); - File fOut = new File("salida.txt"); - File fErr = new File("error.txt"); - - pb.redirectInput(fBat); - pb.redirectOutput(fOut); - pb.redirectError(fErr); - pb.start(); - - } -}// Ejemplo8 diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo8.java b/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo8.java deleted file mode 100644 index 4e49e012..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Ejemplo8.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.ceslopedevega.procesos; -import java.io.IOException; - -public class Ejemplo8 { - public static void main(String args[]) throws IOException { - ProcessBuilder pb = new ProcessBuilder("CMD", "/C", "DIR"); - - // Salida a consola - // Redirect.INHERIT indica que la entrada y salida del proceso - // ser la misma que el proceso actual (padre) - pb.redirectOutput(ProcessBuilder.Redirect.INHERIT); - Process p = pb.start(); - } -}// Ejemplo9 diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/EjemploLectura.java b/UA1/ejemplos/java/src/com/ceslopedevega/procesos/EjemploLectura.java deleted file mode 100644 index 26111e82..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/EjemploLectura.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ceslopedevega.procesos; -import java.io.*; -public class EjemploLectura{ - public static void main (String [] args) - { - InputStreamReader in = new InputStreamReader(System.in); - BufferedReader br = new BufferedReader (in); - String texto; - try { - System.out.println("Introduce una cadena...."); - texto= br.readLine(); - System.out.println("Cadena escrita: "+texto); - in.close(); - }catch (Exception e) { e.printStackTrace();} - } -}//EjemploLectura diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/LeerNombre.java b/UA1/ejemplos/java/src/com/ceslopedevega/procesos/LeerNombre.java deleted file mode 100644 index 0061bbc1..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/LeerNombre.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.ceslopedevega.procesos; - -public class LeerNombre { - - public static void main(String[] args) { - if(args.length!=1){ - System.out.println("Argumentos incorrectos en main()"); - System.exit(-1); - } - System.out.printf("Nombre: %s %n", args[0]); - System.exit(1); - } - -} diff --git a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Unsaludo.java b/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Unsaludo.java deleted file mode 100644 index 7c03ee3f..00000000 --- a/UA1/ejemplos/java/src/com/ceslopedevega/procesos/Unsaludo.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.ceslopedevega.procesos; -public class Unsaludo { - public static void main(String[] args) { - if (args.length < 1) { - System.out.println("SE NECESITA UN SALUDO..."); - System.exit(1); - } - for(int i=0; i<5; i++) - System.out.println(i+1 +". "+args[0]); - } -}//Unsaludo diff --git a/UA1/examen/dev_0/ua1ex1.c b/UA1/examen/dev_0/ua1ex1.c deleted file mode 100644 index 9c70ebfd..00000000 --- a/UA1/examen/dev_0/ua1ex1.c +++ /dev/null @@ -1,24 +0,0 @@ -/* - -NOMBRE: -FECHA: - -PARTE PRÁCTICA - -FR1: Haz un programa en C que genere una estructura de procesos con un PADRE y 3 HIJOS, del mismo padre se entiende - 2 puntos -FR2: Visualiza por cada hijo su identificador (si es el hijo 1, 2 ó 3), su PID y el del padre, utilizando para ello una función definida por ti a la que llamen los procesos hijos - 2 puntos -FR3: Justo antes de finalizar el programa PADRE, se debe imprimir por pantalla el PID del padre de todos una única vez. Debe hacerlo el programa PADRE - 2 puntos -FR4: Implementa el control de errores - 2 puntos -FR5: Documenta y estructura el código - 2 puntos - -Para evitar complicaciones con máquinas virtuales, si lo prefieres puedes utilizar el compilador online: https://www.onlinegdb.com/online_c_compiler - -Notas: - -Los comentarios (descriptivos y concisos) en el código ... siempre son bien. -Los nombres de las variables autodescriptivos ... siempre son bien. -Las impresión por pantalla, correctamente indentada y verticalmente espaciada ... siempre es bien. -Los warnings del presente ... son los errores del futuro. -El nombre del fichero .c a entregar debe ser: examen\dev_X\ua1ex1.c , es decir, el fichero ua1ex1.cdebe estar ubicado en tu carpeta dev_X\ - -*/ diff --git a/UA1/examen/dev_0/ua1ex1_teoria.txt b/UA1/examen/dev_0/ua1ex1_teoria.txt deleted file mode 100644 index 2ea0d591..00000000 --- a/UA1/examen/dev_0/ua1ex1_teoria.txt +++ /dev/null @@ -1,16 +0,0 @@ -NOMBRE: -FECHA: - -PARTE TEÓRICA - -a) Definición de proceso. 1 punto. - -b) Utilizando tus propias palabras, indica la relación entre hilos y procesos. 3 puntos. - -c) Utilizando tus propias palabras, indica las características de la programación concurrente y sus ámbitos de aplicación. 3 puntos. - -d) Utilizando tus propias palabras, indica las diferencias entre programación paralela y programación distribuida, sus ventajas e inconvenientes. 3 puntos. - -Notas: - -El nombre del fichero .txt a entregar debe ser: examen\dev_X\ua1ex1_teoria.txt , es decir, el fichero ua1ex1_teoria.txt debe estar ubicado en tu carpeta examen\dev_X\ diff --git a/UA1/tareas/dev_0/ua1tarea1.c b/UA1/tareas/dev_0/ua1tarea1.c deleted file mode 100644 index 1b2cfd02..00000000 --- a/UA1/tareas/dev_0/ua1tarea1.c +++ /dev/null @@ -1 +0,0 @@ -Ya os gustaría \ No newline at end of file diff --git a/UA2/README.md b/UA2/README.md index 210999a7..5c62c8b0 100644 --- a/UA2/README.md +++ b/UA2/README.md @@ -73,7 +73,7 @@ Por favor, leed el documento [INSTRUCCIONES_ENTREGAS.md](..\INSTRUCCIONES_ENTREG ### **T1 - Tarea 1 - Programación y sincronización de hilos en Java 1** ##### **Criterios a), b), c), d), e), f), g) y h)** ``` -Fecha de Entrega: 09/11/2022 - 14:00:00 +Fecha de Entrega: 06/11/2024 - 20:00:00 ``` * FR1: Crea un programa en Java que lance 5 hilos. Cada hilo incrementará una variable contador de tipo entero en 1000 unidades. Esta variable estará compartida por todos los hilos. Comprueba el resultado final de la variable y reflexiona sobre el resultado. ¿Se obtiene el resultado esperado? - 3 puntos * FR2: Modifica el programa anterior para sincronizar el acceso a dicha varaible. Lanza primero los hilos mediante la clase Thread y después mediante el interfaz Runnable. Comprueba los resultados e indica las variaciones - 3 puntos @@ -89,7 +89,7 @@ Fecha de Entrega: 09/11/2022 - 14:00:00 ### **T2 - Tarea 2 - Programación y sincronización de hilos en Java 2** ##### **Criterios a), b), c), d), e), f), g) y h)** ``` -Fecha de Entrega: 16/11/2022 - 14:00:00 +Fecha de Entrega: 13/11/2024 - 21:00:00 ``` * FR1: Crea una clase CuentaCorriente, con un atributo que indique el saldo de la cuenta, el constructor que le da un valor inicial al saldo y después los métodos setter y getter. En estos métodos deberás añadir un sleep() aleatorio, que duerma al hilo durante un número de milisegundos que oscile entre 250 y 2000 (0,25s y 2s respectivamente). Añade también otro método que reciba una cantidad y la añada al saldo, indicando por pantalla el estado previo del saldo, el estado final y quién realiza el ingreso. Deberás definir los parámetros que reciba este método y deberás definirlo como synchronized - 2 puntos. * FR2: Crea una clase que extienda de Thread, y desde el método run() usará el método de la clase CuentaCorriente que permite añadir saldo a la cuenta - 2 puntos. @@ -104,7 +104,7 @@ Fecha de Entrega: 16/11/2022 - 14:00:00 ### **T3 - Tarea 3 - Programación y sincronización de hilos en Java 3** ##### **Criterios a), b), c), d), e), f), g) y h)** ``` -Fecha de Entrega: 23/11/2022 - 14:00:00 +Fecha de Entrega: 26/11/2024 - 23:59:00 ``` * FR1: Crea un programa que reciba a través de sus argumentos una lista de ficheros de texto (procura que sean de un cierto tamaño, por ejemplo [El Quijote.txt](https://gist.githubusercontent.com/jsdario/6d6c69398cb0c73111e49f1218960f79/raw/8d4fc4548d437e2a7203a5aeeace5477f598827d/el_quijote.txt)) y cuente el número de caracteres que hay en cada fichero (ejecución secuencial). Ayuda en este [enlace](https://javiergarciaescobedo.es/programacion-en-java/15-ficheros/42-leer-un-fichero-caracter-a-caracter) - 2 puntos. * FR2: Modifica el programa para que cree un hilo para cada fichero (ejecución concurrente) - 2 puntos. @@ -127,20 +127,20 @@ long t_total = t_fin - t_comienzo; ### **EX2 - Examen UA2 - Programación Multihilo** ##### **Criterios a), b), c), d), e), f), g) y h)** ``` -Fecha de Examen: 23/11/2022 - 17:45:00 +Fecha de Examen: xx/12/2024 - xx:xx:00 ``` ## Recursos -- [Canal SLACK](https://psp-2223.slack.com/) -- [Repositorio Asignatura](https://github.com/daniteleco/psp-22-23) +- [Canal SLACK](https://psp-2024-2025.slack.com/) +- [Repositorio Asignatura](https://github.com/i12vecaj/psp-24-25/) - Apuntes del Profesorado //TODO - Bibliografía Recomendada - **Programación de servicios y procesos - Técnico Superior en DAM.** *Mª Jesús Ramos Martín. Editorial Garceta. 2ª Edición. 2018. ISBN: 978-84-1728-931-7.* ## Autor -Creado por [Daniel Pérez Rodríguez](https://twitter.com/daniteleco) e inspirado en el trabajo de [José Luis González Sánchez](https://github.com/joseluisgs/ProgServiciosProcesos-00-2021-2022) +Creado por José David Vela e inspirado en el trabajo de [Daniel Pérez Rodríguez](https://twitter.com/daniteleco) y [José Luis González Sánchez](https://github.com/joseluisgs/ProgServiciosProcesos-00-2021-2022) ## Contacto -- Email: [dperez@ceslopedevega.com](mailto:dperez@ceslopedevega.com) +- Email: [jdvela@ceslopedevega.com](mailto:jdvela@ceslopedevega.com)