Prácticas de Sistemas Operativos
|
|
|
- María Jesús Flores Venegas
- hace 7 años
- Vistas:
Transcripción
1 Prácticas de Sistemas Operativos Toñi Reina, David Ruiz, Juan Antonio Álvarez, Antonio Tallón, Pablo Neira, José Ángel Bernal y Sergio Segura Boletín 5: Señales Curso 2006/07 Índice 1. Introducción 2 2. El comando kill 2 3. La llamada kill 3 4. La llamada raise 4 5. La llamada alarm 5 6. Tratamiento de señales. signal 5 7. La espera de señales. pause 7 8. Ejercicios 7 1
2 1. Introducción Una señal es una interrupción software que permite la comunicación entre procesos, de hecho es muy frecuente que el núcleo envíe señales a los procesos durante su ejecución. Un proceso puede enviarle una señal a otro y éste, al recibirla, puede comportarse de tres formas diferentes: Ignorar la señal. Invocar a una rutina de tratamiento por defecto. Esta rutina la aporta el núcleo y, según el tipo de señal, esta rutina por defecto realizará una acción u otra. Generalmente, provoca la finalización del proceso. En algunos casos, provoca la creación de un fichero core, que contiene el contexto del proceso antes de recibir la señal. Estos ficheros se pueden examinar con la ayuda de un depurador. Invocar una rutina específica realizada por el programador. No todas las señales permiten este tipo de atención. Cada señal tiene asociado un número entero positivo, que es el que intercambian los procesos cuando uno le envía una señal a otro. En UNIX System V hay definidas 19 señales, y en 4.3BSD, 30. Las 19 señales del UNIX System V las tienen prácticamente todas las versiones de UNIX, y a éstas los fabricantes les añaden las que creen convenientes. En general, las señales se pueden clasificar en los siguientes grupos: Señales relacionadas con la terminación de procesos. Señales relacionadas con las excepciones inducidas por los procesos. Por ejemplo, los errores producidos al manejar números en coma flotante. Señales relacionadas con los errores irrecuperables originados en el transcurso de una llamada al sistema. Señales originadas desde un proceso que se está ejecutando en modo usuario. Señales relacionadas con la interacción con el terminal. Señales para ejecutar un proceso paso a paso. Éstas son usadas por los depuradores. En el fichero de cabecera <signal.h> están definidas las señales que puede manejar el sistema y sus nombres. En la tabla 1 se pueden ver el conjunto de señales definidas en System V, junto con su significado y su acción por defecto. 2. El comando kill Para generar una señal desde el intérprete de comandos se utiliza el comando kill. Su sintaxis es la siguiente: kill -s señal pid... kill -l [exit_status] kill [-señal] pid... -s señal Indica la señal a enviar. Esta señal se puede especificar con un número o con un nombre de señal. pid Especifica la lista de procesos a los que se les enviarálaseñal. Si: pid>0 La señal se le envía al proceso cuyo identificador es el dado por pid. pid=0 La señal se manda a todos los procesos del mismo grupo que el actual. pid=-1 La señal es enviada a todos los procesos cuyo pid sea mayor que uno. pid<-1 La señal se envía a todos los procesos del grupo indicado por pid. -l Imprime una lista de los nombres de señales que hay en el sistema. -señal Esta opción es equivalente a la opción -s. 2
3 Núm. Señal Descripción Acción por defecto 1 SIGHUP Colgar. Generada al desconectar el terminal. Terminar. 2 SIGINT Interrupción. Generada por teclado cuando se pulsa la tecla de interrupción. Terminar. 3 SIGQUIT Salir. Generada por teclado cuando se pulsa la tecla de salida (Control Generar core y terminar. + \). 4 SIGILL Instrucción ilegal. No se puede recapturar. Generar core y terminar. 5 SIGTRAP Trace trap. Trazado. No se puede recapturar. Generar core y terminar. 6 SIGIOT I/O trap instruction. Generada cuando se da un fallo de hardware. Generar core y terminar. 7 SIGEMT Emulator trap instruction. Indica un fallo de hardware. Generar core y terminar. 8 SIGFPE Excepción aritmética, de coma flotante o división por cero. Generar core y terminar. 9 SIGKILL Terminación abrupta. No puede capturarse, ni ignorarse. Terminar. 10 SIGBUS Error de bus. Se produce cuando se da un error de acceso a memoria. Generar core y terminar 11 SIGSEGV Violación de segmentación. Es enviada a un proceso cuando intenta acceder Generar core y terminar a datos que se encuentran fuera de su segmento de datos. 12 SIGSYS Argumento erróneo en una llamada al sistema. No se usa. Generar core y terminar. 13 SIGPIPE Escritura en una tubería que otro proceso no lee. Terminar. 14 SIGALRM Alarma de reloj. Enviada a un proceso cuando alguno de sus temporizadores Terminar. descendientes llega a cero. 15 SIGTERM Finalización controlada. Se utiliza para indicar a un proceso que debe Terminar. terminar su ejecución. Puede ser ignorada. 16 SIGUSR1 Señal número 1 de usuario. Se reserva para uso del programador. Terminar 17 SIGUSR2 Señal número 2 de usuario. Terminar. 18 SIGCHLD Terminación del proceso hijo. Es enviada al proceso padre cuando alguno Es ignorada. de los hijos termina. 19 SIGPWR Fallo de alimentación. Es ignorada. Figura 1: Señales del UNIX System V Ejemplo 1 El siguiente comando envía la señal SIGUSR1 al proceso cuyo identificador es kill -USR Ejemplo 2 El siguiente comando da una lista de los nombres de señal simbólicos del sistema $ kill -l EXIT HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1 USR2 CLD PWR WINCH URG POLL STOP TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ WAITING LWP FREEZE THAW CANCEL LOST RTMIN RTMIN+1 RTMIN+2 RTMIN+3 RTMAX-3 RTMAX-2 RTMAX-1 RTMAX 3. La llamada kill La llamada kill sirve para enviar una señal a un proceso: #include <sys/types.h> int kill(pid_t pid, int sig); sig es la señal que se quiere enviar. Si sig vale 0 (señal nula) se realiza una comprobación de errores, pero no se envía ninguna señal. Esta opción se suele utilizar para comprobar la validez del identificador pid. pid es el ID del proceso o conjunto de procesos al que se quiere enviar la señal. Los distintos valores que puede tomar son los siguientes: pid>0 Le estamos indicando el pid del proceso al que le queremos enviar la señal. pid=0 La señal es enviada a todos los procesos que pertenecen al mismo grupo que el proceso que la envía. 3
4 pid=-1 La señal es enviada a todos los procesos cuyo identificador real es igual al identificador efectivo del proceso que la envía. Si el proceso que la envía tiene identificador efectivo de superusuario, la señal es enviada a todos los procesos, excepto al proceso 0 (swapper) y al proceso 1 (init). pid<-1 La señal es enviada a todos los procesos cuyo identificador de grupo coincide con el valor absoluto de pid. devuelve En caso de error devuelve -1 y en errno estaráelcódigo del error producido. En caso contrario, devuelve el valor 0. Ejemplo 3 El siguiente programa envía la señal SIGSTOP a otro proceso cuyo ID recibe como parámetro. #include <stdio.h> #include <sys/types.h> int main(int argc, char * argv[]) long pid = 0; if (argc!= 2) printf("usage: ejemplo_kill pid\n"); exit(1); sscanf(argv[1],"%ld",&pid); if (kill(pid, SIGSTOP) == -1) printf("error al enviar la señal SIGSTOP al proceso %ld\n",pid); exit(1); 4. La llamada raise La llamada raise sirve para que un proceso pueda enviarse una señal a sí mismo, esta función sólo necesita como parámetro el número de la señal: int raise(int sig); sig Es el código de la señal a enviar devuelve En caso de error devuelve -1 y en errno estará el código del error producido. En caso contrario, devuelve el valor 0. Ejemplo 4 La llamada raise se puede implementar a partir de kill de la siguiente forma: int raise (int sig) return kill(getpid(), sig); 4
5 5. La llamada alarm La llamada alarm sirve para enviar una señal SIGALRM al proceso que la llama después de que pasen un número determinado de segundos: #include <stdio.h> unsigned int alarm (unsigned int seconds); Las llamadas a alarm no se apilan, de modo que si el programa llama a alarm antes de que el tiempo expire, la alarma será inicializada con un nuevo valor. seconds Número de segundos a esperar hasta que se envíe la señal SIGALRM al proceso invocante. Si seconds vale cero, se cancela la solicitud previa de alarma. devuelve Devuelve el número de segundos que quedan en la alarm antes de la llamada que reinicializará el valor. Ejemplo 5 Ya que la acción por defecto de la señal SIGALRM es terminar el proceso, el siguiente trozo de código se ejecuta aproximadamente durante 10 segundos. #include <unistd.h> void main(void) alarm(10); for ( ; ; ) 6. Tratamiento de señales. signal Para indicar el tratamiento que debe realizar un proceso al recibir una señal se utiliza la llamada signal. Su declaración es la siguiente: void (*signal (int sig, void (*action) ())) (); signal es una llamada al sistema del tipo función que devuelve un puntero a una función void y recibe dos parámetros. sig Es el número de la señal sobre la que queremos especificar la forma de tratamiento. action Es la acción que queremos que se inicie cuando reciba la señal sig. action puede tomar tres tipos de valores: SIG DFL Indica que la acción a realizar cuando se recibe la señal es la acción por defecto asociada a la señal (manejador por defecto). Como se ha visto antes, esta acción suele ser terminar el proceso, y, en algunos casos, generar un fichero core. SIG IGN Indica que la señal se debe ignorar. dirección Es la dirección de la función que tratará laseñal (manejador creado por el usuario). La declaración de este manejador debe ajustarse al siguiente prototipo: void handler (int sig [, int code, struct sigcontext *scp]) 5
6 Cuando se recibe la señal sig, elnúcleo se encarga de llamar a la rutina handler pasándole los parámetros sig, code y scp. sig Es el número de la señal. code Contiene información sobre el estado del hardware en el momento de invocar al manejador. Es opcional. scp Contiene información de contexto. Es opcional. Tanto scp como code dependen del hardware de la máquina. devuelve Devuelve el valor que tenía action, que puede servir para restaurarlo en un momento posterior. Si se produce algún error, signal devuelve SIG_ERR y almacena en errno el código del error producido. Ejemplo 6 El siguiente programa trata la señal SIGINT generada al pulsar las teclas Control + C. #include <stdio.h> void manejador_sigint(int); int main(void) if (signal (SIGINT, manejador_sigint) == SIG_ERR) perror("error en signal"); exit (-1); while (1) printf ("Esperando un Ctrl-C\n"); sleep(999); void manejador_sigint(int sig) printf ("Señal número %d recibida.\n", sig); Al ejecutar este programa, la primera vez que se pulsa Ctrl-C se puede ver un mensaje impreso por pantalla, pero la segunda vez que se ejecuta, el proceso termina. Esto se debe a que cuando el n úcleo llama a la rutina de tratamiento de la señal, se restaura la nueva rutina de tratamiento por defecto como rutina manejadora. C ómo podríamos solventar esto? La solución propuesta es volver a llamar a signal dentro del manejador de la señal del siguiente modo: void manejador_sigint(int sig) static cnt= 0; printf ("Señal número %d recibida.\n", sig); if (cnt <20) printf ("Contador = %d\n", cnt++); else exit(0); if (signal (SIGINT, manejador_sigint) == SIG_ERR) perror("error en signal"); exit (-1); 6
7 7. La espera de señales. pause La llamada a pause se utiliza para suspender la ejecución de un proceso hasta que ocurra algún evento exterior aél. Su declaración es la siguiente: #include <unistd.h> int pause(void); devuelve pause hace que el proceso se quede esperando la llegada de alguna señal. Cuando esto ocurre, y tras ejecutar la rutina de tratamiento de la señal, devuelve -1 y en errno coloca el valor EINTR, para indicar que se ha producido una interrupción de la llamada. El programa continúa con la sentencia siguiente a pause. Ejemplo 7 El siguiente programa es un ejemplo de la utilización de pause. #include <stdio.h> #include <stdlib.h> #include <errno.h> void manejador_sigusr1(int); void manejador_sigterm(int); int main(void) if (signal(sigterm, manejador_sigusr1)== SIG_ERR signal(sigusr1, manejador_sigterm)== SIG_ERR) perror("manejador no asignado"); exit(1); while (1) pause(); void manejador_sigterm(int sig) printf("el usuario pide terminar %ld\n", (long)getpid()); exit (-1); void manejador_sigusr1(int sig) signal(sig, SIG_IGN); printf ("%d\n", rand()); signal (sig, manejador_sigusr1); 8. Ejercicios 1. Realizar un programa semejante al comando kill para enviarle señales a un proceso desde la línea de comandos. La forma de invocar a este programa será la siguiente: 7
8 $enviar señal pid 2. Realizar un programa llamado manejadores que cree un manejador por cada una de las señales de la tabla 2. Señal SIGINT SIGILL SIGTERM SIGUSR1 SIGUSR2 Manejador manejador sigint manejador sigill manejador sigterm manejador sigusr manejador sigusr Figura 2: Señales y manejadores a implementar (Ejercicio 2) El programa deberá quedarse esperando la recepción de señales. Cuando reciba una señal de las anteriores, debe imprimir un mensaje por pantalla con el siguiente formato: NOMBRE_SEÑAL Proceso pid: Señal NOMBRE_SEÑAL recibida. Por ejemplo, SIGINT Proceso 2323: Señal SIGINT recibida. Sugerencia Para probar el programa puede utilizar órdenes como las siguientes: $ manejadores & [1] 325 $ kill Proceso 325: Señal SIGUSR1 recibida. $ kill Proceso 325: Señal SIGTERM recibida. 3. Las señales se pueden considerar como una forma de sincronización de procesos. Realizar un programa que comunique dos procesos a través de un archivo. El problema a resolver es conseguir que un proceso escriba en un archivo y el otro lea de él. Realizar el ejercicio creando el proceso emisor y el receptor con la llamada a fork(). Para que el proceso receptor pueda leer algo del archivo, previamente el proceso emisor ha tenido que escribir algo en él antes. El proceso emisor le indicará al proceso receptor que hay algo disponible mediante el envío de una señal. El receptor le devolverá otra señal al emisor, una vez que ha ejecutado la operación de lectura, para indicarle que está listo para recibir más datos. Para entender mejor este proceso, puede ayudarse del organigrama presentado en la Figura (Ejercicio de Exámen 2 a CONV ITI ) Realice un programa mondir que cada <n> segundos liste los archivos que se encuentran en el directorio <dir> junto con su tamaño. La invocación al programa es: $ mondir <n> <dir> Un ejemplo de ejecución del programa es el que aparece en la Figura 4. Para hacerlo, se deberán crear dos procesos. El proceso padre deberá esperar <n> segundos, transcurridos los cuales, enviará una señal (SIGUSR1) al proceso hijo, el cual, se dará por aludido y mostrará por pantalla el listado. Cuando el hijo termine de realizar su tarea, le enviará al padre una señal (SIGUSR1) para indicarle que puede comenzar de nuevo el ciclo. NOTAS: 8
9 PROCESO EMISOR Inicio PROCESO RECEPTOR fork() Inicio Duerme 2 segundos SIGUSR1 o SIGTERM Esperar señal Escribir en fichero SIGTERM Leer de fichero SIGTERM SIGUSR1 Esperar señal Fin Fin SIGUSR1 Figura 3: Sincronización del proceso emisor y el receptor mediante señales (Ejercicio 3) $ mondir 5 $HOME/src Listando directorio: /export/home/cursos/so/src Entrada: ficheros.tar Tam: Entrada: last.txt Tam: 1482 Entrada: eje.c Tam: 2082 Entrada: eje.o Tam: 2828 Entrada: eje Tam: 7612 Figura 4: Ejemplo de ejecución del programa a implementar(ejercicio 4). No se puede utilizar la llamada al sistema system(). Cuando se produzca algún error, deberán terminar su ejecución los dos procesos. 5. (Ejercicio de Exámen 1 a CONV II ) Escriba un programa en C, que cree un proceso hijo. Cada n segundos el padre le manda una señal SIGUSR1 al proceso hijo, el cual, cuando reciba la señal, deberá ejecutar el programa que se pasa por la línea de comandos $ ejecutar <segundos> <comando> Una invocación posible sería: murillo:/tmp> ejecutar 5 ls -la NOTAS: No se permite la utilización de la llamada al sistema system() para resolver el ejercicio. Dispone de una variable global, char *argumentos[] que contendrá una copia del argv que se recoge en la función main(), y que podrá utilizar en la función manejador_sigusr1. 6. (Ejercicio de Exámen 2 a CONV II ) Se desean sincronizar dos procesos en un sistema que solamente dispone de tuberías como mecanismo de comunicación/sincronización. Se pide realizar un programa catsincro <seg> <archivo> que cree dos procesos. El proceso padre, esperará <seg> segundos, transcurridos los cuales avisará al proceso hijo. El hijo, al recibir el aviso, imprimirá por la salida estándar byte a byte el contenido de <archivo>. Cuando 9
10 acabe de realizar esta tarea, avisará al padre, el cual tendrá que volver a esperar <seg> segundos para volver a avisar a su hijo. NOTAS: El archivo debe tratarse a bajo nivel. Este ejercicio también podía haber aparecido en el boletín anterior, pero como se trata de hacer una sincronización sin el mecanismo de señales, se ha publicado en este. 7. (Ejercicio de Examen 3 a CONV ITI ) Se pide escribir un programa en C (genfich) que se invoque de la siguiente manera: genfich <archivo>. El programa recibirá por la línea de comandos el nombre de un archivo <archivo>, y estará recibiendo datos desde teclado y almacenando estos datos en el archivo <archivo> hasta que reciba una señal SIGUSR1. En ese momento, el programa deberá de dejar de generar el archivo e imprimirlo por pantalla con las líneas numeradas utilizando el comando cat de UNIX. NOTAS: No se pueden dejar procesos huérfanos. No se puede utilizar la llamada al sistema system(). Se supone definida una variable global de archivo, que contendrá el nombre del archivo que se pasa por la línea de comandos. El archivo <archivo> debe ser tratado a bajo nivel. 8. (Ejercicio de Examen 4 a CONV ITI ) Escriba un programa en C, llamado ciclo con la siguiente invocación: ciclo <num_procesos> <directorio>. El programa deberá crear tantos procesos nuevos como indique el argumento <num_procesos>. Estos procesos deberán tener parentesco padre-hijo-nieto-biznieto. Es decir, el proceso original, deberá crear un hijo. Este hijo deberá crear otro. El nieto, otro,... y así sucesivamente, hasta que se hayan creado <num_procesos> nuevos. Una vez que se hayan creado todos los procesos, el último de ellos deberá enviarle una señal SIGUSR1, a su padre. El padre, cuando la reciba, deberá enviarle otra señal SIGUSR1 al suyo y, así, hasta llegar al proceso original... Cuando el proceso original reciba la señal SIGUSR1, imprimirá por la salida estándar los nombres de los directorios con permiso de ejecución que se encuentren el directorio <directorio>, que se pasa como argumento. Una vez que los procesos creados envíen la señal SIGUSR1 a su padre, deberán terminar. En la Figura 5 se muestra cual sería el resultado de una ejecución del programa y una estructura de la jerarquía de procesos que se crearía durante dicha ejecución. NOTAS: Figura 5: Estructura de la jerarquía de procesos y ejemplo (Ejercicio 8) No se permite la utilización de la llamada al sistema system() para resolver el ejercicio. 9. (Ejercicio de Examen 2 a CONV ITI ) Sea un sistema de control de tráfico controlado por un ordenador con sistema operativo UNIX. El sistema a controlar está compuesto por un sensor, situado en una calzada de un carril, y un semáforo, que normalmente está en ámbar. El sensor se encarga de obtener la 10
11 velocidad del coche que circula por la calzada, y en caso de que la velocidad del mismo supere los 50 km/h deberá avisar al semáforo para que pase de ámbar a rojo. Para controlar este sistema, se realiza un software compuesto por dos procesos, llamados sensor y controlador. El proceso sensor crea primero el proceso controlador y establece una tubería entre ellos. Después, llamará periódicamente cada segundo a una función int leer_sensor( ), que devuelve la velocidad medida por el sensor como un entero y que se supone definida. Luego, el proceso sensor enviará al proceso controlador el valor leído a través de la tubería. El proceso controlador creará inicialmente un archivo binario datos.dat. Después, estará continuamente leyendo los datos que el proceso sensor le pasa por la tubería, guardándolos en el archivo datos.dat y haciendo que el semáforo actúe en consecuencia. Para controlar el semáforo se supone definida la rutina void actua_semaforo(int valor), que toma como argumento un valor de velocidad y cambia el color del semáforo según el valor de la misma. Se pide que escriba el código de los programas sensor y controlador, teniendo en cuenta las siguientes restricciones: El código de los procesos sensor y controlador debe estar en programas independientes. No se puede utilizar la llamada al sistema sleep(int segundos), por lo tanto, se le sugiere el uso de la llamada unsigned int alarm(unsigned int seg), que envía una señal SIGALRM al proceso que la llama después de que pasen un número determinado de segundos, los indicados en el argumento seg. Las llamadas a alarm no se apilan, de modo que si el programa llama a alarm antes de que el tiempo expire, la alarma será inicializada con un nuevo valor. El archivo se debe tratar a bajo nivel. No se utlizará la llamada system(). 10. (Ejercicio de Examen 3 a CONV II ) Escriba un programa anillo que cree un anillo de tres procesos conectados por tuberías. El primer proceso deberá pedirle al usuario un mensaje por la entrada estándar y enviárselo al segundo proceso. El segundo proceso deberá invertir la cadena y enviarla al tercer proceso. El tercer proceso deberá convertir la cadena a mayúsculas y enviársela de vuelta al primer proceso. Cuando el primer proceso obtenga la cadena procesada, deberá mostrarla por la salida estándar. Cuando esta cadena se termine, los tres procesos deberán terminar. En la Figura 6 se muestra un esquema del anillo de procesos y un ejemplo de una posible ejecución del programa. Figura 6: Estructura de la jerarquía de procesos que se crearía (Ejercicio 10) NOTAS: No se pueden dejar procesos huérfanos. Como ayuda se suponen definidas las dos siguientes funciones: void invertir (char cadena[]);. La función invertir tiene un parámetro (cadena) de entrada/salida que será una cadena bien formada. Este argumento deberá contener la cadena a invertir, y una vez que invertir haya realizado su tarea, contendrá la cadena invertida. void amayuscula (char cadena[]);. La función amayuscula tiene un argumento de entrada/salida que también deberá ser una cadena bien formada. Este argumento deberá contener la cadena que se quiere convertir a mayúsculas, y una vez que amayuscula haya realizado su tarea, contendrá la cadena en mayúsculas. 11
12 11. (Ejercicio de Examen 1 a CONV II ) Se desea implementar un programa en C para el cálculo de pulsaciones de teclado por minuto. Para realizar dicho programa, daremos 1 minuto de tiempo al usuario para mecanografiar un texto. Durante ese tiempo se solicitará, línea a línea, un texto. Cuando se pulse <intro>, se registrará toda la información que el usuario ha tecleado en un archivo llamado pulsaciones.txt (para, más tarde, analizar los posibles errores cometidos) y, a continuación, se solicitará la siguiente línea. Finalizado el tiempo, y utilizando el comando wc, se contaráelnúmero de caracteres que contiene el texto. Tenga en cuenta, que la llamada a dicho comando se realizará desde el propio programa en C. Por último, se mostrará por la salida estándar un mensaje de finalización. Un posible ejemplo de ejecución del programa sería el siguiente: Escriba la línea 1 Probando el ejercicio de pulsaciones Escriba la línea 2 de laboratorio de sistemas operativos Escriba la línea 3 Todavía tengo tiempo... Escriba la línea 4 Espero que pase la prue El tiempo ha acabado... Contando los caracteres del archivo, el resultado de salida del comando wc es: 100 pulsaciones.txt Programa finalizado En este caso, el contenido del archivo pulsaciones.txt será: Probando el ejercicio de pulsaciones de laboratorio de sistemas operativos Todavía tengo tiempo... Figura 7: Ejemplo de ejecución del programa a implementar. 12
Tema 4 : señales. Sistemas Operativos: Programación de Sistemas. Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez.
Tema 4 : señales Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Señales Las señales son un mecanismo para comunicar eventos
PRACTICA # 3 PROCESOS (CONTINUACION)
PRACTICA # 3 PROCESOS (CONTINUACION) 1. OBJETIVO Aprender cómo manipular procesos por medio de las funciones wait() y kill(); además del uso de señales del sistema Linux. 2. INTRODUCCIÓN Estados de un
Prácticas de Sistemas operativos
Prácticas de Sistemas operativos David Arroyo Guardeño Escuela Politécnica Superior de la Universidad Autónoma de Madrid Quinta semana: señales 1 Cronograma semanal 2 Entregas 3 Introducción 4 Envío de
Boletín 5- Señales. Departamento de Lenguajes y Sistemas Informáticos
Boletín 5- Señales Departamento de Lenguajes y Sistemas Informáticos Indice 1. Introducción 2. Envío de señales desde la shell: kill 3. Llamadas al Sistema kill: envío de señal a un proceso raise: autoenvío
Teoría. Procesos. Escuela Politécnica Superior Universidad Autónoma de Madrid 1
Grupos Realización Entrega/Evaluación Lunes 22 de Febrero, 1, 8, 15 de Marzo 22 de Marzo Martes 23 de Febrero, 2, 9 y 16 de Marzo 23 de Marzo Miércoles 24 de Febrero, 3, 10 y 17 de Marzo 24 de Marzo Viernes
Ejercicios sobre tuberías
Boletín 3. Ejercicios sobre tuberías July 14, 016 1. Indica de manera justificada si las siguientes afirmaciones sobre la utilización de tuberías como mecanismo de sincronización entre dos procesos son
Un ejemplo: UNIX PROCESOS UNIX
PROCESOS UNIX Un ejemplo: UNIX Cada proceso sólo puede tener un flujo: el concepto proceso engloba todo Dos llamadas implicadas en la creación de procesos crear proceso cargar programa La relación de procesos
Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid
Manejo de Señales Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Señales Concepto Evento que interrumpe la ejecución normal de un proceso La acción por defecto suele
Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.
Tema 5 : Comunicación entre Procesos mediante Tuberías Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Introducción Algunas
Práctica 1: Intérprete de mandatos. Sistemas Operativos Área de Arquitectura y Tecnología de Computadores
Práctica 1: Intérprete de mandatos Introducción Desarrollo de un intérprete de mandatos (minishell) en UNIX/Linux en lenguaje C. Debe permitir: Ejecución de mandatos simples ls, cp, mv, rm, etc. Ejecución
SISTEMAS OPERATIVOS: PROCESOS. Señales
SISTEMAS OPERATIVOS: PROCESOS Señales ADVERTENCIA 2 Este material es un simple guión de la clase: no son los apuntes de la asignatura. El conocimiento exclusivo de este material no garantiza que el alumno
Programación Concurrente
Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 1. Introducción al estándar POSIX Tema 2. Sistema Operativo MaRTE OS Tema 3. Gestión de Threads Tema 4.
Examen Final de Teoría. Grupo de teoría:
Preguntas Cortas (2 puntos) 1. Respecto a la optimización de gestión de memoria CoW, explica brevemente: a. Qué soporte hardware utiliza el sistema para poder implementarla? b. Qué permisos aplica el sistema
Sistemas Operativos - IPC
Sistemas Operativos - IPC Técnicas Digitales III Ing. Gustavo Nudelman 2012 Creación de procesos Un proceso puede crear a otro mediante la llamada al sistema fork() (no es la única manera de crear procesos)
Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III
República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III Lenguaje C 1 Puntos previos Los códigos fuentes generados en C requieren ser compilados
Prácticas de Sistemas Operativos
Prácticas de Sistemas Operativos Toñi Reina, David Ruiz, Juan Antonio Álvarez, Antonio Tallón, Javier Gutiérrez, Pablo Neira, Paco Silveira, Sergio Segura y José Ángel Bernal Boletín 4: Procesos Curso
Introducción a Sistemas Operativos: Ficheros
Introducción a Sistemas Operativos: Ficheros Clips Fr ancisco J Ballesteros 1. Entrada/Salida Es importante saber cómo utilizar ficheros. En UNIX, es aún más importante dado que gran parte de los recursos,
SISTEMAS OPERATIVOS 2 INGENIERIA TECNICA INFORMATICA SISTEMAS CORRECCION PRACTICA 3: SEÑALES Y CREDENCIALES CURSO
SISTEMAS OPERATIVOS 2 INGENIERIA TECNICA INFORMATICA SISTEMAS CORRECCION PRACTICA 3: SEÑALES Y CREDENCIALES CURSO 2009-20010 *Rellenar los NOMBRES y los LOGINS de los DOS miembros del grupo Nombre1: Nombre2:
Procesos e hilos y señales en C de GNU/Linux
Emilio José Calvo Carrasco Procesos e hilos y señales en C de GNU/Linux 1 de 12 Procesos e hilos y señales en C de GNU/Linux En este pequeño tutorial vamos a ver cómo se gestionan múltiples procesos y
Algoritmo, Estructuras y Programación I Ing. Marglorie Colina
Unidad II: Fundamentos de la Programación Estructurada Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Estructura General de un Programa Zona de ficheros de cabecera de las librerías Zona
Laboratorio de Arquitectura de Redes. Entrada y salida estándar
Laboratorio de Arquitectura de Redes Entrada y salida estándar Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato: scanf() El buffer de teclado Entrada
Sistemas Operativos Practica 1: procesos y concurrencia.
Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo
Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.
Departamento de Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Uso de punteros Objetivos de la práctica: - Entender la representación de números (enteros y reales) en el
Sincronización de procesos en C
Sincronización de procesos en C 2 En esta unidad aprenderás a: 1 2 3 4 5 Comprender los mecanismos de comunicación basados en señales. Conocer los tipos de señales. Definir gestores de señales en un programa
Tema 3: Entrada/Salida de Ficheros
Tema 3: Objetivo: Almacenar datos en un dispositivo de almacenamiento secundario (p.e. disco duro). Pasos a seguir: 1 Abrir fichero 2 Escribir/leer del fichero 3 Cerrar fichero 1 Tema 3: Abrir el fichero:
Llamadas al Sistema. Laboratorio de Arquitectura de Ordenadores
Llamadas al Sistema Laboratorio de Arquitectura de Ordenadores Índice Introducción Procesos Señales Sistema de ficheros Bibliografía 2 Introducción Llamadas al Sistema: Un API compuesto por una serie de
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS Caso 1: 1.- Necesitamos un cd o Dvd para grabar alguna de las versiones de livecd de Linux. 2.- Liga de una
Funciones Definición de función
Funciones Definición de función Una función es un bloque de código que realiza una tarea específica. Una función es una porción de programa, identificable mediante un nombre, que realiza determinadas tareas
$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos
PROGRAMACIÓN DE SHELL SCRIPTS EN LINUX El shell es un intérprete de órdenes, pero el shell no es solamente eso; los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como tales,
Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE
Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE 1. Qué es un bucle? 2. A que se denomina cuerpo de un bucle? 3. Define iteración de un bucle. 4. Cuál es el cuerpo de un bucle? 5. Qué es
Procesos e Hilos en C
Procesos e Hilos en C 6 de febrero de 2012 En esta sesión vamos a escribir programas en lenguaje C que utilicen hilos y procesos para comparar el rendimiento del sistema ante la gestión de unos y otros.
Informática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial Entrada y salida estándar V1.3 Autores Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato:
Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.
Lenguaje C Un poco de historia C es un lenguaje de propósito general, es decir, se pueden desarrollar aplicaciones de diversas áreas. Dentro de sus principales características podemos mencionar que: Es
Estructura de datos y Programación
Estructura de datos y Programación Tema: Conceptos Básicos- Estructuras de control - Arreglos Ing. Analia Méndez Ing. Raquel Zarco Año: 2012 ELEMENTOS DE UN PROGRAMA EN JAVA El programa Java consta de
TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O
TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO Definición y objetivos de un S.O Definición y objetivos del sistema operativo Estructura, componentes y servicios de un S.O Llamadas al sistema
PARTE II PROGRAMACION CON THREADS EN C
PARTE II PROGRAMACION CON THREADS EN C II.1 INTRODUCCION Una librería o paquete de threads permite escribir programas con varios puntos simultáneos de ejecución, sincronizados a través de memoria compartida.
EJERCICIOS MANEJO DE ESTRUCTURAS BÁSICAS SCRIPTS
EJERCICIOS MANEJO DE ESTRUCTURAS BÁSICAS SCRIPTS Ejercicio 1: Hacer un script que muestre por pantalla el mensaje Hola mundo. Ejecútalo de las dos formas vistas Ejercicio 2: Realizar otro script que cree
Programación. Test Autoevaluación Tema 3
Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.
Linux 101 Gestión de Procesos
Gestión de Procesos Entendiendo el Kernel El kernel de linux es el corazón de todo sistema linux, es el encargado de que el software y el hardware puedan trabajar juntos. Administración de memoria para
Introducción a la Programación
Introducción a la Programación Fundamentos de Programación Ingeniería Informática en Sistemas de Información Alicia Troncoso 1 Contenido l Introducción l Mi primer programa l Etapas a seguir en la programación
Elementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
Programación I Funciones
1 Funciones Iván Cantador 2 Funciones: definición, sintaxis, ejemplos (I) Una funciónes un bloque de sentencias identificado con un nombre que se ejecutan de manera secuencial ofreciendo una funcionalidad
Archivos en lenguaje C
Archivos en lenguaje C Los archivos, a diferencia de las estructuras de datos conocidas hasta ahora (variables simples, arreglos) son estructuras de datos almacenadas de manera permanente (discos rígidos,
Sistema Operativo. Repaso de Estructura de Computadores. Componentes Hardware. Elementos Básicos
Sistema Operativo Repaso de Estructura de Computadores Capítulo 1 Explota los recursos hardware de uno o más procesadores Proporciona un conjunto de servicios a los usuarios del sistema Gestiona la memoria
Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen
Fundamentos de Informática. Dpto. de ATC - Página 1 de 8 conceptos Manejo de ficheros en C Contienen los datos que se almacenan en dispositivos de almacenamiento masivo: disquetes, discos duros, DROM,
SESIÓN DE EJERCICIOS E1
SESIÓN DE EJERCICIOS E1 Primera parte: ejercicios test (soluciones al final) A resolver antes de comenzar la sesión en el aula Ejercicio 1 Qué definición de constantes es la correcta en lenguaje C? a)
Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros
Práctica 3. Paso de parámetros entre subrutinas 1. Objetivo de la práctica El objetivo de esta práctica es que el estudiante se familiarice con la programación en ensamblador y el convenio de paso de parámetros
Taller de programación shell
Taller de programación shell 3 de Abril de 2004 revisión 1 Asociación de Usuarios de Software Libre de Elche http://www.kleenux.org/ Introducción: Qué es un shell? Es una parte fundamental de todo sistema
Introducción al Sistema Operativo Unix
Introducción al Sistema Operativo Unix Sistema Operativo Un sistema operativo es software que supervisa la forma en que se pueden usar los recursos de una computadora. En algunas computadoras el sistema
TIPOS DE DATOS BASICOS EN LENGUAJE C
TIPOS DE DATOS BASICOS EN LENGUAJE C TIPO char int float double void ANCHO EN BIT 64 0 TIPOS DE DATOS RANGO EN PC -12 a 127 3.4E-3 a 3.4E+3 1.7E-30 a 1.7E+30 sin valores TIPO ANCHO EN BIT RANGO EN PC char
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:
Sistemas Operativos Primer Recuperatorio Parcial 1
1.- El siguiente código intenta representar la solución a la siguiente problemática: Un proceso crea un conjunto de procesos hijos al mismo nivel y le asigna a cada uno una tarea determinada, cada proceso
EDITRAN/TR. Windows/Unix. Manual de referencia
EDITRAN/TR Windows/Unix Manual de referencia INDRA 30 de octubre de 2014 ÍNDICE 1. INTRODUCCIÓN.... 1-1 2. INTERFAZ DE PROGRAMACIÓN.... 2-1 2.1. DESCRIPCION... 2-1 2.2. FUNCIONES DE ENVIO Y RECEPCION...
Sintaxis de los aspectos generales de un lenguaje de programación
Sintaxis de los aspectos generales de un lenguaje de programación por Iván Cruz Un lenguaje de programación cuenta con una estructura y sintaxis que debe ser utilizada exactamente como se indique para
Gestión de procesos en Linux
Gestión de procesos en Linux Un proceso en Linux es, en resumen, un programa en ejecución. Un proceso puede crear a su vez otros procesos. Al proceso que genera otro proceso se le llama proceso padre.
INTRODUCCIÓN AL LENGUAJE C
INTRODUCCIÓN AL LENGUAJE C Fundamentos de Informática EUP ULPGC Jose Torres 1 de 36 Historia de C Precursores: muchas ideas provienen de BCPL (Martin Richards, 1967) y de B (Ken Thompson, 1970) C fue diseñado
FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial
FUNDAMENTOS DE INFORMÁTICA 1º PRÁCTICA 1: Introducción al entorno de programación Dev-C++ CURSO 2005/2006 División de Ingeniería de Sistemas y Automática ISA-UMH R-00-FI001v1.0 1. Objetivos Los objetivos
1. Sistema Operativo Unix
1. Sistema Operativo Unix 1.1 Introducción al S.O. Unix y su entorno 1.2 Subsistema de Archivos 1.3 Subsistema de Procesos 1.4 Políticas de Gestión de Memoria Dpto. Lenguajes y Sistemas Informáticos. Universidad
PRÁCTICAS DE SS.OO. Universidad de Murcia. I.I./I.T.I. Sistemas/I.T.I. Gestión
Universidad de Murcia Facultad de Informática Departamento de Ingeniería y Tecnología de Computadores Área de Arquitectura y Tecnología de Computadores PRÁCTICAS DE SS.OO. I.I./I.T.I. Sistemas/I.T.I. Gestión
Guía rápida para gestionar el puerto paralelo del PC
Guía rápida para gestionar el puerto paralelo del PC Descarga desde: http://eii.unex.es/profesores/jisuarez/descargas/ip/guia_rapida_pp.pdf José Ignacio Suárez Marcelo Universidad de Extremadura Escuela
Capitulo 2. Programación Modular
Capitulo 2. Programación Modular Consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable. Se presenta históricamente como una evolución de la programación
WHILE Y DO WHILE BREAK EN LENGUAJE C. BUCLES MIENTRAS. FORZAR SALIDA O TERMINACIÓN. EJEMPLO (CU00534F)
Bucles en lenguaje C Bucle while y forzar detención con break APRENDERAPROGRAMARCOM WHILE Y DO WHILE BREAK EN LENGUAJE C BUCLES MIENTRAS FORZAR SALIDA O TERMINACIÓN EJEMPLO (CU00534F) Sección: Cursos Categoría:
SOLUCION EXAMEN junio 2006
SOLUCION EXAMEN junio 2006 1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas: I) (1 p) En UNIX únicamente se distinguen dos tipos de procesos: los procesos de usuario y los
PROGRAMACIÓN EN LENGUAJE C VARIABLES Y CONSTANTES
VARIABLES Y CONSTANTES Variables: Es un espacio reservado en la memoria donde podemos almacenar un valor durante la ejecución de un programa, a dicho espacio se le asocia un nombre (identificador). El
Sistemas Operativos Práctica 3
Sistemas Operativos Práctica 3 Ing. Andrés Bustamante [email protected] Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que
CICLOS DEL PROCESADOR
UNIDAD DE CONTROL CICLOS DEL PROCESADOR Qué es un ciclo de búsqueda? Para qué sirve estudiar los ciclos de instrucción de una CPU? Para comprender el funcionamiento de la ejecución de instrucciones del
SISTEMAS OPERATIVOS PROCESOS. Pedro de Miguel Anasagast
SISTEMAS OPERATIVOS PROCESOS Pedro de Miguel Anasagast ÍNDICE Conceptos generales de procesos Multitarea Servidores y demonios Servicios UNIX de gestión de procesos Señales y temporizadores Servicios UNIX
Examen Final de SO Grau
Preguntas cortas 1. (0,5 puntos) Asumiendo que ninguna llamada devuelve error, representa las entradas nuevas de la TFA que aparecerán tras la ejecución del siguiente código: fork(); mknod( pipe, S_IFIFO
Funciones POSIX III Funciones POSIX III. No Nombrados Nombrados. sem_open sem_open. sem_close sem_close. sem_unlink sem_unlink
Funciones POSIX III Funciones POSIX III Sincronización Sincronización Procesos Procesos Semáforos Semáforos (sem_t) (sem_t) Sincronización Sincronización Threads Threads Mutex Mutex (pthread_mutex_t) (pthread_mutex_t)
Ejercicio Sockets Suma Resta. Descripción
Ejercicio Sockets Suma Resta Siguiendo con nuestra propuesta de construir embriones de servicios, como hemos hecho en la práctica programando un embrión de Telnet, un embrión de cliente de un servidor
Curso Operador Linux
Curso Operador Linux Módulo 6 CONTROL DE PROCESOS Página 1 de 11 Presentación En esta unidad se introducirá a los participantes en el manejo y control de los procesos. Objetivos Los participantes al finalizar
Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C
Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales
ESTRUCTURA DE COMPUTADORES I (Capítulo 16:El Teclado) 1/5 16-EL TECLADO
ESTRUCTURA DE COMPUTADORES I (Capítulo 16:El Teclado) 1/5 16-EL TECLADO 16.1 INTRODUCCIÓN: El teclado se comunica con la BIOS a través de puertos de comunicación controlados por las interrupciones de la
Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL
Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Cualquier duda sobre el contenido de este tema se puede enviar al foro TEORIA2. 2.1.- El tipo de datos entero (byte,
Dobles: Es el caso de la instrucción if-else (punto 1.2).
1 1.Introducción Las estructuras de control son instrucciones que nos permiten controlar el flujo de ejecución del programa. Las instrucciones de control se pueden agrupar en instrucciones condicionales
Estructuración del programa en partes más pequeñas y sencillas
Introducción Estructuración del programa en partes más pequeñas y sencillas Modularización Propósito único Identificable Reusable Mayor claridad: programación, depuración, etc. Construcción de librerías
En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.
El primer objetivo de un programa informático es el manejo de datos. Un dato es toda aquella información que se puede tratar en un programa informático. En este artículo vamos a conocer los tipos de datos
EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO
EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO TIPOS DE DATOS BÁSICOS: Tipo Tipo Tamaño aproximado en bits Rango mínimo Carácter char 8 0 a 55 Entero int 16-3767 a 3767 Real float 3
Tema 5. Entrada y Salida
Tema 5 Entrada y Salida Contenidos 1. Conceptos Previos de Entrada y Salida de Datos. 2. Funciones de Salida de Datos. putchar puts printf 3. Funciones de Entrada de Datos. getchar gets scanf 4. Ficheros
Introducción a Sistemas Operativos: Concurrencia
Introducción a Sistemas Operativos: Concurrencia Clips xxx Fr ancisco J Ballesteros 1. Semáforos Quizá la abstracción más conocida para sincronizar procesos en programación concurrente controlar el acceso
Ejercicios Tema 6. Funciones
Ejercicios Tema 6. Funciones 1. Programa que calcule el cuadrado de todos los números comprendidos entre dos dados. Usar una función a la que se le pasa como parámetro un valor y retorna su cuadrado. 2.
Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1
Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Empresa Videojuegos (3.5 ptos.)... 1 1.2 Ejercicio 2: Clase Rectangulo (1.0 pto.)... 3 1.3 Ejercicio
Fundamentos de programación
Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador
Fundamentos de Informática 4. Primeros Programas, Primeros Diseños
Fundamentos de Informática 4. Primeros Programas, Primeros Diseños Fundamentos de Informática Grado en Ingeniería Química 2 Contenidos 1 Empezando con C 2 Variables 3 Entrada de datos 4 Operadores 5 Condiciones
1. Procesos vs Hilos 2. Cuando se ejecutan los procesos 3. Fork 4. Clone 5. Cómo se ejucuta el fork? 6. do_fork() 7. copy_process 8.
1. Procesos vs Hilos 2. Cuando se ejecutan los procesos 3. Fork 4. Clone 5. Cómo se ejucuta el fork? 6. do_fork() 7. copy_process 8. Código Proceso Manejados por el sistema operativo Memoria independiente
Concurrencia en UNIX / LINUX. Introducción: Procesos e Hilos POSIX
Concurrencia en UNIX / LINUX Introducción: Procesos e Hilos POSIX El estándar POSIX POSIX: Interfaz de sistemas operativos portables. Basado en UNIX A pesar de que UNIX es ya de por sí estándar, había
Programación Concurrente
Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 1. Introducción al estándar POSIX Tema 2. Sistema Operativo MaRTE OS Tema 3. Gestión de Threads Tema 5.
