Práctica 2. Teoría. Memoria Compartida y Semáforos

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Práctica 2. Teoría. Memoria Compartida y Semáforos"

Transcripción

1 Práctica 2 Grupos Realización Entrega/Evaluación Lunes 22 de Marzo, 12 y 19 de Abril 26 de Abril Martes 23 de Marzo, 13 y 20 de Abril 27 de Abril Miércoles 24 de Marzo, 14 y 21 de Abril 28 de Abril Viernes 26 de Marzo, 9 y 16 de Abril 23 de Abril Teoría Memoria Compartida y Semáforos En esta segunda práctica de Sistemas Operativos, vamos a aprender a comunicar datos entre varios procesos en ejecución mediante la memoria compartida. La memoria compartida es una zona de memoria común a la que todos los procesos pueden conseguir acceso y de esta forma, lo que un proceso escribe en la memoria, es accesible al resto de procesos. Las funciones para trabajar con memoria compartida en UNIX en C están incluidas en los includes <sys/types.h>, <sys/ipc.h> y <sys/shm.h>. En particular, las funciones que usaremos son: shmget, shmat, shmdt y shmctl. Todas ellas documentadas en línea (comando man). Hay que tener también en cuenta e investigar, una consideración que no está documentada. En algunos sistemas UNIX, para utilizar la función shmget es necesario usar los flags SHM_W y SHM_R además del flag IPC_CREAT. Estos flags definen la memoria compartida como un área de memoria donde los procesos pueden escribir y de la que pueden leer, respectivamente. Veremos cómo si estos flags no se definen, la memoria compartida se crea pero los procesos no pueden escribir o leer de ella. Además, en esta práctica estudiaremos los riesgos que tiene el acceso concurrente por varios procesos a la memoria compartida, y como evitarlos mediante el uso de semáforos. Aprenderemos dos tipos de semáforos: Los semáforos binarios: sólo pueden tomar dos valores (0 ó 1). Cuando el semáforo está a 1 permite el acceso del proceso a la sección crítica, mientras que con 0 bloquea el acceso a ella. Este tipo de semáforos es especialmente útil para garantizar la exclusión mutua a la hora de realizar una tarea crítica en la memoria compartida. Por ejemplo, para controlar la escritura de variables en memoria compartida, de forma que sólo se permita que un proceso esté en la sección crítica mientras que se están modificando los datos. Los semáforos N arios: pueden tomar valores desde 0 hasta N. El funcionamiento es similar al de los semáforos binarios. Esto es, cuando el semáforo está a 0, está cerrado y no permite el acceso a la sección crítica. La diferencia está en que puede tomar cualquier otro valor positivo además de 1. De hecho, este tipo de semáforos son muy útiles para permitir que un determinado número de procesos trabajen concurrentemente en alguna tarea no crítica en la memoria compartida. Por ejemplo, varios procesos pueden estar leyendo simultáneamente de la memoria compartida, mientras que ningún otro proceso intente modificar datos. También, nos familiarizaremos con dos operaciones fundamentales que debemos conocer a la hora de trabajar con semáforos y sus ventajas al ser operaciones atómicas: Down, p, wait o toma_semaforo: Consiste en la petición del semáforo por parte de un Escuela Politécnica Superior Universidad Autónoma de Madrid 1

2 proceso que quiere entrar en la sección crítica. Internamente el sistema operativo comprueba el valor del semáforo. De forma que si está a 1, se le concede el acceso a la sección crítica (por ej. escribir un dato en la memoria compartida) y de forma atómica decrementa el valor del semáforo para bloquear el paso a cualquier otro proceso que intente acceder a la sección crítica. Por lo tanto, si el semáforo está a 0, el proceso queda bloqueado (sin consumir tiempo de CPU) hasta que el valor del semáforo vuelva a ser 1 y obtenga el acceso a la sección crítica. Up, v, signal o libera_semaforo: Consiste en la liberación del semáforo por parte del proceso que ya ha terminado de trabajar en la sección crítica y por lo tanto de forma atómica incrementa el valor del semáforo en una unidad. De forma, por ejemplo, que si el semáforo fuera binario y estuviera a 0 pasaría a valer 1, y se permitiría el acceso a cualquier otro proceso que estuviera bloqueado en espera de conseguir acceso a la sección crítica. Las funciones para trabajar con semáforos en UNIX en C están incluidas en las librerías <sys/types.h>, <sys/ipc.h> y <sys/sem.h>. En particular, las funciones son semget, semop y semctl. Al igual que las otras funciones, están documentadas en líneas (comando man). Estas funciones, aunque muy potentes, son habitualmente complicadas de usar, por lo que se recomienda utilizarlas en su versión más básica, siempre que sea posible. Entre las complicaciones introducidas por estas funciones, es importante prestar atención a las siguientes: En vez de un solo semáforo clásico representado por un entero no negativo, en realidad semget define un array de semáforos del tamaño especificado. Hay que trabajar por tanto con conjuntos de semáforos, aunque para crear un sólo semáforo necesitemos crear un array de un solo elemento. La creación de un semáforo es independiente de su inicialización, lo cual es especialmente peligroso ya que no se puede crear un semáforo inicializado de forma atómica. Es el programador el que debe tener cuidado de inicializar siempre los semáforos que cree. Es fundamental a la hora de colocar semáforos, intentar seguir algún algoritmo ya diseñado para resolver casos tipo como: lectores/escritores, productor/consumidor, el problema de la barbería, o la cena de los filósofos y evitar, entre otras problemas, interbloqueos entre procesos. Por último, comentaros dos comandos muy útiles, no sólo para esta práctica sino también para la práctica 3 (y en general siempre que trabajéis en programación concurrente en UNIX). Son los comandos ipcs e ipcrm y nos permiten inspeccionar los recursos compartidos (memoria compartida, semáforos y mensajes) de un usuario y eliminarlos en caso de que sea necesario. Ejercicios Dado el siguiente código de creación de memoria compartida: #include <sys/ipc.h> #include <sys/shm.h> #include <sys/types.h> #include <errno.h> #include <stdlib.h> #define CLAVE_MEMORIA 2555 int main() { int shm; Escuela Politécnica Superior Universidad Autónoma de Madrid 2

3 shm = shmget(clave_memoria, sizeof(int), IPC_CREAT); if (shm == -1) { perror("shmget:"); exit(-1); exit(0); 1. Ejecuta el anterior programay comprueba qué ha tenido lugar en el sistema. Ejecuta los comandos de Shell necesarios para restaurar el sistema a su estado original (0,5 puntos) 2. Modifícalo en un programa1.c para que cree la memoria compartida sólo en caso de que no exista previamente. Si ya existiese sólo debe mostrar un mensaje indicando que ya está creada (1,5 puntos). 3. Modifícalo de nuevo en un programa2.c para que libere la memoria compartida al salir sólo si fue él quien la creó. En caso contrario debe mostrar un mensaje en pantalla indicando el identificador de la memoria. (2 puntos). Compila ahora el siguiente código y ejecútalo. #include <sys/ipc.h> #include <sys/shm.h> #include <sys/types.h> #include <errno.h> #include <stdlib.h> #define CLAVE_MEMORIA 1555 int main() { int shm; int * dir = NULL; int numero = 2; shm = shmget(clave_memoria, sizeof(int), IPC_CREAT SHM_R SHM_W); if (shm == -1) { perror("shmget:"); exit(-1); dir = (int *) shmat (shm, NULL, 0); (*dir) = numero; exit(0); 4. Explica qué hace el anterior código. Explica qué pasa si lanzas una segunda vez el programa (0,5 puntos) 5. Modifica el código anterior en un programa3.c para engancharse a la memoria Escuela Politécnica Superior Universidad Autónoma de Madrid 3

4 compartida aunque esta exista previamente. Controla todos los errores posibles y realiza una salida limpia del programa liberando todos los recursos utilizados. (2 puntos) 6. Modifica el código anterior en otro programa3b.c en el que una vez enganchado a la memoria el proceso en vez de asignar a la memoria compartida el valor de la variable numero simplemente incremente su contenido y lo imprima por la salida estándar. Compílalo y ejecútalo varias veces. Explica los resultados. Controla todos los errores posibles y realiza una salida limpia del programa liberando todos los recursos utilizados. (0,5 puntos) Cuando un segmento de memoria compartida es borrado en realidad sólo se marca para borrado. La eliminación definitiva del segmento se realiza cuando todos los procesos enganchados a él se desenganchan. 7. Realiza un programa sencillo (programa4.c) que demuestre esto y explica como lo hace 1. (3 puntos) Compila el siguiente código y ejecútalo. #include <sys/ipc.h> #include <sys/shm.h> #include <sys/sem.h> #include <sys/types.h> #include <errno.h> #include <stdlib.h> #define CLAVE_SEMAFORO 2000 int main() { int semid; semid = semget(clave_semaforo, 1, IPC_CREAT IPC_EXCL SHM_R SHM_W); if (semid == -1 && errno == EEXIST) semid = semget(clave_semaforo, 1, SHM_R SHM_W); if (semid == -1) { perror("semget:"); exit(errno); exit(0); 8. Modifícalo en un programa5.c para crear 10 semáforos e inicializarlos con valores desde 1 hasta 10. (2 puntos). 1 Puedes usar fork e ipcs. Escuela Politécnica Superior Universidad Autónoma de Madrid 4

5 9. Modifícalo de nuevo en un programa6.c para liberar correctamente los semáforos antes de salir. (1 punto) 10. Escribe una función de prototipo: int down (int id, int num_sem) que llame a semop para bloquear el semáforo en la posición num_sem de un array de semáforos con identificador id. Si todo es correcto devolverá 0 y otro valor en caso de error. (1 punto) 11. Escribe una función de prototipo: int up (int id, int num_sem) que llame a semop para liberar el semáforo en la posición num_sem del array de semáforos con identificador id. Si todo es correcto devolverá 0 y otro valor en caso de error. (1 punto) Analiza el siguiente código y fíjate que está incompleto en algunos puntos. #include <sys/ipc.h> // Completar las librerías #include <stdlib.h> #define CLAVE_SEMAFORO 2000 // Completar las definiciones de constantes #define SEM_MUTEX 0 // Poner aquí el código de la función down desarrollada en el ejercicio 7 // Poner aquí el código de la función up desarrollada en el ejercicio 8 int main() { int semid, shm; union semun carg; unsigned short int array[num_semaforos]; int * dir = NULL; semid = semget(clave_semaforo, 1, IPC_CREAT IPC_EXCL SHM_R SHM_W); if (semid == -1 && errno == EEXIST) semid = semget(clave_semaforo, 1, SHM_R SHM_W); if (semid == -1) { perror("semget:"); exit(errno); // inicializar el semáforo mutex a 1 // crear una zona de memoria compartida de identificar shm para guardar un // entero y obtener el puntero para acceder a ella down(semid, SEM_MUTEX); (*dir) = 2; up(semid, SEM_MUTEX); // liberar la memoria compartida y los semáforos exit(0); 12. Completa este código en un programa7.c y no olvides controlar posibles errores y realizar Escuela Politécnica Superior Universidad Autónoma de Madrid 5

6 una correcta liberación de recursos. (3 puntos) 13. Qué problema hay si falla la función down? (1 punto) 14. Y si falla la función up? (1 punto) Cuando un proceso está bloqueado en un semáforo y recibe una señal el proceso queda libre del semáforo tras atender a la señal. Esto puede ser causa de errores no deseados. 15. Modifica la función de down anterior en un programa8.c para tener esto en cuenta y volver a realizar la espera en caso de haber recibido una señal. (1 punto) 16. Si habíamos realizado un down y recibimos una señal que nos haga finalizar el proceso, SIGKILL por ejemplo, dejaríamos inutilizado el semáforo. Modifica el código del down y el up para evitar esto en un programa9.c (2 puntos) 17. Cómo se puede saber cuántos procesos están esperando a coger un semáforo? Escribe un programa10.c que demuestre tu respuesta. (3 puntos) 18. Cómo se puede saber el valor de un semáforo? Escribe un programa11.c que demuestre tu respuesta. (3 puntos) Ejercicio final de la practica 2 Realizar dos programas que implementan un sistema de SMS trivial: 1. El primero se llama envía y toma dos parámetros: el destinatario (una cadena de caracteres) y el texto del mensaje (otra cadena de caracteres). Este programa se usa para enviar un mensaje a un destinatario 2. El segundo se llama recibe y toma un único parámetro que es el nombre del destinatario. Este programa lee todos los mensajes pendientes para el destinatario especificado y los muestra por pantalla. También los elimina para que no se puedan leer la siguiente vez que se invoque este programa. El funcionamiento de ambos será como sigue. Ambos programas: 1. Crearán una memoria compartida si esta no existe o se engancharán a ella si ya existiese. En cualquier caso mostrará un mensaje por pantalla indicando la creación o el enganche (1 punto). 2. Crearán los semáforos necesarios para controlar el acceso a dicha memoria indicando también si ya existían o no. (1 punto) 3. La memoria compartida se usará para guardar los mensajes que consistirán cada mensaje en dos Escuela Politécnica Superior Universidad Autónoma de Madrid 6

7 campos de tipo cadena de caracteres (el destinatario y el mensaje). Es decir, si se teclea en una consola: >./envía pepe Esto es un ejemplo guardará en la memoria compartida la estructura con tres campos: el destinatario: pepe, el mensaje: Esto es un ejemplo, y un entero que indica si el mensaje ha sido leído ya o no. Al insertarse como no se ha leído todavía valdrá 0. Posteriormente cuando se lea habrá que cambiar ese valor a 1 Esta anotación se añadirá a lo que ya hubiera en dicha memoria. (1,5 puntos) 4. Del mismo modo el programa recibe sirve para buscar en la memoria compartida todos los mensajes asociados al destinatario que se pasa como parámetro, imprimirlos por pantalla y eliminarlos de la memoria compartida.. Así si se escribe en la consola lo siguiente: >./recibe pepe Buscará en la memoria compartida todas las estructuras de mensaje que tengan como destinatario pepe, y para cada una de ellas, imprimirá el texto del mensaje en pantalla y marcará el mensaje como leído, para eso cambiará el tercer campo del mensaje a 1. Es decir por pantalla se vería: > Mensaje 1 (no leído): Esto es un ejemplo Si ahora volvemos a ejecutar >./recibe pepe El resultado ahora será (ya que el mensaje se ha leído anteriormente): > Mensaje 1 (leído anteriormente): Esto es un ejemplo (2,5 puntos) 5. Si se invoca el programa envía con un signo se imprimirá por pantalla una estadística indicando cuantos mensajes han sido enviados, cuantos han sido leídos y cuantos no. De seguido se liberarán todos los recursos esperando previamente a que nadie esté usando dicha memoria. Es decir, si se teclea en una consola: >./envia eliminará la memoria compartida, los semáforos y cualquier otro recurso que use el programa. (2 puntos, uno de la espera y otro de la eliminación) 6. La estructuración de la memoria compartida es importante para hacer un uso eficiente de la misma, por lo que se deberán definir estructuras de tamaño fijo que permitan almacenar en la memoria compartida una lista de mensajes donde cada mensaje es una estructura de tres campos (de tamaño fijo): el destinatario, el texto del mensaje y el entero que indica si está leído o no. (2 puntos). 7. Puede darse el caso de que varias instancias del programa estén funcionando a la vez por lo que el acceso a la memoria compartida debe ser protegido mediante los semáforos por algún algoritmo a elección del alumno que debe justificar adecuadamente su decisión. (2 puntos, uno de las funciones up y down y otro por el uso correcto de ellas) Escuela Politécnica Superior Universidad Autónoma de Madrid 7

8 8. Deben controlarse correctamente todos los errores durante el manejo de las llamadas al sistema (creación de memoria, semáforos, etc.). (2 puntos) 9. Todos los errores propios de la aplicación, como por ejemplo intentar anotar algo cuando no hay espacio, deben ser correctamente manejados e informados al usuario. (2 puntos) 10. El código debe ser claro (desde 1 hasta 1 punto dependiendo de la claridad). 11. El código debe estar estructurado adecuadamente (desde 2 hasta 2 puntos dependiendo de la calidad). 12. Las funciones bloqueantes deben estar preparadas para el caso de que reciban una señal. (1 punto) 13. Cualquier mejora que se proponga y justifique adecuadamente (hasta 5 puntos). Algunas aclaraciones sobre el ejercicio final: El programa debe ser entregado con un makefile e instrucciones de compilación. Si no fuese así o no compilase la nota en esta parte sería un cero. El orden de creación de memoria y semáforos lo decide el alumno. La organización interna de la memoria compartida y su tamaño lo decide el alumno pero debe ser suficiente como para guardar 1000 caracteres de anotaciones. El programa se ejecuta y tras realizar su tarea se sale. Cualquier cambio sobre estas especificaciones debe ser consultado antes con el profesor. En caso contrario se considerará un fallo. Cualquier mejora que decidan realizar debe ser comentada en la memoria y será tenida en cuenta. Escuela Politécnica Superior Universidad Autónoma de Madrid 8

9 Criterios de evaluación de la práctica 1. Todos los ejercicios son obligatorios. La puntuación se obtiene aplicando una regla de tres directa, en la que la suma del total de puntos de todos los ejercicios de la práctica equivale a obtener un Aquellos ejercicios que no contienen una respuesta con código, se evaluarán atendiendo a la explicación realizada por el alumno/a. Para que el razonamiento sea considerado válido debe ser suficientemente detallado y se puede apoyar en documentación externa. En ningún caso, se considerará una respuesta válida una captura de pantalla sin explicación, o un código sin explicación. 3. Los ejercicios que solicitan la realización de un código, deben ser también explicados, tanto a nivel de comentarios en el propio código (que se debe entregar junto con la memoria, inserto en los ejercicios o en apéndices), como en texto como respuesta al ejercicio. Esto es, especialmente relevante en el caso del ejercicio final que debe ir acompañado de una descripción textual del diseño realizado y la solución propuesta en el código. 4. No se tendrá en cuenta código que no compila. Recibiendo una fuerte penalización programas que no realizan una correcta liberación de los recursos solicitados al Sistema Operativo (por ej. dejar procesos zombie), o que no tienen un correcto control de errores implementado (con especial interés en el control de errores de las llamadas del sistema operativo tratadas en esta práctica). 5. Por último, se valorará la correcta aplicación de los principios de la programación estructurada (esto es, estructurar el código en funciones en la medida de lo posible, separar las definiciones y estructuras en un archivo.h, no usar números mágicos, etc.) Escuela Politécnica Superior Universidad Autónoma de Madrid 9

Teoría. Procesos. Escuela Politécnica Superior Universidad Autónoma de Madrid 1

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

Más detalles

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Tema 6 : IPC del Unix System V Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Introducción El paquete de comunicación

Más detalles

Sistemas Operativos I. Enxeñería Informática. Curso 2007/08. Práctica 2: Concurrencia de procesos: Productores/Consumidores.

Sistemas Operativos I. Enxeñería Informática. Curso 2007/08. Práctica 2: Concurrencia de procesos: Productores/Consumidores. Sistemas Operativos I. Enxeñería Informática. Curso 2007/08. Práctica 2: Concurrencia de procesos: Productores/Consumidores. En esta práctica se tratará de resolver el problema de los productores/consumidores

Más detalles

Concurrencia. Primitivas IPC con bloqueo

Concurrencia. Primitivas IPC con bloqueo Concurrencia Primitivas IPC con bloqueo Primitivas de IPC con bloqueo La solución de Peterson es correcta, pero tiene el defecto de requerir espera ocupada: Cuando un proceso quiere entrar en su región

Más detalles

Memoria Compartida. Llave de acceso. Segmento Compartido. estructura definida en A. estructura definida en B. Proceso B. Proceso A

Memoria Compartida. Llave de acceso. Segmento Compartido. estructura definida en A. estructura definida en B. Proceso B. Proceso A Memoria Compartida Llave de acceso 1234 Segmento Compartido apuntador estructura definida en A apuntador estructura definida en B Proceso A Proceso B Dr. Roberto Gómez Diapo No. 1 Librerías y estructuras

Más detalles

Sistemas Operativos Ingeniería de telecomunicaciones Sesión 3: Concurrencia

Sistemas Operativos Ingeniería de telecomunicaciones Sesión 3: Concurrencia Sistemas Operativos Ingeniería de telecomunicaciones Sesión 3: Concurrencia Calendario Comienzo: Lunes 2 de noviembre y miércoles 4 de noviembre. Entrega: 16 de noviembre y 18 de noviembre. 1. Requisitos

Más detalles

Prácticas de Sistemas operativos

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 Séptima semana: semáforos 1 Cronograma semanal 2 Introducción 3 Ejemplo 1 4 Ejemplo

Más detalles

Los semáforos en Unix

Los semáforos en Unix Los semáforos en Unix Semáforos multi-valuados, no binarios Se puede crear un arreglo de semáforos con una simple llamada Posibilidad de especificar una sola operación en un solo semáforo Posibilidad de

Más detalles

Memoria compartida y semáforos r/w. La página del manual que podría servir para describir estas funciones es la siguiente:

Memoria compartida y semáforos r/w. La página del manual que podría servir para describir estas funciones es la siguiente: (3 ptos) Memoria Compartida y Semáforos R/W 1. Objetivo En esta práctica se pretende crear una librería que dé la funcionalidad de un semáforo para resolver problemas con múltiples lectores y escritores

Más detalles

Concurrencia Monitores. Guillermo Román Díez

Concurrencia Monitores. Guillermo Román Díez Concurrencia Monitores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Monitores 1/25 Recursos Compartidos Pregunta La especificación de

Más detalles

roducción a la programación con el lenguaje C usando el entorno de trabajo Dev-C. Nociones básicas de programación

roducción a la programación con el lenguaje C usando el entorno de trabajo Dev-C. Nociones básicas de programación There are no translations available. Introducción a la programación con el lenguaje C usando el entorno de trabajo Dev-C. roducción a la programación con el lenguaje C usando el entorno de trabajo Dev-C.

Más detalles

Departamento de Electrónica

Departamento de Electrónica Introducción al Departamento de Electrónica Fundación San Valero Introducción al 1 Introducción al Introducción al 2 Introducción al Introducción al 3 Características del Características del Departamento

Más detalles

FCS03-3 Manual de Usuario ED. 2 MANUAL DE USUARIO

FCS03-3 Manual de Usuario ED. 2 MANUAL DE USUARIO MANUAL DE USUARIO 1 ÍNDICE 1 INTRODUCCIÓN... 3 2 ENTRADA AL SISTEMA... 3 2.1 Acceso a la aplicación... 3 2.2 Usuario Autenticado... 4 2.3 Cuenta... 4 2.4 Contraseña... 5 2.5 Página de inicio... 6 3 ALUMNOS...

Más detalles

ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. PRIMERO CURSO PRÁCTICA 1: INTRODUCCIÓN A LA PROGRAMACIÓN EN C

ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. PRIMERO CURSO PRÁCTICA 1: INTRODUCCIÓN A LA PROGRAMACIÓN EN C OBJETIVOS ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. PRIMERO CURSO 2012-13 PRÁCTICA 1: INTRODUCCIÓN A LA PROGRAMACIÓN EN C En esta práctica se comienza a trabajar con el lenguaje C en los ordenadores

Más detalles

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

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

Más detalles

FCS03-3. Manual de Usuario ED. 3. MANUAL DE USUARIO

FCS03-3. Manual de Usuario ED. 3.  MANUAL DE USUARIO MANUAL DE USUARIO 1 ÍNDICE 1 INTRODUCCIÓN... 3 2 ENTRADA AL SISTEMA... 3 2.1 Acceso a la aplicación... 3 2.2 Usuario Autenticado... 4 2.3 Cuenta... 4 2.4 Contraseña... 5 2.5 Página de inicio... 6 3 ALUMNOS...

Más detalles

ESTRUCTURAS DE DATOS Y DE LA INFORMACIÓN 2

ESTRUCTURAS DE DATOS Y DE LA INFORMACIÓN 2 ESTRUCTURAS DE DATOS Y DE LA INFORMACIÓN 2 Entregas: PRÁCTICA 3: Ficheros y Bases de Datos. 2009-2010 Las fechas de entrega electrónicas serán estrictamente rigurosas. Es obligatorio entregar la práctica

Más detalles

Capítulo 3. Introducción a la programación. Continuar

Capítulo 3. Introducción a la programación. Continuar Capítulo 3 Introducción a la programación Continuar Introducción Java es un lenguaje que tiene muchas ventajas frente a otros lenguajes de programación: es open source (código abierto), esto permite ver

Más detalles

Repaso 02: Apuntadores y manejo de memoria dinámica

Repaso 02: Apuntadores y manejo de memoria dinámica Repaso 02: Apuntadores y manejo de memoria dinámica Solicitado: Ejercicios 02: Programación con memoria dinámica M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom

Más detalles

Introducción a Sistemas Operativos: Ficheros

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,

Más detalles

Comunicación entre Procesos

Comunicación entre Procesos Sincronización y Comunicación de Procesos Sincronización y Comunicación de Procesos Sincronización Sincronización Comunicación Comunicación Condiciones de Condiciones de Carrera Carrera Memoria Memoria

Más detalles

Sistemas Operativos Practica 1: procesos y concurrencia.

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

Más detalles

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Procesos concurrentes y problemas en la comunicación y la sincronización

SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Procesos concurrentes y problemas en la comunicación y la sincronización SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS Procesos concurrentes y problemas en la comunicación y la sincronización Contenido 2 Concurrencia. Condiciones de carrera. Exclusión mutua

Más detalles

Tema 3. Estructuras de control

Tema 3. Estructuras de control Tema 3. Estructuras de control 3.1. Secuencial 3.2. Selección 3.3. Repetición 2 Objetivos Objetivos del tema: Conocer y saber la utilidad de las tres estructuras de control (secuencial, alternativa y repetitiva)

Más detalles

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 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,

Más detalles

Examen de Programación Concurrente - Clave: a Junio 2008 Departamento de Lenguajes, Sistemas Informáticos e Ingeniería del Software.

Examen de Programación Concurrente - Clave: a Junio 2008 Departamento de Lenguajes, Sistemas Informáticos e Ingeniería del Software. Junio 2008 Programación Concurrente 1/6 Normas Examen de Programación Concurrente - Clave: a Junio 2008 Departamento de Lenguajes, Sistemas Informáticos e Ingeniería del Software Este examen es un cuestionario

Más detalles

2. Indica cuál de las siguientes afirmaciones es cierta:

2. Indica cuál de las siguientes afirmaciones es cierta: Nombre:. Indica cuál de las siguientes afirmaciones es cierta: El diseño de un programa procedural está guiado por la división en tareas a realizar, mientras que el diseño orientado a objetos está dirigido

Más detalles

ITACA La aplicación de Gestión de Identidad

ITACA La aplicación de Gestión de Identidad ITACA La aplicación de Gestión de Identidad Índice La aplicación de Gestión de Identidad 3 Cambiar mis datos personales 3 Cambiar Contraseña 6 Administración de Usuarios 7 Creación de Usuario 10 Añadir

Más detalles

Funciones básicas del depurador

Funciones básicas del depurador Funciones básicas del depurador Con frecuencia, los alumnos piensan que cuando su programa no tiene errores de compilación (está correctamente escrito) entonces ya es correcto. Muchas veces esto no es

Más detalles

Aviso 2: Escriba con buena letra y evite los tachones. Aviso 3: Solución del examen y fecha de revisión en

Aviso 2: Escriba con buena letra y evite los tachones. Aviso 3: Solución del examen y fecha de revisión en SISTEMAS OPERATIVOS (Código: 71902048) Enero 2012 Material permitido: Solo calculadora no programable Tiempo: 2 horas N1 Aviso 1: Todas las respuestas deben estar debidamente razonadas. Aviso 2: Escriba

Más detalles

Prácticas de Sistemas operativos

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 Sexta semana: memoria compartida Segunda práctica 1 Memoria compartida: ejercicio

Más detalles

Test SITR Temas: Planificación, Sincronización, Comunicación entre Procesos, Relojes, Señales, Temporizadores (TestSITR_T4 T9)

Test SITR Temas: Planificación, Sincronización, Comunicación entre Procesos, Relojes, Señales, Temporizadores (TestSITR_T4 T9) Test SITR Temas: Planificación, Sincronización, Comunicación entre Procesos, Relojes, Señales, Temporizadores (TestSITR_T4 T9) Temas: Planificación Sincronización y Comunicación entre Procesos Funciones

Más detalles

05 Funciones en lenguaje C. Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales

05 Funciones en lenguaje C. Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales 05 Funciones en lenguaje C Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales 1 Temario Programación funcional Declaración (prototipos) y definición de funciones

Más detalles

INSTITUTO HISPANO INGLES DEPARTAMENTO INFORMÁTICA. Guía rápida para el Profesor

INSTITUTO HISPANO INGLES DEPARTAMENTO INFORMÁTICA. Guía rápida para el Profesor INSTITUTO HISPANO INGLES DEPARTAMENTO INFORMÁTICA Guía rápida para el Profesor Guía Rápida SesWeb para Profesores IHI Ingreso a la Plataforma SesWEB v3.1 1. Ingresar al Navegador Internet Explorer versión

Más detalles

Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos

Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos Sistemas operativos: una visión aplicada Capítulo 5 Comunicación y sincronización de procesos Sistema multiprogramado con un una CPU Proceso A Proceso B Proceso C Tiempo Sistemas operativos: una visión

Más detalles

Procesos e Hilos en C

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.

Más detalles

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria Sistemas operativos UPCO ICAI Departamento de Electrónica y Automática 1 Hasta ahora hemos visto Relación programa-sistema operativo Gestión de memoria Reserva para la ejecución Pilas, heap, memoria de

Más detalles

Interbloqueo. Concurrencia: Interbloqueo e Inanición

Interbloqueo. Concurrencia: Interbloqueo e Inanición Interbloqueo Concurrencia: Interbloqueo e Inanición Capítulo 6 Bloqueo permanente de un conjunto de procesos que compiten por recursos del sistema o por comunicación con los otros No existe una solución

Más detalles

Algoritmos y estructuras de datos

Algoritmos y estructuras de datos Algoritmos y estructuras de datos Estructuras, apuntadores y memoria dinámica Francisco Javier Zaragoza Martínez Universidad Autónoma Metropolitana Unidad Azcapotzalco Departamento de Sistemas 11 de mayo

Más detalles

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.

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

Más detalles

Cena de filosofos y sincronizacion java

Cena de filosofos y sincronizacion java Programación concurrente y Distribuída Curso 2011-12 Miguel Telleria, Laura Barros, J.M. Drake telleriam AT unican.es Computadores y Tiempo Real http://www.ctr.unican.es Objetivos Presentaros la aplicación

Más detalles

Examen No. 3 Valor: 50 Puntos (25% de la Nota Final) Tiempo Máximo 2 Horas Fecha: 9 de Diciembre del 2016

Examen No. 3 Valor: 50 Puntos (25% de la Nota Final) Tiempo Máximo 2 Horas Fecha: 9 de Diciembre del 2016 Carrera : Ingeniería del Software ISW Curso : ISW-3 Programación II Periodo : III 06 Horario : Lunes / Viernes Examen No. 3 Valor: 50 Puntos (5% de la Nota Final) Tiempo Máximo Horas Fecha: 9 de Diciembre

Más detalles

Procesos e hilos: cálculo de

Procesos e hilos: cálculo de Departamento de Automática 1 / 10 Índice Creación y sincronización de hilos Acceso a variables globales en exclusión mutua 2 / 10 Objetivo principal: obtener una aproximación al valor de empleando el método

Más detalles

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. 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

Más detalles

LENGUAJES DE PROGRAMACIÓN. Trabajo Práctico - Septiembre de 2017

LENGUAJES DE PROGRAMACIÓN. Trabajo Práctico - Septiembre de 2017 Trabajo Práctico - Septiembre de 2017 INSTRUCCIONES El trabajo práctico debe realizarse de manera individual. No debe realizarse en grupo. Se penalizará cualquier uso compartido de las soluciones propuestas

Más detalles

LABORATORIO 5 FUNCIONES

LABORATORIO 5 FUNCIONES LABORATORIO 5 FUNCIONES 1 OBJETIVOS Al finalizar esta actividad, serás capaz de: Utilizar en la función main funciones matemáticas predefinidas. Entender que es posible aislar subtareas o subcálculos dentro

Más detalles

Unidad 1: Gestión de Procesos

Unidad 1: Gestión de Procesos Unidad 1: Gestión de Procesos Tema 1, Concurrencia: Exclusión mutua y sincronización. 1.1 Problema de la sección crítica, alternativas al uso de semáforos: - Regiones críticas, Monitores, Variables de

Más detalles

Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE

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

Más detalles

Programación 1 Grado de Ingeniería Robótica

Programación 1 Grado de Ingeniería Robótica Programación 1 Grado de Ingeniería Robótica Tema 6: Datos estructurados Índice (sesión 11/11/2015): Arrays estáticos Cadenas de caracteres Funciones de la librería string.h Punteros Declaración de punteros

Más detalles

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009 SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009 4. (2 p) Dos procesos A y B se ejecutan concurrentemente en un determinado sistema. El proceso A ejecuta unas tareas ( Tareas

Más detalles

Práctica 4: Desarrollo de clientes bajo TCP y UDP.

Práctica 4: Desarrollo de clientes bajo TCP y UDP. Práctica 4: Desarrollo de clientes bajo TCP y UDP. Autores: Enrique Bonet Rogelio Montañana Paco Soriano Objetivo y descripción general. El objetivo de esta práctica es el desarrollo de dos clientes, uno

Más detalles

SISTEMAS OPERATIVOS I. CURSO 2010/11. PRÁCTICA 2: Problema de los Productores/Consumidores (concurrencia de procesos)

SISTEMAS OPERATIVOS I. CURSO 2010/11. PRÁCTICA 2: Problema de los Productores/Consumidores (concurrencia de procesos) SISTEMAS OPERATIVOS I. CURSO 2010/11 PRÁCTICA 2: Problema de los Productores/Consumidores (concurrencia de procesos) INTRODUCCIÓN: En esta práctica se tratará de resolver el problema de los productores/consumidores

Más detalles

Ejercicios sobre tuberías

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

Más detalles

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C)

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C) APRENDERAPROGRAMAR.COM REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I Fecha revisión: 2039 Resumen:

Más detalles

ARRAYS (ARREGLOS O FORMACIONES) UNIDIMENSIONALES EN C. DECLARACIÓN. LÍMITES. (CU00512F)

ARRAYS (ARREGLOS O FORMACIONES) UNIDIMENSIONALES EN C. DECLARACIÓN. LÍMITES. (CU00512F) APRENDERAPROGRAMAR.COM ARRAYS (ARREGLOS O FORMACIONES) UNIDIMENSIONALES EN C. DECLARACIÓN. LÍMITES. (CU00512F) Sección: Cursos Categoría: Curso básico de programación en lenguaje C desde cero Fecha revisión:

Más detalles

La secuencia de referencias a páginas para el proceso B es:

La secuencia de referencias a páginas para el proceso B es: SISTEMAS OPERATIVOS (Código: 71902048) Enero 2017 Material permitido: Solo calculadora no programable Tiempo: 2 horas N1 Aviso 1: Todas las respuestas deben estar debidamente razonadas. Aviso 2: Escriba

Más detalles

PUNTEROS (APUNTADORES)

PUNTEROS (APUNTADORES) 2010 UNAN LEON Departamento de Computación Ing. En Sistemas Sabatino Autor: Ing: Karina Esquivel Alvarado. Asignatura: Algoritmo y Estructura de Datos. PUNTEROS (APUNTADORES) TEMA 4: PUNTEROS (APUNTADORES)

Más detalles

Indique la veracidad o falsedad de cada una de las afirmaciones siguientes, explicando detalladamente en cada caso el motivo de su respuesta.

Indique la veracidad o falsedad de cada una de las afirmaciones siguientes, explicando detalladamente en cada caso el motivo de su respuesta. LENGUAJES DE PROGRAMACIÓN INSTRUCCIONES Por favor, entregue esta primera hoja de enunciado junto con el examen. Dispone de 2 horas para realizar el examen. MATERIAL PERMITIDO: Ninguno. Pregunta 1 (3 puntos)

Más detalles

APELLIDOS NOMBRE GRUPO CALIFICACIÓN FECHA

APELLIDOS NOMBRE GRUPO CALIFICACIÓN FECHA Hoja 1/10 Duración: una hora y media Resultados de aprendizaje que se evalúan en este examen: R2: Saber emplear las estructuras de control de flujo de programación para implementar algoritmos sencillos.

Más detalles

Análisis y escritura de las estructuras de control

Análisis y escritura de las estructuras de control Análisis y escritura de las estructuras de control por Iván Cruz En esta lectura se abordarán las estructuras de control del lenguaje de programación C, estas estructuras. Permiten al programador comunicarse

Más detalles

Práctica 1. Presentación de la práctica continua: Implementación de un intérprete de comandos.

Práctica 1. Presentación de la práctica continua: Implementación de un intérprete de comandos. Práctica 1. Presentación de la práctica continua: Implementación de un intérprete de comandos. Grupos Fecha de Realización Fecha de Entrega/Evaluación Lunes 19 y 26 de Febrero y 5 de Marzo 12 de Marzo

Más detalles

APELLIDOS, Nombre: // Resto de s e r v i c i o s p ú b l i c o s e n t r e l o s que s e e n c u e n t r a n i n s e r t a r y // b o r r a r //...

APELLIDOS, Nombre: // Resto de s e r v i c i o s p ú b l i c o s e n t r e l o s que s e e n c u e n t r a n i n s e r t a r y // b o r r a r //... APELLIDOS, Nombre: N o Matrícula: U.P.M. E.T.S.I.Inf Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software. Examen de Programación II. 27 de Marzo de 2014. Primer parcial. Realización:

Más detalles

Procesos e hilos: el downloader

Procesos e hilos: el downloader Departamento de Automática 1 / 8 Descarga de archivos con procesos en paralelo Objetivo principal: descarga de un archivo de gran tamaño de forma eficiente desde Internet Otros objetivos: Utilizar la biblioteca

Más detalles

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

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

Más detalles

Programación Concurrente y Distribuida Ingeniería Informática Facultad de Ciencias Universidad de Cantabria.

Programación Concurrente y Distribuida Ingeniería Informática Facultad de Ciencias Universidad de Cantabria. Programación Concurrente y Distribuida Ingeniería Informática Facultad de Ciencias Universidad de Cantabria. Documento: Práctica 1 Sopa de Letras Autores: Fecha: Laura Barros J.M. Drake 5-6 Octubre Objetivo

Más detalles

Una vez vinculado, el módulo muestra el número del documento oficial ofrece la posibilidad de Visualizar o Desvincular, según se prefiera.

Una vez vinculado, el módulo muestra el número del documento oficial ofrece la posibilidad de Visualizar o Desvincular, según se prefiera. Una vez vinculado, el módulo muestra el número del documento oficial ofrece la posibilidad de Visualizar o Desvincular, según se prefiera. Al finalizar la tarea, se presiona en el botón Guardar. El expediente

Más detalles

LENGUAJES DE PROGRAMACIÓN. Trabajo Práctico - Septiembre de 2012

LENGUAJES DE PROGRAMACIÓN. Trabajo Práctico - Septiembre de 2012 Trabajo Práctico - Septiembre de 2012 INSTRUCCIONES El trabajo práctico debe realizarse de manera individual. No debe realizarse en grupo. Se penalizará cualquier uso compartido de las soluciones propuestas

Más detalles

Uso de recursos compartidos

Uso de recursos compartidos Uso de recursos compartidos Cada proceso o hebra se ejecuta de forma independiente. Sin embargo, cuando varias hebras (o procesos) han de acceder a un mismo recurso, se ha de coordinar el acceso a ese

Más detalles

Prácticas de Sistemas Operativos

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, Francisco Javier Cuberos y Sergio Segura Boletín 6: Semáforos

Más detalles

Creación De Scripts Ejecutables

Creación De Scripts Ejecutables Creación De Scripts Ejecutables Este manual se hace con la finalidad de dar una explicación paso a paso de cómo crear scripts que pueden ejecutar diversas tareas de acuerdo al contenido del texto del guión.

Más detalles

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2 Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2 Contenidos: 1. Definición de clases 2. Implementación de los métodos 3. Constructores y destructores 4. Objetos

Más detalles

Concurrencia de Procesos

Concurrencia de Procesos Concurrencia de Procesos Dos o mas procesos, se dice que son concurrentes o paralelos, cuando se ejecutan al mismo tiempo. Esta concurrencia puede darse en un sistema con un solo procesador (pseudo paralelismo)

Más detalles

Teoría de Sistemas Operativos Sincronización Procesos

Teoría de Sistemas Operativos Sincronización Procesos Teoría de Sistemas Operativos Sincronización Procesos Departamento de Electrónica º Semestre, 00 Gabriel Astudillo Muñoz http://www.elo.utfsm.cl/~elo1 Dos o más procesos leen o escriben ciertas zonas compartidas

Más detalles

funciones printf scanf

funciones printf scanf FUNCIONES EN C FUNCIONES Los módulos en C se llaman funciones. Hemos estado utilizando funciones de la biblioteca estandar stdio.h como por ejemplo printf y scanf. Comenzaremos viendo algunas funciones

Más detalles

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido

Más detalles

directamente indirectamente

directamente indirectamente PUNTEROS EN C PUNTEROS Permiten simular el pasaje de parámetros por referencia. Permiten crear y manipular estructuras de datos dinámicas. Su manejo es de fundamental importancia para poder programar en

Más detalles

UNIVERSIDAD AUTÓNOMA DE CHIAPAS PROGRAMA DE ESTÍMULOS AL DESEMPEÑO DEL PERSONAL DOCENTE MANUAL DE USUARIO

UNIVERSIDAD AUTÓNOMA DE CHIAPAS PROGRAMA DE ESTÍMULOS AL DESEMPEÑO DEL PERSONAL DOCENTE MANUAL DE USUARIO UNIVERSIDAD AUTÓNOMA DE CHIAPAS PROGRAMA DE ESTÍMULOS AL DESEMPEÑO DEL PERSONAL DOCENTE 2017-2018 MANUAL DE USUARIO ACCESO AL SISTEMA 1- Manual de usuario: Mostrará una descripción general para el uso

Más detalles

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada.

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada. Arquitectura de sistemas Abelardo Pardo University of Sydney School of Electrical and Information Engineering NSW, 00, Australia Autor principal del curso de 00 a 0 Iria Estévez Ayres Damaris Fuentes Lorenzo

Más detalles

Tipos Recursivos de Datos

Tipos Recursivos de Datos 1/1 Tipos Recursivos de Datos Josefina Sierra Santibáñez 27 de noviembre de 2016 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones),

Más detalles

Tema 18: Memoria dinámica y su uso en C

Tema 18: Memoria dinámica y su uso en C Tema 18: Memoria dinámica y su uso en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1

Más detalles

ESTRUCTURA DE DATOS Y DE LA INFORMACIÓN II

ESTRUCTURA DE DATOS Y DE LA INFORMACIÓN II ESTRUCTURA DE DATOS Y DE LA INFORMACIÓN II PRÁCTICA 2: GRAFOS grupo comienzo entrega 1a miércoles 3/3 miércoles 14/4 1b jueves 4/3 jueves 15/4 1c lunes 8/3 lunes 12/4 2a viernes 5/3 viernes 9/4 2b lunes

Más detalles

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

$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,

Más detalles

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso 2016-2017. 1º Grado en Informática Práctica 1: Punteros Objetivos Se hará hincapié en la aritmética de punteros

Más detalles

Tema 3. Aplicaciones de Tipo Consola

Tema 3. Aplicaciones de Tipo Consola Tema 3. Aplicaciones de Tipo Consola Una aplicación de consola es aquella que se ejecuta dentro de una ventana de línea de comandos. Este tipo de ventana recibe diferentes denominaciones: Símbolo del sistema,

Más detalles

Indique la veracidad o falsedad de cada una de las afirmaciones siguientes, explicando detalladamente en cada caso el motivo de su respuesta.

Indique la veracidad o falsedad de cada una de las afirmaciones siguientes, explicando detalladamente en cada caso el motivo de su respuesta. LENGUAJES DE PROGRAMACIÓN INSTRUCCIONES Por favor, entregue esta primera hoja de enunciado junto con el examen. Dispone de 2 horas para realizar el examen. MATERIAL PERMITIDO: Ninguno. Pregunta 1 (3 puntos)

Más detalles

Introducción a Sistemas Operativos: Concurrencia

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

Más detalles

Datos Elementales y formato de un programa en Java

Datos Elementales y formato de un programa en Java Datos Elementales y formato de un programa en Java PROGRAMACION I Grado en Matematicas Informática Programación I - 2015/2016 Datos, variables y mi primer programa 1 Introducción a la programación o Programa:

Más detalles

Ejercicios - Intents y navegación entre actividades

Ejercicios - Intents y navegación entre actividades Ejercicios - Intents y navegación entre actividades Índice 1 Intents implícitos (0.8 puntos)...2 2 Intents explícitos (0.8 puntos)... 3 3 Navegación (0.8 puntos)...4 4 Actividades en diferentes tareas

Más detalles

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada.

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada. Arquitectura de sistemas Abelardo Pardo University of Sydney School of Electrical and Information Engineering NSW, 2006, Australia Autor principal del curso de 2009 a 2012 Iria Estévez Ayres Damaris Fuentes

Más detalles

Prácticas de Sistemas Operativos

Prácticas de Sistemas Operativos Prácticas de Sistemas Operativos Juan Antonio Álvarez, Toñi Reina, David Ruiz, Antonio Tallón, Pablo Neira, José Ángel Bernal y Sergio Segura Boletín 6: Semáforos Curso 2006/07 Índice 1. Introducción 2

Más detalles

INSTITUTO ELECTORAL DEL ESTADO DE MÉXICO SECRETARÍA EJECUTIVA UNIDAD DE INFORMÁTICA Y ESTADÍSTICA

INSTITUTO ELECTORAL DEL ESTADO DE MÉXICO SECRETARÍA EJECUTIVA UNIDAD DE INFORMÁTICA Y ESTADÍSTICA INSTITUTO ELECTORAL DEL ESTADO DE MÉXICO SECRETARÍA EJECUTIVA UNIDAD DE INFORMÁTICA Y ESTADÍSTICA Guía de uso del Correo Electrónico Institucional Outlook Web App. Noviembre de 2014 Correo Electrónico

Más detalles

Unidad III: Introducción a la Programación

Unidad III: Introducción a la Programación Unidad III: Introducción a la Programación 3.1 Características del lenguaje de programación Un lenguaje de programación es un idioma artificial diseñado para expresar procesos que pueden ser llevadas a

Más detalles

Para C un chero no es más que una porción de almacenamiento

Para C un chero no es más que una porción de almacenamiento Ficheros en C Para C un chero no es más que una porción de almacenamiento de memoria. C representa un chero como una estructura, de hecho el chero stdio.h contiene la dención de un chero como si fuese

Más detalles

Herramienta Foro de Discusión

Herramienta Foro de Discusión Herramienta Foro de Discusión Este documento contiene los pasos a seguir para administrar la herramienta Foro CREAR CONFIGURAR GUARDAR Referirse a un elemento de esta herramienta, es referirse a un foro

Más detalles

Concurrencia. Programación Concurrente. Espera ocupada. Primitivas IPC con bloqueo

Concurrencia. Programación Concurrente. Espera ocupada. Primitivas IPC con bloqueo Concurrencia Programación Concurrente Espera ocupada. Primitivas IPC con bloqueo Programación concurrente Los lenguajes concurrentes tienen elementos para: Crear procesos Sincronizar procesos Comunicar

Más detalles

Punteros y Memoria Dinámica I

Punteros y Memoria Dinámica I Memoria Punteros y Memoria Dinámica I Curso INEM. Programación en C++ Santiago Muelas Pascual smuelas@fi.upm.es! Lugar donde almacenan los datos y las instrucciones! Compuesta de un gran número de bytes!

Más detalles

DILVE. Extracciones en formato SINLI. v1. r2, 02/2009

DILVE. Extracciones en formato SINLI. v1. r2, 02/2009 DILVE Extracciones en formato SINLI v1. r2, 02/2009 Febrero 2009 DILVE es una iniciativa de libro-es.com promovida por Federación de Gremios de Editores de España y la Fundación Germán Sánchez Ruipérez,

Más detalles

Práctica 1: Intérprete de mandatos. Sistemas Operativos Área de Arquitectura y Tecnología de Computadores

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

Más detalles