Prácticas de Sistemas Operativos

Documentos relacionados
Concurrencia. Primitivas IPC con bloqueo

Acceso coordinado a recursos compartidos

Sistemas Distribuidos de Tiempo Real

07 Variables. 7.1 Variables globales Definición

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

Ejercicios de C. 1. Estructura de un programa. Objetivos: Practicar con el editor - usar el editor emacs emacs nombre.c

Gestión de procesos en Linux

Creación de Shell Scripts

Programación Concurrente y Paralela. Unidad 1 Introducción

Índice. agradecimientos... 13

EJERCICIOS MANEJO DE ESTRUCTURAS BÁSICAS SCRIPTS

Mª DOLORES CARBALLAR FALCÓN L

Práctica 1: (Tema 2) Instalación de MaRTE OS

Parte I: Programación en Ada

DISPONE DE 50 MINUTOS PARA REALIZAR EL EJERCICIO

Nombre del estudiante: Gustavo Antonio González Morales. Nombre del trabajo: Tarea 2. Investigación sobre Paginación y Segmentacion.

LABORATORIO 4: CONCURRENCIA Juan Antonio de la Puente - 21/10/15

Tema 2: Programas y procesos

Planificaciones Sistemas Operativos. Docente responsable: MENDEZ MARIANO. 1 de 6

Planificaciones Sistemas Operativos. Docente responsable: MENDEZ MARIANO. 1 de 6

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

Convivencia Gestión de Procesos

ARQUITECTURA DE COMPUTADORES

Arquitecturas cliente/servidor

Manual de instalación de Desktop v.2.2.0

INDICE Parte 1. Visual Basic Capitulo 1. Qué es Visual Basic? Capitulo 22. Mi Primera Aplicación Capitulo 3. Elementos del lenguaje

Creación De Scripts Ejecutables

6. Enumere tres ventajas de los ULT frente a los KLT.

SISTEMAS EN TIEMPO REAL

AUTOMATIZACIÓN INDUSTRIAL

dit Programación concurrente Sincronización condicional UPM

Proceso. Threads, SMP, and Microkernels. Multithreading. Proceso

Programación Concurrente

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

Práctica 5: Implementación en C++ de sistemas cliente/servidor basados en comunicación

TRABAJANDO CON ARCHIVOS Y DIRECTORIOS. Sistemas Operativos 3 Wandirys Lappost Díaz

Sistemas Operativos II Junio 2006 Nombre:

SISTEMAS OPERATIVOS II Tercer curso Ingeniería Informática. Curso

1. Por qué decimos que "Linux" es solamente el kernel del sistema operativo que utilizamos?

Manuel Arenaz.

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

Programación Concurrente Recopilación de teoría referente a la materia

Contenido 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS PROCESOS Prólogo...

Equipamiento ADSL» Inalámbrico. Adaptador USB PAUTAS PARA LA VERIFICACION TCP/IP

Cena de filosofos y sincronizacion java

Planificación con prioridades

Práctica 4 Concurrencia en Java

Preguntas de autoevaluación tema 3

dit Planificación de tareas de tiempo real Juan Antonio de la Puente DIT/UPM UPM Copyright 2007, Juan Antonio de la Puente

Procesos (Sistemas informáticos multiusuario y en red) ÍNDICE

Secure shell, también llamado ssh es un protocolo utilizado paro login y ejecución de procesos remotos.

Concurrencia Condiciones de Carrera. Guillermo Román Díez

INFORME MEMORIA CACHE Y MEMORIA VIRTUAL.

Prácticas de Fundamentos del Software

COMPILACIÓN Y DISCOS DE DISTRIBUCIÓN DE UNA APLICACIÓN

Shell Script de instalación y configuración para el servicio DHCP en CentOS v5.x. Manual de instrucciones.

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

Excepciones e hilos. Acceso a la red - Ejercicios

BUAP FACULTAD DE CIENCIAS DE LA COMPUTACIÓN SISTEMAS OPERATIVOS 2 PRACTICA 2 JAIME MORALES FLORES

Guillermo Román Díez

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

Concurrencia Monitores. Guillermo Román Díez

Arquitecturas de Computadores. 4 Sistemas Combinacionales y Secuenciales Prof. Javier Cañas R.

SISTEMAS OPERATIVOS: SISTEMAS DE FICHEROS. Ficheros

Ejercicios sobre tuberías

Interbloqueo. Concurrencia: Interbloqueo e Inanición

HISTORIA DE C Creado entre 1972 por Brian Kernighan y Dennis Ritchie para escribir el código del sistema operativo UNIX. A mediados de los ochenta se

CIERRE 2011-APERTURA 2012 EN EUROWIN

Sistema de Ficheros, Permisos de archivos y Propietarios de los Mismos. (ubuntu 10.10)

Tecnología de software para sistemas de tiempo real

PRÁCTICA 01 GESTIÓN DE ARCHIVOS Y DE PERMISOS EN LINUX

INSTITUTO TECNOLÓGICO SUPERIOR DE SAN MARTÍN TEXMELUCAN INGENIERÍA EN SISTEMAS COMPUTACIONALES. Sistemas Distribuidos

Taller de Sistemas Operativos. Procesos 2012

Proceso Prioridad inicial Duración CPU (M) Duración E/S (N) A 0 10 mseg 1 mseg. B 5 5 mseg 5 mseg. C 10 1 mseg 10 mseg

TEMA 6: Manejo de archivos, permisos y navegación en GNU/LINUX.

1. INTRODUCCIÓN 1.1. Qué es un sistema operativo? El sistema operativo como máquina extendida El sistema operativo como gestor de

CLASE 12 CURVAS Y SUPERFICIES PARAMÉTRICAS 3D

Concurrencia de Procesos

Cuestionario 1-Parte 1

100 ejercicios básicos sobre Linux

LINUX - El intérprete de órdenes I

HP - UX. Qué es HP UX?

Sincronizador de Información Táctica

VARIABLES LOCALES Y VARIABLES GLOBALES

Unidad 1: Gestión de Procesos

Sistemas Operativos (Parte 2)

LABORATORIO DE AMPLIACIÓN DE SISTEMAS OPERATIVOS MINIX SOBRE VIRTUALBOX

Transcripción:

Prácticas de Sistemas Operativos GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 1 Práctica 1 Gestión de procesos y threads Objetivos: Practicar la gestión de procesos y threads concurrentes Desarrollar un programa que cree varios procesos concurrentes, que escriban periódicamente mensajes diferentes en la pantalla Hacer lo mismo con threads periódicos. Pasar a cada thread como parámetros el periodo y el mensaje a escribir. Los threads se crearán en estado "independiente" GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 2

Práctica 2 Ficheros Objetivos Hacer operaciones simples con ficheros, usando las llamadas al sistema operativo Descripción Escribir un programa que copie los contenidos de un fichero en otro. Se pasarán los nombres como argumentos al programa. Modificarlo para que ponga el estado del fichero generado según los parámetros de entrada que se le pasen los permisos del usuario (rwx) Asimismo, deberá presentar información del estado de los ficheros (original y copia) en pantalla (fechas, tamaño, etc.) GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 3 GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 4

Práctica 3 Objetivos Practicar con la sincronización de acceso mutuamente exclusivo. Descripción Escribir un programa con tres threads que se sincronicen para acceder de manera mutuamente exclusiva a un conjunto de datos que representan las coordenadas x,y,z de un cuerpo en el espacio Uno de los threads deberá modificar los datos de manera periódica según las siguientes ecuaciones (una recta): x = x + 01 y = 3x + 8 z = 4x 2y + 3 GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 5 Práctica 3 (cont.) Otro thread consulta esa información y muestra x,y,z y también (y-3x), que debe ser 8 Otro thread consulta esa información y muestra x,y,z y también (z-4x+2y), que debe ser 3 Para la protección de los datos se usará un mutex. El programa se ejecutará con y sin protección, y así podrá observarse la inconsistencia del conjunto de datos cuando no hay protección Puede utilizarse el "come tiempos" que se encuentra en los ficheros load.c y load.h disponibles en el servidor. Cópialos en tu directorio de trabajo. GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 6

Práctica 4 Practicar con la sincronización de espera. Escribir un programa con un thread productor de datos y un thread consumidor de estos datos. Los datos serán strings. Tanto el productor como el consumidor tendrán tiempos de ejecución aleatorios dentro de un rango (usar load.h) Utilizarán una variable compartida para la comunicación - contiene un string - y un booleano que dice si hay un dato válido o no Utilizarán un mutex para acceder a la variable GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 7 Práctica 4 (cont.) Utilizarán dos variables condicionales. - Una para que el productor espere cuando la variable compartida está ocupada - Otra para que el consumidor espere cuando la variable compartida está vacía. Una vez realizado el programa, jugar con él variando los rangos de los tiempos; practicar con un productor muy rápido o muy lento, consumidores iguales, o uno más lento, o más rápido, etc. GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 8

Práctica 5 Practicar con la recepción y tratamiento de señales para notificar eventos Escribir un programa que responda a todas las señales desde un thread que actúa como manejador de señal, poniendo un mensaje en la pantalla que indique qué señal se recibió. El programa principal se queda dormido. Probar el programa enviándole señales desde una shell (con la orden kill -num_señal pid) Nota: Según la versión de Linux se pueden crear (incorrectamente) varios procesos si hay manejadores de señal. GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 9 GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 10

Práctica 6 Averiguar qué tipo de planificación por omisión utilizan los threads Escribir un programa que cree dos threads periódicos concurrentes. A cada thread se le pasará como parámetro: - periodo - tiempo de ejecución - número de identificación Para hacer threads periódicos se usará la función clock_nanosleep() - inicialmente se pueden hacer pseudo-periódicos con sleep() GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 11 Práctica 6 (cont.) Para simular el tiempo de ejecución se usa la función eat() suministrada Cada décima de segundo de tiempo de ejecución consumido se pondrá un mensaje en la pantalla con el identificador del thread También se pondrán mensajes al inicio y final del periodo A partir de la secuencia de ejecución dibujar un diagrama temporal de la ejecución Tratar de inferir a partir del diagrama el tipo de planificación (expulsora o no; cíclica, FIFO,...); probar con dos combinaciones diferentes de periodos y tiempos de ejecución GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 12

Práctica 6 (cont.) Compilar y ejecutar el programa desarrollado para Linux en el sistema operativo MaRTE OS sobre máquina desnuda: Hacer las mismas pruebas que en el caso anterior Para ello: Ajustar la variable PATH ejecutando -. /usr/local/marte-1.9/martevars.sh Compilar el programa con mgcc Copiar el programa en el servidor - cp el_programa /net/lctrserver/mprogram_hostname Encender el computador (PC industrial) GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 13 GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 14

Práctica 7 Observar el fenómeno de la inversión de prioridad e implementar un mecanismo para evitarla. Escribir un programa que cree varios threads periódicos planificados por prioridades fijas, y que se sincronizan para utilizar un recurso compartido. Inicialmente se protegerá este recurso compartido por medio de un mutex convencional. Los threads calcularán sus tiempos de respuesta de peor caso y cada vez que se produzca un tiempo peor lo pintarán en la pantalla. GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 15 Práctica 7 (cont.) Eligiendo de manera adecuada los tiempos de ejecución y el instante de comienzo de cada tarea se podrá observar el fenómeno de la inversión de prioridad no acotada, por el que una tarea de alta prioridad tiene que esperar a la finalización de una tarea de baja prioridad. A continuación se modificará el programa anterior que sufría inversión de prioridad para evitarla por medio del uso de un mutex: - Usar el protocolo de protección de prioridad. - Observar cómo la inversión de prioridad se minimiza, y el thread de alta prioridad tiene un tiempo de respuesta mucho menor. Comprobar el comportamiento en MaRTE OS GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 16

Práctica 8 Escribir un script sencillo Escribir un script para ser ejecutado por una shell: - que permita cambiar de nombre a todos los ficheros de un directorio añadiéndoles a todos una extensión - la extensión y el nombre del directorio serán parámetros que se pasen al script Probarlo creando un directorio de prueba con varios ficheros GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 17 Práctica 8 (cont.) Escribir un segundo script que invoque al primero para todos los directorios contenidos en el directorio de trabajo - Este segundo script tendrá un único argumento: la extensión a añadir al nombre de cada fichero Probarlo creando un directorio de prueba con varios directorios, que a su vez tengan varios ficheros GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 18