Resuelva con una orden UNIX las siguientes tareas:

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

Download "Resuelva con una orden UNIX las siguientes tareas:"

Transcripción

1 Examen de Laboratorio de Sistemas Operativos. Convocatoria Diciembre. Curso 2008/09. Tercero Ingeniería Informática Nombre: Apellidos: 25 de Noviembre de 2009 [Cuestión 1.] Resuelva con una orden UNIX las siguientes tareas: Apartado a.- Cree un fichero, señales.txt, con un listado de todas las señales disponibles en el sistema y almacénelo en su directorio HOME. kill l > $HOME/señales.txt Apartado b.- Copie todos las entradas terminadas en.c de su directorio HOME y el fichero ls situado en /bin al directorio temporal del sitema. cp $HOME/*.c /bin/ls /tmp Apartado c.- Cree un listado numerado con todos los procesos lanzados por el administrador del sistema y añádalo al final del fichero procesos.txt situado en /tmp. ps u root cat b >> /tmp/procesos.txt Apartado d.- Asuma que ha generado un fichero ejecutable, prog, y lo ha almacenado en /tmp. Realice la modificación necesaria para poder invocar al programa desde el intérprete de comandos sin necesidad de indicar la ruta en la que se encuentra el ejecutable. Es decir, la siguiente llamada debería resultar en la ejecución satisfactoria del programa: murillo>prog PATH=$PATH:/tmp/ Puntuación: 2 ptos. Tiempo estimado: 10 min.

2

3 Examen de Laboratorio de Sistemas Operativos. Convocatoria Diciembre. Curso 2008/09. Tercero Ingeniería Informática Nombre: Apellidos: 25 de Noviembre de 2009 [Cuestión 2.] Realizar un programa en C, executor, que recorra un directorio de forma recursiva. Para cada fichero regular que encuentre deberá comprobar si tiene permiso de lectura y ejecución para el propietario. En tal caso, deberá ejecutarlo y enviar la salida del mismo al final del fichero de texto cuya ruta se proporcionará como segundo argumento. El prototipo de la llamada al programa es: murillo> executor <ruta_directorio> <ruta_fichero_salida> La siguiente figura muestra un ejemplo del programa en ejecución: murillo>executor./test salida.txt./test/dir1/holamundo1 ejecutado./test/dir2/dir3/holamundo2 ejecutado murillo>cat salida.txt Salida de./test/dir1/holamundo1: Hola mundo 1 Salida de./test/dir2/dir3/holamundo2: Hola mundo 2 Ejemplo de uso del programa executor. NOTAS: No se permite el uso de la llamada system. Recuerde tratar los errores convenientemente. Puntuación: 2 ptos. Tiempo estimado: 30 min. Solución #include <stdio.h> #include <stdlib.h> #include <sys/file.h> #include <sys/types.h> #include <sys/stat.h> #include <dirent.h> #include <unistd.h> #include <string.h> #include <fcntl.h> #define LONG 256 int recorrer_directorio(char *ruta_dir, char *ruta_fichero_salida); void ejecutar(char *ruta_ejecutable, char *ruta_fichero_salida); int main(int argc, char *argv[]) if (argc!=3) fprintf(stderr,"uso: %s <ruta_dir><ruta_fich>\n", argv[0]); /* Imprimir el directorio */ if (recorrer_directorio(argv[1],argv[2]) == -1) fprintf(stderr,"ocurrio un error al imprimir el directorio\n"); return EXIT_FAILURE; return 0; int recorrer_directorio(char *ruta_dir, char *ruta_fichero_salida) struct dirent *d;

4 struct stat buf; DIR *dir; char archivo[long]; int i,status; pid_t childpid; /* Abrir directorio */ if ((dir=opendir(ruta_dir))==null) fprintf(stderr, "Error al abrir el directorio: %s\n", ruta_dir); return -1; while ((d=readdir(dir))!=null) if (strcmp(d->d_name,".")!=0 && strcmp(d->d_name, "..")!=0) /* Obtenemos la ruta del archivo actual */ sprintf(archivo,"%s/%s",ruta_dir,d->d_name); if (stat(archivo, &buf)==-1) fprintf(stderr, "Error al hacer stat sobre %s\n", archivo); return -1; if ((buf.st_mode & S_IFREG) && (buf.st_mode & S_IEXEC)) ejecutar(archivo,ruta_fichero_salida); printf("%s ejecutado\n", archivo); else if (buf.st_mode & S_IFDIR) recorrer_directorio(archivo,ruta_fichero_salida); /* Cerrar directorio */ closedir(dir); return 0; void ejecutar(char *ruta_ejecutable, char *ruta_fichero_salida) long childpid; int fd = open(ruta_fichero_salida, O_CREAT O_APPEND O_WRONLY, 0700); if (fd==-1) perror("error al crear el fichero destino"); if ((childpid=fork())==-1) perror("error al crear el proceso hijo"); if (childpid==0) /* Proceso Hijo */ dup2(fd,stdout_fileno); execlp(ruta_ejecutable,ruta_ejecutable,0); perror("error en el exec");

5 Examen de Laboratorio de Sistemas Operativos. Convocatoria Diciembre. Curso 2008/09. Tercero Ingeniería Informática Nombre: Apellidos: 25 de Noviembre de 2009 [Cuestión 3.] Se desea resolver, haciendo uso de semáforos, el problema del barbero dormilón. Tenemos un barbero y varios clientes (no existe relación filial entre dichos procesos). Dado que el número de clientes va cambiando, para almacenar dicho valor se utilizará un fichero denominado nclientesesperando.txt, accesible tanto para el barbero como para cada uno de los clientes. Hay una silla de peluquero y N sillas de espera para que se sienten los clientes que están esperando. Se tienen que tener en cuenta los siguientes aspectos de sincronización: a) Si no hay clientes, el barbero se sienta en su silla de peluquero y se va a dormir. b) El barbero se despertará cuando llegue un cliente. c) Si llegan más clientes mientras el barbero corta el pelo a un cliente, se sientan en el caso de que haya sillas de espera libres, o en caso contrario se van. Para la lectura y escritura en ficheros a bajo nivel se pueden emplear las siguientes funciones ya implementadas: int escribir (char *ruta, char *cadena); en caso de éxito devuelve 0 y en caso contrario -1. int leer (char *ruta, char *cadena_leida); en caso de éxito devuelve 0 y en caso contrario -1. Lee todo el contenido del fichero indicado; considere que como máximo tendrá 255 caracteres. La implementación se ha modularizado de la siguiente manera: - Un proceso barbero que será el que se encargue de ir atendiendo a cada uno de los clientes. El número de sillas de espera, N, tomará el valor 5 (#define N 5). Considere que el tiempo de cada corte de pelo es de 5 segundos. El barbero en cada ejecución realizará 20 iteraciones. - Una serie de procesos clientes, que se encargarán de ir leyendo el contenido del fichero para determinar cuantos clientes hay esperando y por tanto el número de sillas de espera ocupadas, y en caso de ser posible irán tomando asiento. Para mayor facilidad de ejecución cada proceso cliente llevará a cabo 3 iteraciones. - Un proceso iniciador que será el encargado de la inicialización de los semáforos y de la creación del fichero ESPERANDO. Por tanto, debe implementar tres programas (iniciador, barbero y cliente). En primer lugar se lanzará el proceso iniciador. Y a continuación el barbero o los clientes (el orden no influye en la sincronización); si lanzamos el barbero, deberá esperar a que lleguen clientes. Si lanzamos antes el cliente, éste deberá esperar al barbero. NOTAS: Es necesario hacer uso de la librería de semáforos empleada en el laboratorio. Debe respetar su sintaxis. No debe preocuparse de codificar la destrucción de los semáforos, dado que existe un manejador de señal, llamado Terminador. Lo único que tendrá que hacer será instalarlo adecuadamente en el programa barbero. No se permite el uso de variables compartidas. Si lo desea puede definir una constante para el fichero de la siguiente forma: #define ESPERANDO./nClientesEsperando.txt. Puntuación: 3 ptos. Tiempo estimado: 40 min. Solucion: // iniciador.h #include "../Semaph.h" #define ESPERANDO "./nclientesesperando.txt" #define SILLAS 5 Semaph excmut, clientes, barbero;

6 void Iniciador(void); void Terminador(int); // iniciador.c #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include "../Semaph.h" #include "iniciador.h" int main () Iniciador(); escribir(esperando,"0"); return 0; void Iniciador(void) excmut = Semaph_Create("excmut",1); barbero = Semaph_Create("barbero",0); clientes = Semaph_Create("clientes",0); // barbero.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #include "../Semaph.h" #include "iniciador.h" int main(void) extern Semaph excmut, clientes, barbero; int nclientesesperando; char cadena[255]; int i; if (signal(sigint,terminador)!= SIG_ERR) Iniciador(); for(i=0;i<20;i++) printf("\n[barbero, PID:%d]: \t \t ESPERANDO A QUE LLEGUEN CLIENTES A LA BARBERIA\n", getpid()); Semaph_Down(clientes); Semaph_Down(excmut); // Acceso exclusivo al contador de clientes esperando (almacenado en el Fichero) if (leer(esperando, cadena)!=-1) nclientesesperando=atoi(cadena); nclientesesperando=nclientesesperando-1; printf("[barbero, PID:%d]: \t nclientesesperando=%d\n", getpid(),nclientesesperando); sprintf (cadena, "%d", nclientesesperando); escribir(esperando,cadena); Semaph_Up(barbero); Semaph_Up(excmut); printf("[barbero, PID:%d]: \t Estoy cortandole el pelo a un cliente. nclientesesperando=%d\n", getpid(),nclientesesperando); sleep (5); else printf ("Error al leer el número de clientes"); Semaph_Up(excmut); exit(-1);

7 Examen de Laboratorio de Sistemas Operativos. Convocatoria Diciembre. Curso 2008/09. Tercero Ingeniería Informática Nombre: Apellidos: 25 de Noviembre de 2009 return 0; // cliente.c #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include "../Semaph.h" #include "iniciador.h" int main(void) extern Semaph excmut, clientes, barbero; int nclientesesperando; char cadena[255]; int i; Iniciador(); for(i=0;i<3;i++) Semaph_Down(excmut); // Acceso exclusivo al FICHERO if (leer(esperando, cadena)!=-1) nclientesesperando=atoi(cadena); if (nclientesesperando < SILLAS) nclientesesperando=nclientesesperando+1; printf("\n[cliente PID: %d]: \n \t nclientesesperando=%d\n", getpid(),nclientesesperando); sprintf (cadena, "%d", nclientesesperando); escribir(esperando,cadena); Semaph_Up(clientes); Semaph_Up(excmut); printf("[cliente PID: %d]: Estoy esperando recibir el corte de pelo. nclientesesperando=%d\n", getpid(),nclientesesperando); Semaph_Down(barbero); printf("[cliente PID: %d]: Ya he recibido el corte de pelo. ABANDONO la BARBERIA. nclientesesperando=%d\n", getpid(), nclientesesperando); else printf("[cliente PID: %d]: NO HAY SILLAS LIBRES. Vuelvo otro dia. nclientesesperando=%d\n", getpid(), nclientesesperando); Semaph_Up(excmut); else printf ("Error al leer el número de clientes"); Semaph_Up(excmut); return 0;

8

9 Examen de Laboratorio de Sistemas Operativos. Convocatoria Diciembre. Curso 2008/09. Tercero Ingeniería Informática Nombre: Apellidos: 25 de Noviembre de 2009 [Cuestión 4.] Se desea implementar un cliente y un servidor de archivos concurrente que trabajen en modo conectado y que puedan funcionar a través de internet. La implementación del servidor constará de las siguientes funciones: int crear_conexion_servidor (int puerto) Esta función realiza las siguientes acciones: o Crea el socket que se empleará como socket de escucha. o Une el socket a la dirección IP de la máquina en la que se ejecuta el código y al puerto indicado como parámetro de entrada. o Asigna el tamaño de la cola de espera de acuerdo al valor de la constante TAM_COLA. En caso de error, la función devuelve -1. int aceptar_conexion(int socket_escucha) Toma como argumento el descriptor del socket de escucha y devuelve el descriptor del socket conectado correspondiente a la última conexión. En caso de error, devuelve -1; int procesar_conexion(int sock_conectado) Tomo como parámetro de entrada el descriptor de un socket conectado y procesa la conexión de forma adecuada en función de las órdenes introducidas por el cliente. Si todo va bien devuelve 0, en caso contrario -1. Una vez el servidor se encuentre en funcionamiento, esté deberá enviar a los clientes la información que éstos soliciten a través de órdenes específicas. En la versión actual del servidor, las órdenes disponibles son: RENAME <nombre_fichero> <nuevo_nombre_fichero>: Al recibir esta orden el servidor renombrará el fichero cuyo nombre se recibe como primer parámetro con el nombre indicado como segundo parámetro. Se asume que el fichero a renombrar se encuentra en el directorio raíz de servidor. Una vez renombrado el fichero, el servidor enviará al cliente la cadena <FIN>. La siguiente figura muestra un ejemplo del programa servidor y cliente en ejecución: murillo>servidor ===== SERVIDOR DE FICHEROS ====== Servidor murillo Puerto: ================================= ================================= Cliente: Puerto cliente: Numero de conexiones actuales: 1 ================================= Servidor a la espera de recibir ordenes... Orden "LS" recibida Orden "RENAME" recibida Orden "LS" recibida murillo>cliente murillo Escriba la orden que desee enviar al servidor: ls Boletin1.pdf Boletin2.pdf <FIN> Escriba la orden que desee enviar al servidor: RENAME Boletin1.pdf Boletin1-renamed.pdf Fichero Boletin1.pdf renombrado a Boletin1-renamed.pdf<FIN> Escriba la orden que desee enviar al servidor: ls Boletin1-renamed.pdf Boletin2.pdf <FIN> Figura 1. Ejemplo del programa en ejecución Se pide: Apartado a). Implemente la función main del servidor (1 punto). Apartado b). Implemente la función procesar_conexión del servidor incluyendo el código necesario para dar soporte a la órden RENAME. Utilice para ello alguna de las variantes de las llamadas exec. (2 puntos) Suponga implementada la siguiente función: void dividir_cadena(char * cadena, char*subcadenas[]): Divide la cadena introducida como primer parámetro utilizando el espacio en blanco como delimitador. El resultado lo almacena en el array de cadenas introducido como segundo parámetro.

10 NOTAS: Asuma definida la constante DIR_SERV que apunta al directorio raíz del servidor de ficheros. Implemente tantas funciones auxiliares como considere necesarias. No se permite el uso de la llamada system. Puntuación: 3 ptos. Tiempo estimado: 40 min Solución. Apartado a) int main(int argc, char * argv[]) int socket_escucha, socket_conexion, puerto, status; pid_t childpid; if (argc!= 2) fprintf(stderr, "Uso: %s <puerto>\n", argv[0]); if (signal (SIGCHLD, manejadorsigchld) == SIG_ERR) perror ("Error asignando manejador sigchild\n"); exit (EXIT_FAILURE); /* Almacenamos el puerto en una variable de tipo entero */ sscanf(argv[1],"%d", &puerto); /* Creamos un socket de escucha en el puerto dado */ socket_escucha = crear_conexion_servidor(puerto); if (socket_escucha==-1) fprintf(stderr,"error al crear el socket de escucha\n"); exit (EXIT_FAILURE); /* Comenzamos a aceptar peticiones */ while (1) socket_conexion = aceptar_conexion(socket_escucha); if ((childpid = fork())<0) perror("error al hacer fork."); if (childpid == 0) /* Proceso Hijo */ close (socket_escucha); if (procesar_conexion(socket_conexion)==-1) fprintf(stderr,"error al procesar la conexion\n"); exit (EXIT_FAILURE); close(socket_conexion); exit(0); else /* Proceso Padre */ close(socket_conexion); Apartado b)

11 Examen de Laboratorio de Sistemas Operativos. Convocatoria Diciembre. Curso 2008/09. Tercero Ingeniería Informática Nombre: Apellidos: 25 de Noviembre de 2009 /* Comuniación con el cliente */ int procesar_conexion(int socket_conexion) char mensaje[tam]; char ruta[tam]; char *cadenas[tam]; char *comando; int n_bytes=0; int i,fin=0; printf("servidor a la espera de recibir órdenes...\n"); while(!fin) for(i=0;i<tam;i++) mensaje[i]=0; n_bytes=recv(socket_conexion,mensaje, sizeof(mensaje),0); if (n_bytes < 0) fprintf(stderr,"error en recv\n"); return -1; dividir_cadena(mensaje,cadenas); // Almacenamos el nombre del comando comando = cadenas[0]; printf("cadena leida %s\n", comando); // Fin? if (strcmp(comando,"bye")==0) fin=1; // Opcion ls else if (strcmp(comando,"ls")==0) printf("orden \"LS\" recibida\n"); mostrar_listado(socket_conexion); // Option rename else if (strcmp(comando,"rename")==0) renombrar(socket_conexion,cadenas[1],cadenas[2]); return 0; else // Orden no valida printf("orden no valida: %s\n", mensaje); enviar_mensaje("orden no valida!\n", socket_conexion); / Renombra el nombre de un fichero en el servidor

12 void renombrar(int socket_conexion, char *nombre_fichero, char *nuevo_nombre) long childpid; char ruta_fichero_original[tam], nueva_ruta[tam], mensaje[tam]; childpid=fork(); if (childpid==-1) // Error fprintf(stderr,"renombrar: Error al hacer fork\n"); else if (childpid==0) // Proceso hijo sprintf(ruta_fichero_original,"%s/%s", DIR_SERV, nombre_fichero); sprintf(nueva_ruta,"%s/%s", DIR_SERV, nuevo_nombre); execlp("mv","mv",ruta_fichero_original,nueva_ruta,0); fprintf(stderr,"error en exec: %s\n", strerror(errno)); else // Proceso padre //fflush(stdout); while(wait(null)!=-1); sleep(1); sprintf(mensaje,"fichero %s renombrado a %s", nombre_fichero, nuevo_nombre); send(socket_conexion,mensaje,strlen(mensaje),0); send(socket_conexion,"<fin>\n",6,0);

Apartado a.- Obtenga un listado de todos los ficheros regulares del sistema terminados en.y ó.c, con permiso de lectura para el grupo.

Apartado a.- Obtenga un listado de todos los ficheros regulares del sistema terminados en.y ó.c, con permiso de lectura para el grupo. Examen de Sistemas Operativos (Parte práctica). Primera Convocatoria. Curso 2008/09. Tercero Ingeniería Técnica Informática Nombre: Gestión Sistemas Apellidos: 5 de Febrero de 2009 [Cuestión 1.] Resuelva

Más detalles

Examen de Laboratorio de Sistemas Operativos. Primera Convocatoria. 2007/2008. Tercero Ingeniería Informática. Apellidos: 18 de Junio de 2008

Examen de Laboratorio de Sistemas Operativos. Primera Convocatoria. 2007/2008. Tercero Ingeniería Informática. Apellidos: 18 de Junio de 2008 [Cuestión 1.] Resuelva con una línea de comandos UNIX las siguientes tareas: Apartado a.- Compile y enlace en una única instrucción los archivos de código C principal.c, funciones.c y procesos.c. Como

Más detalles

[Cuestión 1.]Resuelva con una orden UNIX las siguientes tareas:

[Cuestión 1.]Resuelva con una orden UNIX las siguientes tareas: [Cuestión 1.]Resuelva con una orden UNIX las siguientes tareas: Apartado a.- Copie todas las rutas de los directorios donde el intérprete de comandos busca los programas ejecutables al final del fichero

Más detalles

Funciones POSIX (I): Introducción

Funciones POSIX (I): Introducción Funciones POSIX I Funciones POSIX I Llamadas al Llamadas al Sistema Sistema Gestión Básica Gestión Básica de Procesos de Procesos Procesos Procesos fork fork Señales Señales getpid getpid Memoria Memoria

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

Redirecciones y Tuberías

Redirecciones y Tuberías Redirecciones y Tuberías Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Redirecciones Redirección de la entrada y la salida estándar Unix/Linux definen

Más detalles

Biblioteca de sistema

Biblioteca de sistema * Para la realización del presente examen se aconseja un tiempo de 2 horas. Teoría 1. Explique en detalle cómo se pasa una llamada al sistema operativo. El sistema operativo se activa cuando debe responder

Más detalles

Boletín 3- Archivos. Departamento de Lenguajes y Sistemas Informáticos

Boletín 3- Archivos. Departamento de Lenguajes y Sistemas Informáticos Boletín 3- Archivos Departamento de Lenguajes y Sistemas Informáticos Indice 1. Introducción al acceso a Archivos 1. Acceso a archivos en alto nivel 2. Acceso a archivos en bajo nivel 2. El acceso a los

Más detalles

Formatos para prácticas de laboratorio

Formatos para prácticas de laboratorio CARRERA PLAN DE ESTUDIO CLAVE ASIGNATURA NOMBRE DE LA ASIGNATURA IC 2003-1 5314 Sistemas Operativos PRÁCTICA No. 6 LABORATORIO DE NOMBRE DE LA PRÁCTICA Comunicación entre procesos Tuberías DURACIÓN (HORA)

Más detalles

MC Hilda Castillo Zacatelco PROCESOS

MC Hilda Castillo Zacatelco PROCESOS MC Hilda Castillo Zacatelco hildacz@gmail.com PROCESOS Definición y atributos Un proceso es la instancia de un programa en ejecución. Desde el punto de vista del SO, un proceso es la entidad más pequeña

Más detalles

Redes de Computadores Nivel de Aplicación: Programación con sockets 3

Redes de Computadores Nivel de Aplicación: Programación con sockets 3 Redes de Computadores Nivel de Aplicación: Programación con sockets 3 Área de Ingeniería Telemática Dpto. Automática y Computación http://www.tlm.unavarra.es/ En clases anteriores... Clientes y servidores

Más detalles

Llamadas al Sistema para la Creación de Procesos

Llamadas al Sistema para la Creación de Procesos Llamadas al Sistema para la Creación de Procesos Transparencias realizadas por M. Curiel. Se utiliza material ya publicado en la WEB y elaborado por todos los prof. que hemos dado el curso. Llamada al

Más detalles

Sistemas Operativos sesión 12: tuberías

Sistemas Operativos sesión 12: tuberías Sistemas Operativos sesión : tuberías Grado en Ingeniería Informática Universidad Carlos III de Madrid Agenda Linux Comunicación con tuberías Ejercicios Agenda Linux Comunicación con tuberías Ejercicios

Más detalles

Ejercicio Sockets Suma Resta. Descripción

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

Más detalles

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

Más detalles

Boletín 4- Procesos. Departamento de Lenguajes y Sistemas Informáticos

Boletín 4- Procesos. Departamento de Lenguajes y Sistemas Informáticos Boletín 4- Procesos Departamento de Lenguajes y Sistemas Informáticos Indice 1. Introducción (Procesos) 2. Identificadores de usuarios y procesos 3. La llamada fork() 4. Las llamadas wait() y exit() 5.

Más detalles

Boletín 4- Procesos. Departamento de Lenguajes y Sistemas Informáticos

Boletín 4- Procesos. Departamento de Lenguajes y Sistemas Informáticos Boletín 4- Procesos Departamento de Lenguajes y Sistemas Indice 1. Introducción n (Procesos) 2. Identificadores de usuarios y procesos 3. La llamada fork() 4. Las llamadas wait() y exit() 5. La llamada

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

Aplicación Multiproceso sobre HTTP Ejemplo -

Aplicación Multiproceso sobre HTTP Ejemplo - LABORATORIO DE SISTEMAS OPERATIVOS (Curso 2013/2014) PRÁCTICA 3 Aplicación Multiproceso sobre HTTP Ejemplo - Objetivos del documento Este documento presenta un ejemplo, en el contexto de desarrollo planteado

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

Clases 04 y 05: Repaso de programación de sistemas basados en UNIX

Clases 04 y 05: Repaso de programación de sistemas basados en UNIX Clases 04 y 05: Repaso de programación de sistemas basados en UNIX Prof. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco efranco.docencia@gmail.com Estructuras de datos (Prof.

Más detalles

Introducción y Gestión de Procesos

Introducción y Gestión de Procesos Introducción y Gestión de Procesos Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Llamadas al sistema Concepto Constituye el juego de instrucciones del sistema operativo

Más detalles

Apellidos: Nombre: Matrícula: Examen Programación para Sistemas Grado en Ingeniería Informática (2009)

Apellidos: Nombre: Matrícula: Examen Programación para Sistemas Grado en Ingeniería Informática (2009) Examen 105000016 - Programación para Sistemas Grado en Ingeniería Informática (2009) Lenguajes y Sistemas Informáticos e Ingeniería de Software Facultad de Informática Universidad Politécnica de Madrid

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

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

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, Sergio Segura y José Ángel Bernal Boletín 4: Procesos Curso

Más detalles

Bloque I: Principios de sistemas operativos

Bloque I: Principios de sistemas operativos Bloque I: Principios de sistemas operativos Tema 1. Principios básicos de los sistemas operativos Tema 2. Concurrencia Tema 3. Ficheros Tema 4. Sincronización y programación dirigida por eventos Tema 5.

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 Segunda Semana: Procesos, Procesos Padre y Procesos Hijo, familia exec() 1 Entregas

Más detalles

Sistemas Operativos. Grado Ingeniería Informática. TGR Procesos.

Sistemas Operativos. Grado Ingeniería Informática. TGR Procesos. Sistemas Operativos. Grado Ingeniería Informática. TGR Procesos. 1.-Considerar los siguientes procesos con los tiempos de llegadas, prioridades y ráfagas de cpu. Proceso Ráfaga de CPU Prioridad Tiempo

Más detalles

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

Sistemas Operativos: Programación de Sistemas. Curso 2006-07. Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Tema 2 : entorno programación linux Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Francisco J. Santana 1 Programación

Más detalles

Enunciado 2 Descifrar claves cifradas con crypt

Enunciado 2 Descifrar claves cifradas con crypt Enunciado 2 Descifrar claves cifradas con crypt INDICE 1 Definición del problema...1 2 Solución secuencial...1 3 Tabla de tiempos...3 4 Para saber más...3 5 Listado de programas...3 5.1 cifrado.h...4 5.2

Más detalles

Prueba de Laboratorio Modelo B01 Semáforos y Memoria Compartida

Prueba de Laboratorio Modelo B01 Semáforos y Memoria Compartida Prueba de Laboratorio APELLIDOS: NOMBRE: GRUPO DE LABORATORIO: Indicaciones: No se permiten libros, apuntes ni teléfonos móviles. Cuando tenga una solución al ejercicio muéstrela al profesor (compilación

Más detalles

Sockets: funcionamiento y programación. Sockets tipo UNIX. MSc. Ivan A. Escobar

Sockets: funcionamiento y programación. Sockets tipo UNIX. MSc. Ivan A. Escobar Sockets tipo UNIX MSc. Ivan A. Escobar Creación socket: socket() int socket(familia, tipo, protocolo) Regresa un valor entero Parecido descriptor de archivos: descriptor socket sockfd int familia familia

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

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

Más detalles

sockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM)

sockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM) s s Comunicación punto-a-punto entre procesos Los s son los extremos de la comunicación Diferentes dominios UNIX: Entre procesos de un mismo equipo Internet: Entre procesos de diferentes equipos (TCP/IP)

Más detalles

Concurrencia en UNIX / LINUX. Introducción: Procesos e Hilos POSIX

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

Más detalles

Área de Arquitectura y Tecnología de Computadores. Universidad Carlos III de Madrid SISTEMAS OPERATIVOS. Ejercicio. Programación en bash

Área de Arquitectura y Tecnología de Computadores. Universidad Carlos III de Madrid SISTEMAS OPERATIVOS. Ejercicio. Programación en bash Área de Arquitectura y Tecnología de Computares Universidad Carlos III de Madrid SISTEMAS OPERATIVOS Ejercicio. Programación en bash Gra de Ingeniería en Informática Curso 2016/2017 AUTORES (Nombre, Apellis,

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

Práctica 1 Programación de Aplicaciones Distribuidas: Sockets UDP. Laboratorio de Comunicación de Datos ITT Telemática Septiembre 2011

Práctica 1 Programación de Aplicaciones Distribuidas: Sockets UDP. Laboratorio de Comunicación de Datos ITT Telemática Septiembre 2011 Práctica 1 Programación de Aplicaciones Distribuidas: Sockets UDP Laboratorio de Comunicación de Datos ITT Telemática Septiembre 2011 Introducción Aplicaciones Distribuidas Su funcionalidad se distribuye

Más detalles

Escuela Politécnica Superior de Elche

Escuela Politécnica Superior de Elche EXAMEN DE SISTEMAS INFORMÁTICOS INDUSTRIALES ((SOLUCIÓN) (TEORÍA)jUJ jhshshs SEPTIEMBRE 2015 1. Indicar si las siguientes afirmaciones son verdaderas o falsas: (a) En C++, una clase derivada puede acceder

Más detalles

Primer control de teoría

Primer control de teoría rimer control de teoría Ejercicio : reguntas cortas ( puntos) Tiempo estimado 5 min.. En un sistema actual de propósito general, las direcciones (funciones, referencias a datos, etc) que encontramos en

Más detalles

Llamadas al sistema básicas de control de procesos

Llamadas al sistema básicas de control de procesos Actividad 7 (v. 16046) Pablo González Nalda Depto. de Lenguajes y Sistemas Informáticos lsi.vc.ehu.es/pablogn Llamadas al sistema básicas de control de procesos Observa, analiza y prueba los programas:

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

Plataformas de Tiempo Real

Plataformas de Tiempo Real Master en Computación Plataformas de Tiempo Real POSIX Avanzado y Extensiones Tema 2. Gestión de Interrupciones en MaRTE OS Tema 3. Monitorización y control del tiempo de ejecución Tema 4. Planificación

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 Tercera Semana: Comunicación entre procesos con Tuberías 1 Entregas 2 Introducción

Más detalles

Examen Final de Teoría. Grupo de teoría:

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

Más detalles

Ficheros y Directorios

Ficheros y Directorios Ficheros y Directorios Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Archivos Archivos UNIX Abstracción de datos que representa un espacio de almacenamiento,

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

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas.

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas. Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas. Febrero 2016 [Curso de programación en C] - Archivos & Cadenas 1/17 Archivos

Más detalles

Introducción a Sistemas Operativos: Comunicación entre Procesos

Introducción a Sistemas Operativos: Comunicación entre Procesos Introducción a Sistemas Operativos: Comunicación entre Procesos Clips xxx Fr ancisco J Ballesteros 1. Pipefroms Otra función de utilidad realiza el trabajo inverso, permite leer la salida de un comando

Más detalles

Ejercicios de la sesión 4 de C resueltos

Ejercicios de la sesión 4 de C resueltos Ejercicios de la sesión 4 de C resueltos 1. Usando el procedimiento del ejercicio 2 del seminario anterior, escribe un programa que multiplique dos matrices A y B leídas de ficheros, la primera de tamaño

Más detalles

Apellidos: Nombre: DNI: Parte Sistema Ficheros (Se deben contestar correctamente todas las cuestiones de cada pregunta para puntuar la misma).

Apellidos: Nombre: DNI: Parte Sistema Ficheros (Se deben contestar correctamente todas las cuestiones de cada pregunta para puntuar la misma). Apellidos: Nombre: DNI: Sistemas Operativos Grado Ingeniera Informática UDC. Julio 2016 Sólo puede usar lápiz, bolígrafo y calculadora. Tiempo máximo para todo el examen: 3h Parte Sistema Ficheros (Se

Más detalles

SCHOOL OF HACKING 2015 RETO BUFFER OVERFLOW

SCHOOL OF HACKING 2015 RETO BUFFER OVERFLOW SCHOOL OF HACKING 2015 RETO BUFFER OVERFLOW INSTRUCCIONES Para la resolución del reto habrá que tener una máquina física o virtual Linux instalada al menos con las siguientes características: - Compilador

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

Taller de Sistemas Operativos Introducción

Taller de Sistemas Operativos Introducción Taller de Sistemas Operativos Introducción Escuela de Ingeniería Civil en Informática Universidad de Valparaíso, Chile http:// Conceptos generales 2 Proceso stdin Descriptor Flujo (FILE*) 0 stdout 1 Proceso

Más detalles

Problemas de Redes de Computadores. Conjunto de problemas 1

Problemas de Redes de Computadores. Conjunto de problemas 1 Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1 Pregunta 1.1: Si configuro mi servidor Web para que no acepte conexiones desde la dirección IP 130.206.1.1,

Más detalles

Examen Teórico (1/3 de la nota final)

Examen Teórico (1/3 de la nota final) Examen Teórico (1/3 de la nota final) 105000016 - Programación para Sistemas Grado en Ingeniería Informática (2009) Lenguajes y Sistemas Informáticos e Ingeniería de Software Facultad de Informática Universidad

Más detalles

Nombre y apellidos: DNI: 1

Nombre y apellidos: DNI: 1 R E R B 1 R E R 1 R R P Nombre y apellidos: DNI: 1 Examen de Redes de Computadores. Ingeniería Técnica en Informática de Gestión eptiembre de 28 Número de identificación del examen: examid Duración: 2

Más detalles

Sistemas Operativos I Manual de prácticas

Sistemas Operativos I Manual de prácticas Sistemas Operativos I Manual de prácticas Grupo de Sistemas Operativos (DSIC/DISCA) Práctica 3: Procesos POSIX ANTES DE EMPEZAR...... 2 PRÁCTICA 3: PROCESOS POSIX... 2 CREACIÓN DE PROCESOS MEDIANTE FORK...

Más detalles

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

- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño?

- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño? Sistemas Operativos. Grado Ingeniería Informática. TGR-2.1 Procesos. Noviembre 2014 Problemas para hacer en clase FIFO cpu C A 1. Dos procesos A y B tienen una ráfaga de CPU de 50 ms y un proceso C tiene

Más detalles

Herramientas Visuales de Compilación en C. LUIS MENGUAL (c)

Herramientas Visuales de Compilación en C. LUIS MENGUAL (c) Herramientas Visuales de Compilación en C Visual Studio 2005 (I) Herramienta para implementar, ejecutar y compilar código fuente en distintos lenguajes Entorno visual amigable y flexible Entorno de Depuración

Más detalles

Examen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16

Examen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16 Problema 1: [1 punto] Examen Fundamentos de Programación 15 de enero de 2016 Curso 2015/16 Duración: 2,45 horas 10 PUNTOS Publicación de notas 26 de enero Revisión de examen 1 de febrero En el horario

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

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

Más detalles

PROTOCOLOS PARA LA INTERCONEXIÓN DE REDES

PROTOCOLOS PARA LA INTERCONEXIÓN DE REDES UNIVERSIDAD DE CANTABRIA DEPARTAMENTO DE INGENIERÍA DE COMUNICACIONES GRUPO DE INGENIERÍA TELEMÁTICA PROTOCOLOS PARA LA INTERCONEXIÓN DE REDES PRÁCTICA 4: DESARROLLO DE APLICACIONES CLIENTE/SERVIDOR MEDIANTE

Más detalles

Un ejemplo: UNIX PROCESOS UNIX

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

Más detalles

Primer parcial de teoría 2013_2014_Q1

Primer parcial de teoría 2013_2014_Q1 Preguntas cortas (2,5 puntos) (justifica todas las respuestas) 1. Si tenemos una nueva arquitectura, con un nuevo conjunto de instrucciones de lenguaje máquina, indica cuál de estas dos librerías deberíamos

Más detalles

Herramientas Visuales de Compilación en C. LUIS MENGUAL (c)

Herramientas Visuales de Compilación en C. LUIS MENGUAL (c) Herramientas Visuales de Compilación en C Visual Studio 2010 (I) Herramienta para implementar, ejecutar y compilar código fuente en distintos lenguajes Entorno visual amigable y flexible Entorno de Depuración

Más detalles

Herramient tas Vi Visuales de l d Compilación en C LUIS MENGUAL (c)

Herramient tas Vi Visuales de l d Compilación en C LUIS MENGUAL (c) Herramientas Visuales de Compilación en C Visual Studio 2005 (I) Herramienta para implementar, ejecutar y compilar código fuente en distintos lenguajes Entorno visual amigable y flexible Entorno de Depuración

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

LABORATORIO DE GESTIÓN DE REDES (I)

LABORATORIO DE GESTIÓN DE REDES (I) UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE GESTIÓN DE REDES (I) 1. PRESENTACIÓN El laboratorio de Gestión de Redes constará de un conjunto de prácticas

Más detalles

Índice. Estructuras de datos en Memoria Principal: Vectores. Matrices. Cadenas de caracteres. Estructuras. Estructuras de datos en Memoria Externa:

Índice. Estructuras de datos en Memoria Principal: Vectores. Matrices. Cadenas de caracteres. Estructuras. Estructuras de datos en Memoria Externa: Índice Estructuras de datos en Memoria Principal: Vectores Matrices Cadenas de caracteres Estructuras Estructuras de datos en Memoria Externa: Ficheros Tema: Estructuras de Datos 2 Cadenas de caracteres

Más detalles

PRÁCTICA 1: PROCESOS Y COMUNICACIÓN ENTRE PROCESOS

PRÁCTICA 1: PROCESOS Y COMUNICACIÓN ENTRE PROCESOS PRÁCTICA 1: PROCESOS Y COMUNICACIÓN ENTRE PROCESOS v1.3.0 Rodrigo García Carmona Antes de empezar la práctica, copia los ficheros que se encuentran en la carpeta SOS-Practica_1-Materiales al directorio

Más detalles

Examen Final de SO Grau

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

Más detalles

ASIGNATURA: SISTEMAS INFORMÁTICOS INDUSTRIALES. CURSO 4º GRUPO Octubre 2015

ASIGNATURA: SISTEMAS INFORMÁTICOS INDUSTRIALES. CURSO 4º GRUPO Octubre 2015 2. Problema de Análisis y Diseño Orientado a Objetos (10 puntos - 20 minutos) Para el código de test adjunto, se pide. 1. Diagrama de clases de diseño (2.5 puntos). 2. Implementación en C++ de la solución

Más detalles

Sistemas Operativos 1

Sistemas Operativos 1 Ejercicio 1. Se desea implementar una aplicación de n procesos concurrentes, donde cada proceso ejecuta una determinada tarea en forma de pipeline. Un ejemplo de esta aplicación con n=4 sería la siguiente:

Más detalles

Archivos en lenguaje C

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,

Más detalles

Apellidos: Nombre: DNI:

Apellidos: Nombre: DNI: Apellidos: Nombre: DNI: Sistemas Operativos Grado Ingeniera Informática UDC. Enero 2018 Sólo puede usar lápiz, bolígrafo y calculadora. Smartphones apagados y en la mochila. Tiempo máximo para todo el

Más detalles

Introducción a C. Grupo de Sistemas y Comunicaciones. Febrero 2008 C 1. Programación imperativa estructurada.

Introducción a C. Grupo de Sistemas y Comunicaciones. Febrero 2008 C 1. Programación imperativa estructurada. Grupo de Sistemas y Comunicaciones gsyc-profes@gsyc.es Febrero 2008 C 1 C Características: Programación imperativa estructurada. Relativamente de bajo nivel. Lenguaje simple, la funcionalidad está en las

Más detalles

1000+(4/100)*1000 =1000 * (1+4/100) =1000 * 1.04 = Al finalizar el segundo año, el 4% se aplica sobre los 1040, y obtenemos:

1000+(4/100)*1000 =1000 * (1+4/100) =1000 * 1.04 = Al finalizar el segundo año, el 4% se aplica sobre los 1040, y obtenemos: Nombre: Apellidos: Grupo: Nº. Matrícula Ejercicio 1 (2,5 puntos 30 minutos) Al ingresar capital en un banco, pongamos 1000, éste nos ofrece un porcentaje anual de interés, por ejemplo el 4%. Al cabo de

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

parametros.c ATC Distribuidas 1

parametros.c ATC Distribuidas 1 parametros.c 1 // Acceso a los parametros suministrados desde linea de comandos 2 #include 3 4 int main(int argc, char *argv[]) 5 { 6 int i; 7 8 printf("se han recibido %d parámetros.\n", argc);

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

Examen escrito de Programación 1

Examen escrito de Programación 1 Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 7 de septiembre de 2017 Se debe disponer sobre la mesa en lugar visible un documento

Más detalles

Tema 4: Gestión de Procesos

Tema 4: Gestión de Procesos Tema 4: Gestión de Procesos SSOO - Curso 2005/06 E. Domínguez C. Villarrubia Departamento de Tecnologías y Sistemas de Información Escuela Superior de Informática Universidad de Castilla - La Mancha Marzo

Más detalles

Segundo control de teoría

Segundo control de teoría Preguntas cortas. Contesta y justifica TODAS las preguntas en el espacio asignado (0,5 cada pregunta) a) Qué consecuencias tendría en la cantidad de accesos a disco eliminar la Tabla de Inodos? b) Qué

Más detalles

Sistemas Operativos Práctica 3

Sistemas Operativos Práctica 3 Sistemas Operativos Práctica 3 Ing. Andrés Bustamante afbustamanteg@unal.edu.co Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que

Más detalles

Programación I Teoría : Entrada/Salida - Archivos.

Programación I Teoría : Entrada/Salida - Archivos. Programación I Teoría : Entrada/Salida - Archivos http://proguno.unsl.edu.ar proguno@unsl.edu.ar Entrada/Salida Interacción del programa con su ambiente para leer (entrada) y escribir (salida) datos. 2

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN. 1º ING. INFORMÁTICA (Plan 2000) 1ª Convocatoria. 21 de Enero de 2002

FUNDAMENTOS DE PROGRAMACIÓN. 1º ING. INFORMÁTICA (Plan 2000) 1ª Convocatoria. 21 de Enero de 2002 FUNDAMENTOS DE PROGRAMACIÓN. 1º ING. INFORMÁTICA (Plan 2000) 1ª Convocatoria. 21 de Enero de 2002 NORMAS DE EXAMEN: Notas inferiores a 3.5 en este ejercicio implican suspender la asignatura (en primera

Más detalles

Estructuración del programa en partes más pequeñas y sencillas

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

Más detalles

Programación I Funciones

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

Más detalles

Esquema de un programa en C: bloques básicos

Esquema de un programa en C: bloques básicos Esquema de un programa en C: bloques básicos // Incluimos los ficheros de cabecera que necesitemos. // Esto es un comentario #include #include // Si queremos definir alguna constante,

Más detalles

Arquitectura de Computadores. Práctica 3: Mecanismos de comunicación entre procesos

Arquitectura de Computadores. Práctica 3: Mecanismos de comunicación entre procesos - 1 - Arquitectura de Computadores Práctica 3: Mecanismos de comunicación entre procesos Miguel Martínez de Falcón Pérez Mikel Anthony Rodríguez Manderson - 2-1) TUBERÍAS SIN NOMBRE a) Para comprobar su

Más detalles

Examen Teórico (1/3 de la nota final)

Examen Teórico (1/3 de la nota final) Examen Teórico (1/3 de la nota final) 105000016 - Programación para Sistemas Grado en Ingeniería Informática (2009) Lenguajes y Sistemas Informáticos e Ingeniería de Software Facultad de Informática Universidad

Más detalles

PRÁCTICAS SISTEMAS OPERATIVOS 2 Enxeñería Técnica en Informática de Xestión Curso

PRÁCTICAS SISTEMAS OPERATIVOS 2 Enxeñería Técnica en Informática de Xestión Curso PRÁCTICAS SISTEMAS OPERATIVOS 2 Enxeñería Técnica en Informática de Xestión Curso 2011-2012 Se deben desarrollar los siguientes ejecutables, codificados en lenguaje C, haciendo uso de las llamadas al sistema

Más detalles